diff --git a/java/ql/lib/semmle/code/java/Member.qll b/java/ql/lib/semmle/code/java/Member.qll index 7d84dbd379d0..17fe696972f6 100644 --- a/java/ql/lib/semmle/code/java/Member.qll +++ b/java/ql/lib/semmle/code/java/Member.qll @@ -848,6 +848,9 @@ class Field extends Member, ExprParent, @field, Variable { override string getAPrimaryQlClass() { result = "Field" } } +overlay[local] +private class DiscardableField extends DiscardableReferableLocatable, @field { } + /** An instance field. */ class InstanceField extends Field { InstanceField() { not this.isStatic() } diff --git a/java/ql/lib/semmle/code/java/Type.qll b/java/ql/lib/semmle/code/java/Type.qll index dd646e74285c..345643e13433 100644 --- a/java/ql/lib/semmle/code/java/Type.qll +++ b/java/ql/lib/semmle/code/java/Type.qll @@ -15,6 +15,7 @@ module; import Member import Modifier import JDK +private import semmle.code.java.Overlay /** * Holds if reference type `t` is an immediate super-type of `sub`. @@ -998,6 +999,10 @@ class ClassOrInterface extends RefType, @classorinterface { CompanionObject getCompanionObject() { type_companion_object(this, _, result) } } +overlay[local] +private class DiscardableClassOrInterface extends DiscardableReferableLocatable, @classorinterface { +} + private string getAPublicObjectMethodSignature() { exists(Method m | m.getDeclaringType() instanceof TypeObject and