Skip to content

Commit

Permalink
fix(java_indexer): ensure static import refs are accessible (#3305)
Browse files Browse the repository at this point in the history
  • Loading branch information
schroederc committed Dec 10, 2018
1 parent 4e3d6fd commit c453a31
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@
import com.google.devtools.kythe.proto.Storage.VName;
import com.google.devtools.kythe.util.Span;
import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
import com.sun.source.tree.Scope;
import com.sun.source.tree.Tree.Kind;
import com.sun.tools.javac.api.JavacTrees;
import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.code.Symbol.ClassSymbol;
import com.sun.tools.javac.code.Symbol.PackageSymbol;
Expand Down Expand Up @@ -655,10 +657,15 @@ public JavaNode visitSelect(JCFieldAccess field, TreeContext owner) {
if (cls != null) {
// Import is a class member; emit usages for all matching (by name) class members.
ctx = ctx.down(field);

JavacTrees trees = JavacTrees.instance(javaContext);
Type.ClassType classType = (Type.ClassType) cls.asType();
Scope scope = trees.getScope(treePath);

JavaNode lastMember = null;
for (Symbol member : cls.members().getSymbolsByName(field.name)) {
try {
if (!member.isStatic()) {
if (!member.isStatic() || !trees.isAccessible(scope, member, classType)) {
continue;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
//- !{ @member ref/imports PrivateMember }
import static pkg.StaticMethods.member;

//- @staticMember ref/imports StaticMemberFunc
//- @staticMember ref/imports PackageStaticMemberFunc
//- !{ @staticMember ref/imports PrivateStaticMember
//- @staticMember ref/imports ProtectedStaticMemberFunc }
import static pkg.StaticMethods.staticMember;

//- @"java.util" ref UtilPackage
//- UtilPackage.node/kind package
//- @List ref/imports ListI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ public class StaticMethods {
//- @member defines/binding MemberFunc
public static int member() { return 0; }

//- @staticMember defines/binding PrivateStaticMember
private static int staticMember;

//- @staticMember defines/binding ProtectedStaticMemberFunc
protected static int staticMember(int x) { return x; }

//- @staticMember defines/binding PackageStaticMemberFunc
static int staticMember(boolean b) { return b ? 1: 0; }

//- @staticMember defines/binding StaticMemberFunc
public static int staticMember() { return 0; }

//- @staticMethod defines/binding StaticBool
public static void staticMethod(boolean b) {}

Expand Down

0 comments on commit c453a31

Please sign in to comment.