public void 直前の変数定義オブジェクトを取得できる() { var ast = JavaCodeToXml.Instance.Generate( "{ int i; i = 1; }", p => p.block()); var codeObject = JavaProgramGeneratorHelper.CreateBlock(ast); var variable = codeObject.Descendants <UnifiedIdentifier>().Last(); var definition = SemanticAnalyzer.FindDefinition(variable); var expected = codeObject.Descendants <UnifiedVariableDefinition>().First(); Assert.That(definition, Is.EqualTo(expected)); }
public void JavascriptBlockProblem() { var ast = JavaScriptCodeToXml.Instance .Generate( "{ i = 0; var j = 0; j = 1; }", p => p.statementBlock()); var codeObject = JavaScriptProgramGeneratorHelper.CreateStatementBlock(ast); var variable = codeObject.Descendants <UnifiedIdentifier>().Last(); var definition = SemanticAnalyzer.FindDefinition(variable); Assert.That(definition, Is.EqualTo(null)); }
public void 後方の変数定義を無視して変数定義オブジェクトを取得できる() { var ast = JavaCodeToXml.Instance .Generate( "{ j = 0; { j = 1; } int j; }", p => p.block()); var codeObject = JavaProgramGeneratorHelper.CreateBlock(ast); var variable = codeObject.Descendants <UnifiedIdentifier>().ElementAt(1); var definition = SemanticAnalyzer.FindDefinition(variable); Assert.That(definition, Is.EqualTo(null)); }
public void IgnoreSliblingScope() { var ast = JavaCodeToXml.Instance .Generate( "{ {int j = 0;} {j = 1;} }", p => p.block()); var codeObject = JavaProgramGeneratorHelper.CreateBlock(ast); var variable = codeObject.Descendants <UnifiedIdentifier>().ElementAt(2); var definition = SemanticAnalyzer.FindDefinition(variable); Assert.That(definition, Is.EqualTo(null)); }