Skip to content

Commit 19450b9

Browse files
committed
8266281: Assign Symbols to the package selector expression
Reviewed-by: vromero
1 parent a223189 commit 19450b9

File tree

5 files changed

+35
-9
lines changed

5 files changed

+35
-9
lines changed

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ public void visitTopLevel(JCCompilationUnit tree) {
326326
JCPackageDecl pd = tree.getPackage();
327327
if (pd != null) {
328328
tree.packge = pd.packge = syms.enterPackage(tree.modle, TreeInfo.fullName(pd.pid));
329+
setPackageSymbols.scan(pd);
329330
if ( pd.annotations.nonEmpty()
330331
|| pkginfoOpt == PkgInfo.ALWAYS
331332
|| tree.docComments != null) {
@@ -389,6 +390,31 @@ public void visitTopLevel(JCCompilationUnit tree) {
389390
log.useSource(prev);
390391
result = null;
391392
}
393+
//where:
394+
//set package Symbols to the package expression:
395+
private final TreeScanner setPackageSymbols = new TreeScanner() {
396+
Symbol currentPackage;
397+
398+
@Override
399+
public void visitIdent(JCIdent tree) {
400+
tree.sym = currentPackage;
401+
tree.type = currentPackage.type;
402+
}
403+
404+
@Override
405+
public void visitSelect(JCFieldAccess tree) {
406+
tree.sym = currentPackage;
407+
tree.type = currentPackage.type;
408+
currentPackage = currentPackage.owner;
409+
super.visitSelect(tree);
410+
}
411+
412+
@Override
413+
public void visitPackageDef(JCPackageDecl tree) {
414+
currentPackage = tree.packge;
415+
scan(tree.pid);
416+
}
417+
};
392418

393419
@Override
394420
public void visitClassDef(JCClassDecl tree) {

test/langtools/tools/javac/api/TestGetElementReference.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
/*
2525
* @test
26-
* @bug 8012929 8243074
26+
* @bug 8012929 8243074 8266281
2727
* @summary Trees.getElement should work not only for declaration trees, but also for use-trees
2828
* @modules jdk.compiler
2929
* @build TestGetElementReference

test/langtools/tools/javac/api/TestGetElementReferenceData.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
* questions.
2222
*/
2323

24-
package test;
25-
/*getElement:PACKAGE:test*/
24+
package test/*getElement:PACKAGE:test*/.nested/*getElement:PACKAGE:test.nested*/;
25+
/*getElement:PACKAGE:test.nested*/
2626
import java.lang.annotation.*;
27-
import static test.TestGetElementReferenceData.Sub.*;
27+
import static test.nested.TestGetElementReferenceData.Sub.*;
2828

2929
public class TestGetElementReferenceData {
3030

@@ -33,16 +33,16 @@ private static void test() {
3333
sb/*getElement:LOCAL_VARIABLE:sb*/.append/*getElement:METHOD:java.lang.StringBuilder.append(int)*/(0);
3434
sb.reverse( /*getElement:METHOD:java.lang.StringBuilder.reverse()*/);
3535
java.util.List< /*getElement:INTERFACE:java.util.List*/ String> l;
36-
utility/*getElement:METHOD:test.TestGetElementReferenceData.Base.utility()*/();
37-
target(TestGetElementReferenceData :: test/*getElement:METHOD:test.TestGetElementReferenceData.test()*/);
36+
utility/*getElement:METHOD:test.nested.TestGetElementReferenceData.Base.utility()*/();
37+
target(TestGetElementReferenceData :: test/*getElement:METHOD:test.nested.TestGetElementReferenceData.test()*/);
3838
Object/*getElement:CLASS:java.lang.Object*/ o = null;
3939
if (o/*getElement:LOCAL_VARIABLE:o*/ instanceof String/*getElement:CLASS:java.lang.String*/ str/*getElement:BINDING_VARIABLE:str*/) ;
4040
}
4141
private static void target(Runnable r) { r.run(); }
4242
public static class Base {
4343
public static void utility() {}
4444
}
45-
public static class Sub extends @TypeAnnotation( /*getElement:ANNOTATION_TYPE:test.TestGetElementReferenceData.TypeAnnotation*/) Base {
45+
public static class Sub extends @TypeAnnotation( /*getElement:ANNOTATION_TYPE:test.nested.TestGetElementReferenceData.TypeAnnotation*/) Base {
4646
}
4747
@Deprecated( /*getElement:ANNOTATION_TYPE:java.lang.Deprecated*/)
4848
public static class TypeParam<TT/*getElement:TYPE_PARAMETER:TT*/> {

test/langtools/tools/javac/api/lambdaErrorRecovery/TestGetTypeMirrorReference.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
/*
2525
* @test
26-
* @bug 8240658
26+
* @bug 8240658 8266281
2727
* @summary Verify that broken method invocations with lambdas get type inference done
2828
* @modules jdk.compiler
2929
* @compile --enable-preview -source ${jdk.version} TestGetTypeMirrorReference.java

test/langtools/tools/javac/api/lambdaErrorRecovery/TestGetTypeMirrorReferenceData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* questions.
2222
*/
2323

24-
package test;
24+
package test/*getTypeMirror:PACKAGE:test*/;
2525

2626
public class TestGetTypeMirrorReferenceData {
2727

0 commit comments

Comments
 (0)