Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.sun.source.tree.AnnotationTree;
import com.sun.source.tree.AssertTree;
import com.sun.source.tree.AssignmentTree;
import com.sun.source.tree.BindingPatternTree;
import com.sun.source.tree.BlockTree;
import com.sun.source.tree.BreakTree;
import com.sun.source.tree.CaseTree;
Expand Down Expand Up @@ -457,6 +458,16 @@ public Void visitAssert(AssertTree node, Void unused) {
return super.visitAssert(node, null);
}

@Override
public Void visitBindingPattern(BindingPatternTree node, Void unused) {
super.visitBindingPattern(node, unused);
if (!node.getVariable().getName().toString().equals(ANONYMOUS_VARIABLE_NAME)) {
long end = positions.getEndPosition(ast, node);
addToken(JavaTokenType.J_ASSIGN, end, end, new CodeSemantics());
}
return null;
}

@Override
public Void visitVariable(VariableTree node, Void unused) {
if (!node.getName().contentEquals(ANONYMOUS_VARIABLE_NAME)) {
Expand All @@ -478,6 +489,10 @@ public Void visitVariable(VariableTree node, Void unused) {
// manually add variable to semantics since identifier isn't visited
variableRegistry.setNextVariableAccessType(VariableAccessType.WRITE);
variableRegistry.registerVariableAccess(name, !inLocalScope);
if (node.getInitializer() != null) {
long initializerStart = start + node.toString().indexOf('=');
addToken(JavaTokenType.J_ASSIGN, initializerStart, initializerStart + 1, new CodeSemantics());
}
}
return super.visitVariable(node, null);
}
Expand Down
17 changes: 9 additions & 8 deletions languages/java/src/test/java/de/jplag/java/JavaLanguageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,25 +54,26 @@ protected void collectTestData(TestDataCollector collector) {
J_IF_END, J_METHOD_END, J_CLASS_END);

collector.testFile("Verbose.java", "Compact.java").testSourceCoverage().testTokenSequence(J_PACKAGE, J_IMPORT, J_CLASS_BEGIN, J_METHOD_BEGIN,
J_VARDEF, J_VARDEF, J_IF_BEGIN, J_APPLY, J_RETURN, J_IF_END, J_VARDEF, J_LOOP_BEGIN, J_VARDEF, J_APPLY, J_ASSIGN, J_IF_BEGIN, J_APPLY,
J_APPLY, J_ASSIGN, J_IF_END, J_LOOP_END, J_IF_BEGIN, J_APPLY, J_ASSIGN, J_IF_END, J_IF_BEGIN, J_APPLY, J_APPLY, J_ASSIGN, J_IF_END,
J_RETURN, J_METHOD_END, J_CLASS_END);
J_VARDEF, J_VARDEF, J_IF_BEGIN, J_APPLY, J_RETURN, J_IF_END, J_VARDEF, J_ASSIGN, J_LOOP_BEGIN, J_VARDEF, J_ASSIGN, J_APPLY, J_ASSIGN,
J_IF_BEGIN, J_APPLY, J_APPLY, J_ASSIGN, J_IF_END, J_LOOP_END, J_IF_BEGIN, J_APPLY, J_ASSIGN, J_IF_END, J_IF_BEGIN, J_APPLY, J_APPLY,
J_ASSIGN, J_IF_END, J_RETURN, J_METHOD_END, J_CLASS_END);

// Test difference between try block and try-with-resource block.
collector.testFile("Try.java", "TryWithResource.java").testSourceCoverage().testTokenSequence(J_PACKAGE, J_IMPORT, J_IMPORT, J_IMPORT,
J_CLASS_BEGIN, J_METHOD_BEGIN, J_VARDEF, J_APPLY, J_NEWCLASS, J_METHOD_END, J_METHOD_BEGIN, J_VARDEF, J_VARDEF, J_TRY_BEGIN, J_VARDEF,
J_ASSIGN, J_NEWCLASS, J_NEWCLASS, J_LOOP_BEGIN, J_APPLY, J_APPLY, J_APPLY, J_LOOP_END, J_CATCH_BEGIN, J_VARDEF, J_APPLY, J_CATCH_END,
J_FINALLY_BEGIN, J_IF_BEGIN, J_APPLY, J_IF_END, J_FINALLY_END, J_TRY_END, J_METHOD_END, J_CLASS_END);
J_CLASS_BEGIN, J_METHOD_BEGIN, J_VARDEF, J_APPLY, J_NEWCLASS, J_METHOD_END, J_METHOD_BEGIN, J_VARDEF, J_VARDEF, J_ASSIGN, J_TRY_BEGIN,
J_VARDEF, J_ASSIGN, J_ASSIGN, J_NEWCLASS, J_NEWCLASS, J_LOOP_BEGIN, J_APPLY, J_APPLY, J_APPLY, J_LOOP_END, J_CATCH_BEGIN, J_VARDEF,
J_APPLY, J_CATCH_END, J_FINALLY_BEGIN, J_IF_BEGIN, J_APPLY, J_IF_END, J_FINALLY_END, J_TRY_END, J_METHOD_END, J_CLASS_END);

collector.testFile("CLI.java").testSourceCoverage().testContainedTokens(J_TRY_END, J_IMPORT, J_VARDEF, J_LOOP_BEGIN, J_ARRAY_INIT_BEGIN,
J_IF_BEGIN, J_CATCH_END, J_COND, J_ARRAY_INIT_END, J_METHOD_BEGIN, J_TRY_BEGIN, J_CLASS_END, J_RETURN, J_ASSIGN, J_METHOD_END,
J_IF_END, J_CLASS_BEGIN, J_NEWARRAY, J_PACKAGE, J_APPLY, J_LOOP_END, J_THROW, J_NEWCLASS, J_CATCH_BEGIN);

collector.testFile("PatternMatching.java", "PatternMatchingManual.java").testSourceCoverage().testTokenSequence(J_CLASS_BEGIN, J_RECORD_BEGIN,
J_VARDEF, J_RECORD_END, J_METHOD_BEGIN, J_VARDEF, J_NEWCLASS, J_IF_BEGIN, J_VARDEF, J_IF_END, J_METHOD_END, J_CLASS_END);
J_VARDEF, J_RECORD_END, J_METHOD_BEGIN, J_VARDEF, J_ASSIGN, J_NEWCLASS, J_IF_BEGIN, J_VARDEF, J_ASSIGN, J_IF_END, J_METHOD_END,
J_CLASS_END);

collector.testFile("StringConcat.java", "StringTemplate.java").testSourceCoverage().testTokenSequence(J_CLASS_BEGIN, J_METHOD_BEGIN, J_VARDEF,
J_VARDEF, J_VARDEF, J_APPLY, J_METHOD_END, J_CLASS_END);
J_ASSIGN, J_VARDEF, J_ASSIGN, J_VARDEF, J_ASSIGN, J_APPLY, J_METHOD_END, J_CLASS_END);

collector.testFile("AnonymousVariables.java").testTokenSequence(J_CLASS_BEGIN, J_METHOD_BEGIN, J_VARDEF, J_IF_BEGIN, J_IF_END, J_METHOD_END,
J_CLASS_END);
Expand Down
2 changes: 1 addition & 1 deletion languages/java/src/test/resources/de/jplag/java/Try.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public static void main(String[] args) {
public void load(String path) {
Scanner scanner = null;
try {
Scanner other; // This is just here to keep the tokens similar.
Scanner other = null; // This is just here to keep the tokens similar.
scanner = new Scanner(new File(path));
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
Expand Down
Loading