Merge pull request #10756 from tamasvajk/kotlin-fix-java-modifier

Kotlin: extract `protected` modifier from java class files
This commit is contained in:
Tamás Vajk
2022-10-11 15:02:13 +02:00
committed by GitHub
6 changed files with 31 additions and 1 deletions

View File

@@ -231,7 +231,7 @@ open class KotlinFileExtractor(
// default java visibility (top level)
}
JavaVisibilities.ProtectedAndPackage -> {
// default java visibility (member level)
addModifiers(id, "protected")
}
else -> logger.errorElement("Unexpected delegated visibility: $v", elementForLocation)
}

View File

@@ -0,0 +1,6 @@
package extlib;
public class A {
protected void m() {}
}

View File

@@ -0,0 +1,2 @@
| extlib.jar/extlib/A.class:0:0:0:0 | m | protected |
| test.kt:4:12:4:22 | m | override, protected |

View File

@@ -0,0 +1,6 @@
import extlib.A;
class B : A() {
override fun m() { }
}

View File

@@ -0,0 +1,10 @@
from create_database_utils import *
import glob
# Compile Java untraced. Note the Java source is hidden under `javasrc` so the Kotlin compiler
# will certainly reference the jar, not the source or class file for extlib.Lib
os.mkdir('build')
runSuccessfully(["javac"] + glob.glob("libsrc/extlib/*.java") + ["-d", "build"])
runSuccessfully(["jar", "cf", "extlib.jar", "-C", "build", "extlib"])
run_codeql_database_create(["kotlinc test.kt -cp extlib.jar"], lang="java")

View File

@@ -0,0 +1,6 @@
import java
query predicate mods(Method m, string modifiers) {
m.getName() = "m" and
modifiers = concat(string s | m.hasModifier(s) | s, ", ")
}