Java: PrintAst: Fix failing tests

This commit is contained in:
Joe
2020-09-14 12:57:39 +01:00
parent 112b6d28a1
commit 53ab8dac06
17 changed files with 213 additions and 73 deletions

View File

@@ -46,7 +46,7 @@ private class ExprOrStmt extends Element {
}
}
/** Holds if the given element does not need to be rendered in the AST, due to being compiler-generated. */
/** Holds if the given element does not need to be rendered in the AST, due to being compiler-generated. */
private predicate isNotNeeded(Element el) {
exists(InitializerMethod im |
el = im
@@ -58,17 +58,33 @@ private predicate isNotNeeded(Element el) {
)
)
or
exists(Constructor c | c.isDefaultConstructor() |
exists(Constructor c | c.isDefaultConstructor() |
el = c
or
el.(ExprOrStmt).getEnclosingCallable() = c
)
or
exists(Constructor c, int sline, int eline, int scol, int ecol |
el.(ExprOrStmt).getEnclosingCallable() = c
|
el.getLocation().hasLocationInfo(_, sline, eline, scol, ecol) and
c.getLocation().hasLocationInfo(_, sline, eline, scol, ecol)
// simply comparing their getLocation() doesn't work as they have distinct but equivalent locations
)
or
isNotNeeded(el.(Expr).getParent*().(Annotation).getAnnotatedElement())
or
isNotNeeded(el.(Parameter).getCallable())
}
/** Holds if the given field would have the same javadoc and annotations as another field declared in the same declaration */
private predicate duplicateMetadata(Field f) {
exists(FieldDeclaration fd |
f = fd.getAField() and
not f = fd.getField(0)
)
}
/**
* Retrieves the canonical QL class(es) for entity `el`
*/
@@ -97,14 +113,18 @@ private predicate locationSortKeys(Element ast, string file, int line, int colum
*/
private newtype TPrintAstNode =
TElementNode(Element el) { shouldPrint(el, _) } or
TAnnotationsNode(Annotatable ann) { shouldPrint(ann, _) and ann.hasAnnotation() and not partOfAnnotation(ann)} or
TAnnotationsNode(Annotatable ann) {
shouldPrint(ann, _) and ann.hasAnnotation() and not partOfAnnotation(ann)
} or
TParametersNode(Callable c) { shouldPrint(c, _) and not c.hasNoParameters() } or
TBaseTypesNode(ClassOrInterface ty) { shouldPrint(ty, _) } or
TGenericTypeNode(GenericType ty) { shouldPrint(ty, _) } or
TGenericTypeNode(GenericType ty) { shouldPrint(ty, _) } or
TGenericCallableNode(GenericCallable c) { shouldPrint(c, _) } or
TDocumentableNode(Documentable d) { shouldPrint(d, _) and exists(d.getJavadoc()) } or
TJavadocNode(Javadoc jd) { exists(Documentable d | d.getJavadoc() = jd | shouldPrint(d, _)) } or
TJavadocElementNode(JavadocElement jd) { exists(Documentable d | d.getJavadoc() = jd.getParent*() | shouldPrint(d, _)) }
TJavadocElementNode(JavadocElement jd) {
exists(Documentable d | d.getJavadoc() = jd.getParent*() | shouldPrint(d, _))
}
/**
* A node in the output tree.
@@ -201,7 +221,7 @@ abstract class ElementNode extends PrintAstNode, TElementNode {
private predicate partOfAnnotation(Expr e) {
e instanceof Annotation
or
e instanceof ArrayInit and
e instanceof ArrayInit and
partOfAnnotation(e.getParent())
}
@@ -236,11 +256,12 @@ final class ExprStmtNode extends ElementNode {
el = element.(LocalClassDeclStmt).getLocalClass()
or
partOfAnnotation(element) and
el = rank[childIndex](Element ch, string file, int line, int column |
ch = getAnAnnotationChild(element) and locationSortKeys(ch, file, line, column)
|
ch order by file, line, column
)
el =
rank[childIndex](Element ch, string file, int line, int column |
ch = getAnAnnotationChild(element) and locationSortKeys(ch, file, line, column)
|
ch order by file, line, column
)
)
or
exists(Element el | result.(AnnotationsNode).getAnnotated() = el |
@@ -292,7 +313,7 @@ final class ParameterNode extends ElementNode {
result.(AnnotationsNode).getAnnotated() = p
or
childIndex = 0 and
result.(ElementNode).getElement().(Expr).getParent() = p
result.(ElementNode).getElement().(Expr).isNthChildOf(p, -1) // type
}
}
@@ -353,10 +374,10 @@ final class FieldDeclNode extends ElementNode {
override PrintAstNode getChild(int childIndex) {
childIndex = -3 and
result.(DocumentableNode).getDocumentable() = decl.getAField()
result.(DocumentableNode).getDocumentable() = decl.getField(0)
or
childIndex = -2 and
result.(AnnotationsNode).getAnnotated() = decl.getAField()
result.(AnnotationsNode).getAnnotated() = decl.getField(0)
or
childIndex = -1 and
result.(ElementNode).getElement() = decl.getTypeAccess()
@@ -398,7 +419,7 @@ final class ImportNode extends ElementNode {
ImportNode() { element instanceof Import }
}
/**
/**
* A node representing a `TypeVariable`.
*/
final class TypeVariableNode extends ElementNode {
@@ -416,7 +437,9 @@ final class TypeVariableNode extends ElementNode {
final class AnnotationsNode extends PrintAstNode, TAnnotationsNode {
Annotatable ann;
AnnotationsNode() { this = TAnnotationsNode(ann) and not isNotNeeded(ann) }
AnnotationsNode() {
this = TAnnotationsNode(ann) and not isNotNeeded(ann) and not duplicateMetadata(ann)
}
override string toString() { result = "(Annotations)" }
@@ -526,13 +549,13 @@ final class GenericCallableNode extends PrintAstNode, TGenericCallableNode {
}
/**
* A node representing the documentation of a `Documentable`.
* A node representing the documentation of a `Documentable`.
* Only rendered if there is at least one `Javadoc` attatched to it.
*/
final class DocumentableNode extends PrintAstNode, TDocumentableNode {
Documentable d;
DocumentableNode() { this = TDocumentableNode(d) }
DocumentableNode() { this = TDocumentableNode(d) and not duplicateMetadata(d) }
override string toString() { result = "(Javadoc)" }
@@ -542,7 +565,7 @@ final class DocumentableNode extends PrintAstNode, TDocumentableNode {
result.getJavadoc() =
rank[childIndex](Javadoc jd, string file, int line, int column |
jd.getCommentedElement() = d and jd.getLocation().hasLocationInfo(file, line, column, _, _)
|
|
jd order by file, line, column
)
}
@@ -554,7 +577,7 @@ final class DocumentableNode extends PrintAstNode, TDocumentableNode {
}
/**
* A node representing a `Javadoc`.
* A node representing a `Javadoc`.
* Only rendered if it is the javadoc of some `Documentable`.
*/
final class JavadocNode extends PrintAstNode, TJavadocNode {
@@ -576,7 +599,8 @@ final class JavadocNode extends PrintAstNode, TJavadocNode {
Javadoc getJavadoc() { result = jd }
}
/** A node representing a `JavadocElement`.
/**
* A node representing a `JavadocElement`.
* Only rendered if it is part of the javadoc of some `Documentable`.
*/
final class JavadocElementNode extends PrintAstNode, TJavadocElementNode {

View File

@@ -3,7 +3,7 @@ jdk/A.java:
# 3| 1: [Class] A
# 4| 2: [Method] main
# 4| 3: [TypeAccess] void
# 4| 4: (Parameters)
#-----| 4: (Parameters)
# 4| 0: [Parameter] args
# 4| 0: [ArrayTypeAccess] ...[]
# 4| 0: [TypeAccess] String
@@ -11,7 +11,7 @@ jdk/A.java:
# 7| 2: [Class] B
# 8| 2: [Method] main
# 8| 3: [TypeAccess] void
# 8| 4: (Parameters)
#-----| 4: (Parameters)
# 8| 0: [Parameter] args
# 8| 0: [ArrayTypeAccess] ...[]
# 8| 0: [TypeAccess] String
@@ -19,7 +19,7 @@ jdk/A.java:
# 11| 3: [Class] C
# 12| 2: [Method] main
# 12| 3: [TypeAccess] void
# 12| 4: (Parameters)
#-----| 4: (Parameters)
# 12| 0: [Parameter] args
# 12| 0: [ArrayTypeAccess] ...[]
# 12| 0: [TypeAccess] String
@@ -27,7 +27,7 @@ jdk/A.java:
# 15| 4: [Class] D
# 16| 2: [Method] main
# 16| 3: [TypeAccess] int
# 16| 4: (Parameters)
#-----| 4: (Parameters)
# 16| 0: [Parameter] args
# 16| 0: [ArrayTypeAccess] ...[]
# 16| 0: [TypeAccess] String
@@ -37,7 +37,7 @@ jdk/A.java:
# 19| 5: [Class] E
# 20| 2: [Method] main
# 20| 3: [TypeAccess] void
# 20| 4: (Parameters)
#-----| 4: (Parameters)
# 20| 0: [Parameter] argc
# 20| 0: [TypeAccess] int
# 20| 1: [Parameter] args
@@ -47,14 +47,14 @@ jdk/A.java:
# 23| 6: [Class] F
# 24| 2: [Method] main
# 24| 3: [TypeAccess] void
# 24| 4: (Parameters)
#-----| 4: (Parameters)
# 24| 0: [Parameter] arg
# 24| 0: [TypeAccess] String
# 24| 5: [BlockStmt] stmt
# 27| 7: [Class] G
# 28| 2: [Method] main
# 28| 3: [TypeAccess] void
# 28| 4: (Parameters)
#-----| 4: (Parameters)
# 28| 0: [Parameter] args
# 28| 0: [ArrayTypeAccess] ...[]
# 28| 0: [ArrayTypeAccess] ...[]

View File

@@ -13,7 +13,7 @@ arrays/B.java:
# 3| 1: [Class] B
# 4| 2: [Method] m
# 4| 3: [TypeAccess] void
# 4| 4: (Parameters)
#-----| 4: (Parameters)
# 4| 0: [Parameter] a
# 4| 0: [TypeAccess] A
# 4| 5: [BlockStmt] stmt

View File

@@ -1,12 +1,14 @@
Test.java:
# 0| [CompilationUnit] Test
# 5| 1: [Class] Test
# 1| -4: [Javadoc] /** A JavaDoc comment ... */
# 2| 0: [JavadocText] A JavaDoc comment
# 3| 1: [JavadocText] with multiple lines.
#-----| -4: (Javadoc)
# 1| 1: [Javadoc] /** A JavaDoc comment ... */
# 2| 0: [JavadocText] A JavaDoc comment
# 3| 1: [JavadocText] with multiple lines.
# 7| 2: [Method] m
# 6| 0: [Javadoc] /** A JavaDoc comment with a single line. */
# 6| 0: [JavadocText] A JavaDoc comment with a single line.
#-----| 0: (Javadoc)
# 6| 1: [Javadoc] /** A JavaDoc comment with a single line. */
# 6| 0: [JavadocText] A JavaDoc comment with a single line.
# 7| 3: [TypeAccess] void
# 7| 5: [BlockStmt] stmt
# 21| 3: [Method] test
@@ -15,12 +17,14 @@ Test.java:
TestWindows.java:
# 0| [CompilationUnit] TestWindows
# 5| 1: [Class] TestWindows
# 1| -4: [Javadoc] /** A JavaDoc comment ... */
# 2| 0: [JavadocText] A JavaDoc comment
# 3| 1: [JavadocText] with multiple lines.
#-----| -4: (Javadoc)
# 1| 1: [Javadoc] /** A JavaDoc comment ... */
# 2| 0: [JavadocText] A JavaDoc comment
# 3| 1: [JavadocText] with multiple lines.
# 7| 2: [Method] m
# 6| 0: [Javadoc] /** A JavaDoc comment with a single line. */
# 6| 0: [JavadocText] A JavaDoc comment with a single line.
#-----| 0: (Javadoc)
# 6| 1: [Javadoc] /** A JavaDoc comment with a single line. */
# 6| 0: [JavadocText] A JavaDoc comment with a single line.
# 7| 3: [TypeAccess] void
# 7| 5: [BlockStmt] stmt
# 21| 3: [Method] test

View File

@@ -3,7 +3,7 @@ constants/Constants.java:
# 3| 1: [Class] Constants
# 4| 2: [Method] constants
# 4| 3: [TypeAccess] void
# 4| 4: (Parameters)
#-----| 4: (Parameters)
# 4| 0: [Parameter] notConstant
# 4| 0: [TypeAccess] int
# 4| 5: [BlockStmt] stmt
@@ -80,9 +80,6 @@ constants/Initializers.java:
# 8| -1: [TypeAccess] int
# 10| 6: [Constructor] Initializers
# 10| 5: [BlockStmt] stmt
# 10| 0: [SuperConstructorInvocationStmt] super(...)
# 10| 1: [ExprStmt] stmt
# 10| 0: [MethodAccess] <obinit>(...)
# 12| 2: [ExprStmt] stmt
# 12| 0: [AssignExpr] ...=...
# 12| 0: [VarAccess] IFIELD2
@@ -135,14 +132,15 @@ constants/Initializers.java:
constants/Values.java:
# 0| [CompilationUnit] Values
# 4| 1: [Class] Values
# 3| -4: [Javadoc] /** Tests of the getIntValue() predicate */
# 3| 0: [JavadocText] Tests of the getIntValue() predicate
#-----| -4: (Javadoc)
# 3| 1: [Javadoc] /** Tests of the getIntValue() predicate */
# 3| 0: [JavadocText] Tests of the getIntValue() predicate
# 6| 3: [FieldDeclaration] int final_field, ...;
# 6| -1: [TypeAccess] int
# 6| 0: [IntegerLiteral] 42
# 8| 4: [Method] values
# 8| 3: [TypeAccess] void
# 8| 4: (Parameters)
#-----| 4: (Parameters)
# 8| 0: [Parameter] notConstant
# 8| 0: [TypeAccess] int
# 8| 5: [BlockStmt] stmt

View File

@@ -0,0 +1,40 @@
constructors/A.java:
# 0| [CompilationUnit] A
# 3| 1: [Class] A
# 4| 3: [Constructor] A
# 4| 5: [BlockStmt] stmt
# 5| 0: [ThisConstructorInvocationStmt] this(...)
# 5| 0: [IntegerLiteral] 42
# 8| 4: [Constructor] A
#-----| 4: (Parameters)
# 8| 0: [Parameter] i
# 8| 0: [TypeAccess] int
# 8| 5: [BlockStmt] stmt
# 10| 5: [Method] main
# 10| 3: [TypeAccess] void
#-----| 4: (Parameters)
# 10| 0: [Parameter] args
# 10| 0: [ArrayTypeAccess] ...[]
# 10| 0: [TypeAccess] String
# 10| 5: [BlockStmt] stmt
# 11| 0: [ExprStmt] stmt
# 11| 0: [ClassInstanceExpr] new A(...)
# 11| -3: [TypeAccess] A
# 14| 6: [FieldDeclaration] String STATIC, ...;
# 14| -1: [TypeAccess] String
# 14| 0: [StringLiteral] "static string"
# 15| 7: [FieldDeclaration] String INSTANCE, ...;
# 15| -1: [TypeAccess] String
# 15| 0: [StringLiteral] "instance string"
# 17| 8: [BlockStmt] stmt
# 18| 0: [ExprStmt] stmt
# 18| 0: [MethodAccess] println(...)
# 18| -1: [VarAccess] System.out
# 18| -1: [TypeAccess] System
# 18| 0: [StringLiteral] "<obinit>"
# 21| 9: [BlockStmt] stmt
# 22| 0: [ExprStmt] stmt
# 22| 0: [MethodAccess] println(...)
# 22| -1: [VarAccess] System.out
# 22| -1: [TypeAccess] System
# 22| 0: [StringLiteral] "<clinit>"

View File

@@ -18,7 +18,7 @@ dependency/A.java:
# 15| 2: [Class] E
# 16| 2: [Method] m
# 16| 3: [TypeAccess] C
# 16| 4: (Parameters)
#-----| 4: (Parameters)
# 16| 0: [Parameter] f
# 16| 0: [TypeAccess] A<F>
# 16| 0: [TypeAccess] F
@@ -35,7 +35,7 @@ dependency/A.java:
# 27| 0: [TypeVariable] T
# 27| 0: [TypeAccess] String
# 27| 3: [TypeAccess] T
# 27| 4: (Parameters)
#-----| 4: (Parameters)
# 27| 0: [Parameter] t
# 27| 0: [TypeAccess] T
# 27| 5: [BlockStmt] stmt
@@ -43,7 +43,7 @@ dependency/A.java:
# 27| 0: [VarAccess] t
# 28| 3: [Method] test2
# 28| 3: [TypeAccess] void
# 28| 4: (Parameters)
#-----| 4: (Parameters)
# 28| 0: [Parameter] t
# 28| 0: [TypeAccess] Collection<? extends Number>
# 28| 0: [WildcardTypeAccess] ? ...

View File

@@ -0,0 +1,14 @@
fields/FieldTest.java:
# 0| [CompilationUnit] FieldTest
# 3| 1: [Class] FieldTest
# 4| 4: [FieldDeclaration] float ff, ...;
# 4| -1: [TypeAccess] float
# 4| 1: [FloatingPointLiteral] 2.3f
# 5| 5: [FieldDeclaration] Object obj, ...;
# 5| -1: [TypeAccess] Object
# 5| 0: [NullLiteral] null
# 6| 6: [FieldDeclaration] List<> l, ...;
#-----| -2: (Annotations)
# 6| 1: [Annotation] SuppressWarnings
# 6| 1: [StringLiteral] "rawtypes"
# 6| -1: [TypeAccess] List<>

View File

@@ -3,7 +3,7 @@ Test.java:
# 1| 1: [Class] Test
# 2| 2: [Method] foo
# 2| 3: [TypeAccess] void
# 2| 4: (Parameters)
#-----| 4: (Parameters)
# 2| 0: [Parameter] s
# 2| 0: [TypeAccess] String
# 2| 5: [BlockStmt] stmt

View File

@@ -5,7 +5,7 @@ MultiCatch.java:
# 6| 3: [Class] MultiCatch
# 7| 2: [Method] multiCatch
# 7| 3: [TypeAccess] void
# 7| 4: (Parameters)
#-----| 4: (Parameters)
# 7| 0: [Parameter] b
# 7| 0: [TypeAccess] boolean
# 8| 5: [BlockStmt] stmt
@@ -32,7 +32,7 @@ MultiCatch.java:
# 18| 0: [VarAccess] e
# 22| 3: [Method] multiCatch2
# 22| 3: [TypeAccess] void
# 22| 4: (Parameters)
#-----| 4: (Parameters)
# 22| 0: [Parameter] b
# 22| 0: [TypeAccess] boolean
# 22| 1: [Parameter] c

View File

@@ -1,17 +1,20 @@
javadoc/Test.java:
# 0| [CompilationUnit] Test
# 4| 1: [Class] Test
# 3| -4: [Javadoc] /** A test class. */
# 3| 0: [JavadocText] A test class.
#-----| -4: (Javadoc)
# 3| 1: [Javadoc] /** A test class. */
# 3| 0: [JavadocText] A test class.
# 7| 2: [Method] f
# 5| 0: [Javadoc] /** A javadoc ... */
# 5| 0: [JavadocText] A javadoc
# 6| 1: [JavadocText] comment
#-----| 0: (Javadoc)
# 5| 1: [Javadoc] /** A javadoc ... */
# 5| 0: [JavadocText] A javadoc
# 6| 1: [JavadocText] comment
# 7| 3: [TypeAccess] void
# 7| 5: [BlockStmt] stmt
# 11| 3: [Method] g
# 9| 0: [Javadoc] /** Another javadoc comment */
# 9| 0: [JavadocText] Another javadoc comment
#-----| 0: (Javadoc)
# 9| 1: [Javadoc] /** Another javadoc comment */
# 9| 0: [JavadocText] Another javadoc comment
# 11| 3: [TypeAccess] void
# 11| 5: [BlockStmt] stmt
# 14| 4: [FieldDeclaration] int x, ...;
@@ -19,7 +22,8 @@ javadoc/Test.java:
# 15| 5: [FieldDeclaration] int y, ...;
# 15| -1: [TypeAccess] int
# 18| 6: [Method] h
# 17| 0: [Javadoc] /** @deprecated */
# 17| 0: [Javadoc] @deprecated
#-----| 0: (Javadoc)
# 17| 1: [Javadoc] /** @deprecated */
# 17| 0: [Javadoc] @deprecated
# 18| 3: [TypeAccess] void
# 18| 5: [BlockStmt] stmt

View File

@@ -20,7 +20,7 @@ Test.java:
# 4| 0: [ClassInstanceExpr] new (...)
# 4| -4: [AnonymousClass] new NonFinalEnum(...) { ... }
# 4| 2: [Method] toString
# 4| 1: (Annotations)
#-----| 1: (Annotations)
# 4| 1: [Annotation] Override
# 4| 3: [TypeAccess] String
# 4| 5: [BlockStmt] stmt

View File

@@ -30,7 +30,7 @@ class A {
@Ann1(
value="a",
nest={
@Ann2(2),
@Ann2,
@Ann2(7)
})
String doSomethingElse() { return "c"; }

View File

@@ -0,0 +1,56 @@
A.java:
# 0| [CompilationUnit] A
# 8| 1: [Class] A
#-----| -4: (Javadoc)
# 1| 1: [Javadoc] /** Another javadoc */
# 1| 0: [JavadocText] Another javadoc
# 3| 2: [Javadoc] /** A class ... */
# 4| 0: [JavadocText] A class
# 6| 1: [Javadoc] @author
# 6| 0: [JavadocText] someone
# 9| 3: [Interface] Ann1
# 10| 1: [Method] value
# 10| 3: [TypeAccess] String
# 11| 2: [Method] nest
# 11| 3: [ArrayTypeAccess] ...[]
# 11| 0: [TypeAccess] Ann2
# 14| 4: [Interface] Ann2
# 15| 1: [Method] value
# 15| 3: [TypeAccess] int
# 20| 5: [Method] doSomething
#-----| 0: (Javadoc)
# 18| 1: [Javadoc] /** Does something */
# 18| 0: [JavadocText] Does something
#-----| 1: (Annotations)
# 19| 1: [Annotation] Deprecated
# 20| 3: [TypeAccess] int
#-----| 4: (Parameters)
# 20| 0: [Parameter] text
#-----| -1: (Annotations)
# 20| 1: [Annotation] SuppressWarnings
# 20| 1: [StringLiteral] "all"
# 20| 0: [TypeAccess] String
# 20| 5: [BlockStmt] stmt
# 21| 0: [ReturnStmt] stmt
# 21| 0: [IntegerLiteral] 0
# 24| 6: [FieldDeclaration] int counter, ...;
# 24| -1: [TypeAccess] int
# 24| 0: [IntegerLiteral] 1
# 26| 7: [BlockStmt] stmt
# 27| 0: [ExprStmt] stmt
# 27| 0: [AssignExpr] ...=...
# 27| 0: [VarAccess] counter
# 27| 1: [MethodAccess] doSomething(...)
# 27| 0: [StringLiteral] "hi"
# 36| 8: [Method] doSomethingElse
#-----| 1: (Annotations)
# 30| 1: [Annotation] Ann1
# 31| 1: [StringLiteral] "a"
# 32| 2: [ArrayInit] {...}
# 33| 1: [Annotation] Ann2
# 34| 2: [Annotation] Ann2
# 34| 1: [IntegerLiteral] 7
# 36| 3: [TypeAccess] String
# 36| 5: [BlockStmt] stmt
# 36| 0: [ReturnStmt] stmt
# 36| 0: [StringLiteral] "c"

View File

@@ -4,14 +4,14 @@ reflection/ReflectiveAccess.java:
# 5| 2: [Class] ReflectiveAccess
# 6| 2: [Interface] TestAnnotation
# 10| 3: [Class] TestClass
# 10| -3: (Annotations)
#-----| -3: (Annotations)
# 9| 1: [Annotation] TestAnnotation
# 13| 4: [Method] getAnnotation
#-----| 2: (Generic Parameters)
# 13| 0: [TypeVariable] A
# 13| 0: [TypeAccess] Annotation
# 13| 3: [TypeAccess] A
# 13| 4: (Parameters)
#-----| 4: (Parameters)
# 13| 0: [Parameter] classContainingAnnotation
# 13| 0: [TypeAccess] Class<?>
# 13| 0: [WildcardTypeAccess] ? ...
@@ -25,7 +25,7 @@ reflection/ReflectiveAccess.java:
# 14| 0: [VarAccess] annotationClass
# 17| 5: [Method] main
# 17| 3: [TypeAccess] void
# 17| 4: (Parameters)
#-----| 4: (Parameters)
# 17| 0: [Parameter] args
# 17| 0: [ArrayTypeAccess] ...[]
# 17| 0: [TypeAccess] String

View File

@@ -42,7 +42,7 @@ typeaccesses/TA.java:
# 7| 0: [NullLiteral] null
# 8| 4: [Method] method2
# 8| 3: [TypeAccess] void
# 8| 4: (Parameters)
#-----| 4: (Parameters)
# 8| 0: [Parameter] param
# 8| 0: [TypeAccess] ArrayList<TA>
# 8| 0: [TypeAccess] TA

View File

@@ -3,21 +3,21 @@ varargs/Test.java:
# 3| 1: [Class] Test
# 4| 3: [Method] f
# 4| 3: [TypeAccess] void
# 4| 4: (Parameters)
#-----| 4: (Parameters)
# 4| 0: [Parameter] is
# 4| 0: [ArrayTypeAccess] ...[]
# 4| 0: [TypeAccess] int
# 4| 5: [BlockStmt] stmt
# 5| 4: [Method] g
# 5| 3: [TypeAccess] void
# 5| 4: (Parameters)
#-----| 4: (Parameters)
# 5| 0: [Parameter] os
# 5| 0: [ArrayTypeAccess] ...[]
# 5| 0: [TypeAccess] Object
# 5| 5: [BlockStmt] stmt
# 6| 5: [Method] h
# 6| 3: [TypeAccess] void
# 6| 4: (Parameters)
#-----| 4: (Parameters)
# 6| 0: [Parameter] s
# 6| 0: [TypeAccess] String
# 6| 1: [Parameter] ss
@@ -26,21 +26,21 @@ varargs/Test.java:
# 6| 5: [BlockStmt] stmt
# 8| 6: [Method] ff
# 8| 3: [TypeAccess] void
# 8| 4: (Parameters)
#-----| 4: (Parameters)
# 8| 0: [Parameter] is
# 8| 0: [ArrayTypeAccess] ...[]
# 8| 0: [TypeAccess] int
# 8| 5: [BlockStmt] stmt
# 9| 7: [Method] gg
# 9| 3: [TypeAccess] void
# 9| 4: (Parameters)
#-----| 4: (Parameters)
# 9| 0: [Parameter] os
# 9| 0: [ArrayTypeAccess] ...[]
# 9| 0: [TypeAccess] Object
# 9| 5: [BlockStmt] stmt
# 10| 8: [Method] hh
# 10| 3: [TypeAccess] void
# 10| 4: (Parameters)
#-----| 4: (Parameters)
# 10| 0: [Parameter] s
# 10| 0: [TypeAccess] String
# 10| 1: [Parameter] ss