From e97653827a1e2c7d1c467b22b2489aba20978040 Mon Sep 17 00:00:00 2001 From: Quoc Truong Date: Tue, 14 Apr 2015 13:51:18 -0700 Subject: [PATCH] Change the interface to ICustomAstVisitor instead of ICustomAstVisitor2 for ScriptAnalysis --- Engine/Helper.cs | 89 ++++++++++++++---------------------------------- 1 file changed, 26 insertions(+), 63 deletions(-) diff --git a/Engine/Helper.cs b/Engine/Helper.cs index e5fc141b6..c436d3f28 100644 --- a/Engine/Helper.cs +++ b/Engine/Helper.cs @@ -637,7 +637,7 @@ public int Compare(Tuple t1, Tuple t2) /// /// Class used to do variable analysis on the whole script /// - public class ScriptAnalysis: ICustomAstVisitor2 + public class ScriptAnalysis: ICustomAstVisitor { private VariableAnalysis OuterAnalysis; @@ -696,77 +696,40 @@ public object VisitScriptBlock(ScriptBlockAst scriptBlockAst) } /// - /// Do nothing - /// - /// - /// - public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) - { - return null; - } - - /// - /// Do nothing + /// perform special visiting action if statement is a typedefinitionast /// - /// + /// /// - public object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst) + private object VisitStatementHelper(StatementAst statementAst) { - return null; - } + if (statementAst == null) + { + return null; + } - /// - /// Do nothing - /// - /// - /// - public object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst) - { - return null; - } + TypeDefinitionAst typeAst = statementAst as TypeDefinitionAst; - /// - /// Set outer analysis before further visiting. - /// - /// - /// - public object VisitFunctionMember(FunctionMemberAst functionMemberAst) - { - var previousOuter = OuterAnalysis; - OuterAnalysis = Helper.Instance.InitializeVariableAnalysisHelper(functionMemberAst, OuterAnalysis); - - if (functionMemberAst != null) + if (typeAst == null) { - functionMemberAst.Body.Visit(this); + statementAst.Visit(this); + return null; } - OuterAnalysis = previousOuter; + foreach (var member in typeAst.Members) + { + FunctionMemberAst functionMemberAst = member as FunctionMemberAst; - return null; - } + if (functionMemberAst != null) + { + var previousOuter = OuterAnalysis; + OuterAnalysis = Helper.Instance.InitializeVariableAnalysisHelper(functionMemberAst, OuterAnalysis); - /// - /// Do nothing - /// - /// - /// - public object VisitPropertyMember(PropertyMemberAst propertyMemberAst) - { - return null; - } + if (functionMemberAst != null) + { + functionMemberAst.Body.Visit(this); + } - /// - /// Visit the functions defined in class - /// - /// - /// - public object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) - { - if (typeDefinitionAst != null) - { - foreach (var member in typeDefinitionAst.Members) - { - member.Visit(this); + OuterAnalysis = previousOuter; } } @@ -1182,7 +1145,7 @@ public object VisitNamedBlock(NamedBlockAst namedBlockAst) { foreach (var statement in namedBlockAst.Statements) { - statement.Visit(this); + VisitStatementHelper(statement); } } @@ -1265,7 +1228,7 @@ public object VisitStatementBlock(StatementBlockAst statementBlockAst) { foreach (var statement in statementBlockAst.Statements) { - statement.Visit(this); + VisitStatementHelper(statement); } }