mirror of
https://github.com/github/codeql.git
synced 2026-04-25 16:55:19 +02:00
Basic extraction of record patterns
This commit is contained in:
@@ -101,6 +101,10 @@ class A {
|
||||
case E.B -> "It's E.B";
|
||||
default -> "It's something else";
|
||||
};
|
||||
var recordPatterntest = switch(thing) {
|
||||
case Middle(Inner(String field)) -> field;
|
||||
default -> "Doesn't match pattern Middle(Inner(...))";
|
||||
};
|
||||
}
|
||||
}
|
||||
catch (RuntimeException rte) {
|
||||
@@ -122,3 +126,6 @@ class A {
|
||||
*/
|
||||
int i, j, k;
|
||||
}
|
||||
|
||||
record Inner(String field) { }
|
||||
record Middle(Inner inner) { }
|
||||
|
||||
@@ -283,36 +283,51 @@ A.java:
|
||||
# 101| -1: [TypeAccess] E
|
||||
# 102| 2: [DefaultCase] default
|
||||
# 102| -1: [StringLiteral] "It's something else"
|
||||
# 106| 0: [CatchClause] catch (...)
|
||||
# 104| 11: [LocalVariableDeclStmt] var ...;
|
||||
# 104| 1: [LocalVariableDeclExpr] recordPatterntest
|
||||
# 104| 0: [SwitchExpr] switch (...)
|
||||
# 104| -1: [VarAccess] thing
|
||||
# 105| 0: [PatternCase] case T t ...
|
||||
# 105| -1: [VarAccess] field
|
||||
# 105| 0: [RecordPatternExpr] Middle(...)
|
||||
# 105| 0: [RecordPatternExpr] Inner(...)
|
||||
# 105| 0: [LocalVariableDeclExpr] field
|
||||
# 106| 1: [DefaultCase] default
|
||||
# 106| -1: [StringLiteral] "Doesn't match pattern Middle(Inner(...))"
|
||||
# 110| 0: [CatchClause] catch (...)
|
||||
#-----| 0: (Single Local Variable Declaration)
|
||||
# 106| 0: [TypeAccess] RuntimeException
|
||||
# 106| 1: [LocalVariableDeclExpr] rte
|
||||
# 106| 1: [BlockStmt] { ... }
|
||||
# 107| 0: [ReturnStmt] return ...
|
||||
# 111| 10: [Class] E
|
||||
# 115| 3: [FieldDeclaration] E A;
|
||||
# 110| 0: [TypeAccess] RuntimeException
|
||||
# 110| 1: [LocalVariableDeclExpr] rte
|
||||
# 110| 1: [BlockStmt] { ... }
|
||||
# 111| 0: [ReturnStmt] return ...
|
||||
# 115| 10: [Class] E
|
||||
# 119| 3: [FieldDeclaration] E A;
|
||||
#-----| -3: (Javadoc)
|
||||
# 112| 1: [Javadoc] /** Javadoc for enum constant */
|
||||
# 113| 0: [JavadocText] Javadoc for enum constant
|
||||
# 115| -1: [TypeAccess] E
|
||||
# 115| 0: [ClassInstanceExpr] new E(...)
|
||||
# 115| -3: [TypeAccess] E
|
||||
# 116| 4: [FieldDeclaration] E B;
|
||||
# 116| 1: [Javadoc] /** Javadoc for enum constant */
|
||||
# 117| 0: [JavadocText] Javadoc for enum constant
|
||||
# 119| -1: [TypeAccess] E
|
||||
# 119| 0: [ClassInstanceExpr] new E(...)
|
||||
# 119| -3: [TypeAccess] E
|
||||
# 120| 4: [FieldDeclaration] E B;
|
||||
#-----| -3: (Javadoc)
|
||||
# 112| 1: [Javadoc] /** Javadoc for enum constant */
|
||||
# 113| 0: [JavadocText] Javadoc for enum constant
|
||||
# 116| -1: [TypeAccess] E
|
||||
# 116| 0: [ClassInstanceExpr] new E(...)
|
||||
# 116| -3: [TypeAccess] E
|
||||
# 117| 5: [FieldDeclaration] E C;
|
||||
# 116| 1: [Javadoc] /** Javadoc for enum constant */
|
||||
# 117| 0: [JavadocText] Javadoc for enum constant
|
||||
# 120| -1: [TypeAccess] E
|
||||
# 120| 0: [ClassInstanceExpr] new E(...)
|
||||
# 120| -3: [TypeAccess] E
|
||||
# 121| 5: [FieldDeclaration] E C;
|
||||
#-----| -3: (Javadoc)
|
||||
# 112| 1: [Javadoc] /** Javadoc for enum constant */
|
||||
# 113| 0: [JavadocText] Javadoc for enum constant
|
||||
# 117| -1: [TypeAccess] E
|
||||
# 117| 0: [ClassInstanceExpr] new E(...)
|
||||
# 117| -3: [TypeAccess] E
|
||||
# 123| 11: [FieldDeclaration] int i, ...;
|
||||
# 116| 1: [Javadoc] /** Javadoc for enum constant */
|
||||
# 117| 0: [JavadocText] Javadoc for enum constant
|
||||
# 121| -1: [TypeAccess] E
|
||||
# 121| 0: [ClassInstanceExpr] new E(...)
|
||||
# 121| -3: [TypeAccess] E
|
||||
# 127| 11: [FieldDeclaration] int i, ...;
|
||||
#-----| -3: (Javadoc)
|
||||
# 120| 1: [Javadoc] /** Javadoc for fields */
|
||||
# 121| 0: [JavadocText] Javadoc for fields
|
||||
# 123| -1: [TypeAccess] int
|
||||
# 124| 1: [Javadoc] /** Javadoc for fields */
|
||||
# 125| 0: [JavadocText] Javadoc for fields
|
||||
# 127| -1: [TypeAccess] int
|
||||
# 130| 2: [Class] Inner
|
||||
# 130| 2: [FieldDeclaration] String field;
|
||||
# 131| 3: [Class] Middle
|
||||
# 131| 2: [FieldDeclaration] Inner inner;
|
||||
|
||||
Reference in New Issue
Block a user