Skip to content

Commit 3569ed5

Browse files
committed
Java: Add TypeLiteral.getReferencedType()
1 parent 0e9d36b commit 3569ed5

File tree

12 files changed

+19
-13
lines changed

12 files changed

+19
-13
lines changed

java/ql/src/Likely Bugs/Concurrency/LazyInitStaticField.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class LockObjectField extends Field {
5151
class ValidSynchStmt extends Stmt {
5252
ValidSynchStmt() {
5353
// It's OK to lock the enclosing class.
54-
this.(SynchronizedStmt).getExpr().(TypeLiteral).getTypeName().getType() =
54+
this.(SynchronizedStmt).getExpr().(TypeLiteral).getReferencedType() =
5555
this.getEnclosingCallable().getDeclaringType()
5656
or
5757
// It's OK to lock on a "lock object field".

java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import java
2424
predicate isSynchronizedByBlock(Method m) {
2525
exists(SynchronizedStmt sync, Expr on | sync = m.getBody().getAChild*() and on = sync.getExpr() |
2626
if m.isStatic()
27-
then on.(TypeLiteral).getTypeName().getType() = m.getDeclaringType()
27+
then on.(TypeLiteral).getReferencedType() = m.getDeclaringType()
2828
else on.(ThisAccess).getType().(RefType).getSourceDeclaration() = m.getDeclaringType()
2929
)
3030
}

java/ql/src/semmle/code/java/Dependency.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ predicate depends(RefType t, RefType dep) {
6262
or
6363
// the type of a type literal accessed in `t`,
6464
exists(TypeLiteral l | l.getEnclosingCallable().getDeclaringType() = t |
65-
usesType(l.getTypeName().getType(), dep)
65+
usesType(l.getReferencedType(), dep)
6666
)
6767
or
6868
// the type of an annotation (or one of its element values) that annotates `t` or one of its members,

java/ql/src/semmle/code/java/DependencyCounts.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ predicate numDepends(RefType t, RefType dep, int value) {
8080
elem = l and
8181
l.getEnclosingCallable().getDeclaringType() = t
8282
|
83-
usesType(l.getTypeName().getType(), dep)
83+
usesType(l.getReferencedType(), dep)
8484
)
8585
or
8686
// the type of an annotation (or one of its element values) that annotates `t` or one of its members,

java/ql/src/semmle/code/java/Expr.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,6 +1425,12 @@ class TypeLiteral extends Expr, @typeliteral {
14251425
/** Gets the access to the type whose class is accessed. */
14261426
Expr getTypeName() { result.getParent() = this }
14271427

1428+
/**
1429+
* Gets the type this type literal refers to. For example for `String.class` the
1430+
* result is the type representing `String`.
1431+
*/
1432+
Type getReferencedType() { result = getTypeName().getType() }
1433+
14281434
/** Gets a printable representation of this expression. */
14291435
override string toString() { result = this.getTypeName().toString() + ".class" }
14301436

java/ql/src/semmle/code/java/Reflection.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ abstract private class ReflectiveClassIdentifier extends Expr {
5252

5353
private class ReflectiveClassIdentifierLiteral extends ReflectiveClassIdentifier, TypeLiteral {
5454
override RefType getReflectivelyIdentifiedClass() {
55-
result = getTypeName().getType().(RefType).getSourceDeclaration()
55+
result = getReferencedType().(RefType).getSourceDeclaration()
5656
}
5757
}
5858

java/ql/src/semmle/code/java/UnitTests.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class TestNGTestMethod extends Method {
168168
or
169169
// Or the data provider class should be declared
170170
result.getDeclaringType() =
171-
testAnnotation.getValue("dataProviderClass").(TypeLiteral).getTypeName().getType()
171+
testAnnotation.getValue("dataProviderClass").(TypeLiteral).getReferencedType()
172172
)
173173
}
174174
}
@@ -227,7 +227,7 @@ class TestNGListenersAnnotation extends TestNGAnnotation {
227227
* Gets a listener defined in this annotation.
228228
*/
229229
TestNGListenerImpl getAListener() {
230-
result = getAValue("value").(TypeLiteral).getTypeName().getType()
230+
result = getAValue("value").(TypeLiteral).getReferencedType()
231231
}
232232
}
233233

@@ -303,7 +303,7 @@ class JUnitCategoryAnnotation extends Annotation {
303303
literal = value.(ArrayCreationExpr).getInit().getAnInit()
304304
)
305305
|
306-
result = literal.getTypeName().getType()
306+
result = literal.getReferencedType()
307307
)
308308
}
309309
}

java/ql/src/semmle/code/java/frameworks/JUnitAnnotations.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,5 @@ class RunWithAnnotation extends Annotation {
6464
/**
6565
* Gets the runner that will be used.
6666
*/
67-
Type getRunner() { result = getValue("value").(TypeLiteral).getTypeName().getType() }
67+
Type getRunner() { result = getValue("value").(TypeLiteral).getReferencedType() }
6868
}

java/ql/src/semmle/code/java/frameworks/google/GoogleHttpClientApi.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class HttpResponseParseAsDeserializableField extends DeserializableField {
3333
HttpResponseParseAsDeserializableField() {
3434
exists(RefType decltype, TypeLiteralToParseAsFlowConfiguration conf |
3535
decltype = getDeclaringType() and
36-
conf.getSourceWithFlowToParseAs().getTypeName().getType() = decltype and
36+
conf.getSourceWithFlowToParseAs().getReferencedType() = decltype and
3737
decltype.fromSource()
3838
)
3939
}

java/ql/src/semmle/code/java/frameworks/jackson/JacksonSerializability.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ private class TypeLiteralToJacksonDatabindFlowConfiguration extends DataFlow5::C
112112
private class ExplicitlyReadJacksonDeserializableType extends JacksonDeserializableType {
113113
ExplicitlyReadJacksonDeserializableType() {
114114
exists(TypeLiteralToJacksonDatabindFlowConfiguration conf |
115-
usesType(conf.getSourceWithFlowToJacksonDatabind().getTypeName().getType(), this)
115+
usesType(conf.getSourceWithFlowToJacksonDatabind().getReferencedType(), this)
116116
)
117117
or
118118
exists(MethodAccess ma |

0 commit comments

Comments
 (0)