Revert "Java: Add CompilationUnit.getATypeAvailableBySimpleName()"

This reverts commit 431aa2cb79.
This commit is contained in:
Tony Torralba
2022-10-04 10:59:45 +02:00
parent 01b950f68b
commit 281e49daf7
3 changed files with 9 additions and 54 deletions

View File

@@ -1,4 +0,0 @@
---
category: feature
---
* Added the predicate `CompilationUnit.getATypeAvailableBySimpleName()`.

View File

@@ -31,50 +31,5 @@ class CompilationUnit extends Element, File {
*/
Module getModule() { cumodule(this, result) }
/**
* Gets a type which is available by its simple name in this compilation unit.
* Reasons for this can be:
* - The type is declared in this compilation unit as top-level type
* - The type is imported
* - The type is declared in the same package as this compilation unit
* - The type is declared in the package `java.lang`
*/
ClassOrInterface getATypeAvailableBySimpleName() {
// See "Shadowing", https://docs.oracle.com/javase/specs/jls/se17/html/jls-6.html#jls-6.4.1
// Note: Currently the logic below does not consider shadowing and might have multiple results
// with the same type name
result.(TopLevelType).getCompilationUnit() = this
or
exists(ImportStaticTypeMember importDecl |
importDecl.getCompilationUnit() = this and
result = importDecl.getATypeImport()
)
or
exists(ImportType importDecl |
importDecl.getCompilationUnit() = this and
result = importDecl.getImportedType()
)
or
exists(ImportStaticOnDemand importDecl |
importDecl.getCompilationUnit() = this and
result = importDecl.getATypeImport()
)
or
exists(ImportOnDemandFromType importDecl |
importDecl.getCompilationUnit() = this and
result = importDecl.getAnImport()
)
or
exists(ImportOnDemandFromPackage importDecl |
importDecl.getCompilationUnit() = this and
result = importDecl.getAnImport()
)
or
// From same package or java.lang, see https://docs.oracle.com/javase/specs/jls/se17/html/jls-7.html
result.(TopLevelType).getPackage() = this.getPackage()
or
result.(TopLevelType).getPackage().hasName("java.lang")
}
override string getAPrimaryQlClass() { result = "CompilationUnit" }
}

View File

@@ -11,18 +11,22 @@
import java
Class getTaggedType(ThrowsTag tag) {
RefType getTaggedType(ThrowsTag tag) {
result.hasName(tag.getExceptionName()) and
result = tag.getFile().(CompilationUnit).getATypeAvailableBySimpleName()
exists(ImportType i | i.getFile() = tag.getFile() | i.getImportedType() = result)
}
predicate canThrow(Callable callable, Class exception) {
exception instanceof UncheckedThrowableType
predicate canThrow(Callable callable, RefType exception) {
exists(string uncheckedException |
uncheckedException = "RuntimeException" or uncheckedException = "Error"
|
exception.getAnAncestor().hasQualifiedName("java.lang", uncheckedException)
)
or
callable.getAnException().getType().getADescendant() = exception
}
from ThrowsTag throwsTag, Class thrownType, Callable docMethod
from ThrowsTag throwsTag, RefType thrownType, Callable docMethod
where
getTaggedType(throwsTag) = thrownType and
docMethod.getDoc().getJavadoc().getAChild*() = throwsTag and