Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(java): emit visibility and other modifier facts (#4886)
Adds support for * visibility = {public, private, package, protected} Also adds support for * tag/volatile * tag/abstract * tag/default
- Loading branch information
Showing
5 changed files
with
224 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Modifiers.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package pkg; | ||
|
||
@SuppressWarnings("unused") | ||
//- @Modifiers defines/binding AbstractClass | ||
public abstract class Modifiers { | ||
|
||
//- @privMember defines/binding PrivateMember | ||
private int privMember; | ||
//- @volMember defines/binding VolatileMember | ||
private volatile int volMember; | ||
//- @volStatic defines/binding VolatileStatic | ||
private static volatile int volStatic; | ||
|
||
//- @method defines/binding Method | ||
int method() { | ||
return 0; | ||
} | ||
|
||
//- @absmethod defines/binding AbstractMethod | ||
abstract int absmethod(); | ||
|
||
//- @Clazz defines/binding Class | ||
class Clazz { } | ||
|
||
//- @Intf defines/binding Interface | ||
interface Intf { | ||
//- @func defines/binding IMethod | ||
int func(); | ||
|
||
//- @defFunc defines/binding DefaultMethod | ||
default int defFunc() { | ||
return 0; | ||
} | ||
} | ||
} | ||
|
||
//- !{ PrivateMember.tag/volatile _ } | ||
//- VolatileMember.tag/volatile _ | ||
//- VolatileStatic.tag/volatile _ | ||
|
||
//- !{ IMethod.tag/default _ } | ||
//- DefaultMethod.tag/default _ | ||
|
||
//- !{ Method.tag/abstract _ } | ||
//- AbstractMethod.tag/abstract _ | ||
|
||
//- !{ Class.tag/abstract _ } | ||
//- AbstractClass.tag/abstract _ | ||
//- !{ Interface.tag/abstract _ } |
89 changes: 89 additions & 0 deletions
89
kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Visibility.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package pkg; | ||
|
||
@SuppressWarnings("unused") | ||
public class Visibility { | ||
|
||
//- @privMember defines/binding PrivateMember | ||
private int privMember; | ||
|
||
//- @defMember defines/binding DefaultMember | ||
int defMember; | ||
|
||
//- @protMember defines/binding ProtectedMember | ||
protected int protMember; | ||
|
||
//- @pubMember defines/binding PublicMember | ||
public int pubMember; | ||
|
||
//- @privMethod defines/binding PrivateMethod | ||
private int privMethod() { | ||
return 0; | ||
} | ||
|
||
//- @defMethod defines/binding DefaultMethod | ||
int defMethod() { | ||
return 0; | ||
} | ||
|
||
//- @protMethod defines/binding ProtectedMethod | ||
protected int protMethod() { | ||
return 0; | ||
} | ||
|
||
//- @pubMethod defines/binding PublicMethod | ||
public int pubMethod() { | ||
|
||
//- @local defines/binding LocalVar | ||
int local = 0; | ||
return local; | ||
} | ||
|
||
//- @PrivClass defines/binding PrivateClass | ||
private class PrivClass {} | ||
|
||
//- @DefClass defines/binding DefaultClass | ||
class DefClass {} | ||
|
||
//- @ProtClass defines/binding ProtectedClass | ||
protected class ProtClass {} | ||
|
||
//- @PubClass defines/binding PublicClass | ||
public class PubClass {} | ||
|
||
//- @DefIntf defines/binding DefaultInterface | ||
interface DefIntf { | ||
//- @f defines/binding DefaultInterfaceMethod | ||
int f(); | ||
} | ||
|
||
//- @DefEnum defines/binding DefaultEnum | ||
enum DefEnum { | ||
//- @X defines/binding EnumValueX | ||
X, | ||
Y; | ||
} | ||
} | ||
|
||
//- PrivateMember.visibility private | ||
//- DefaultMember.visibility package | ||
//- ProtectedMember.visibility protected | ||
//- PublicMember.visibility public | ||
|
||
//- PrivateMethod.visibility private | ||
//- DefaultMethod.visibility package | ||
//- ProtectedMethod.visibility protected | ||
//- PublicMethod.visibility public | ||
|
||
//- PrivateClass.visibility private | ||
//- DefaultClass.visibility package | ||
//- ProtectedClass.visibility protected | ||
//- PublicClass.visibility public | ||
|
||
//- !{ LocalVar.visibility _ } | ||
|
||
//- DefaultInterface.visibility package | ||
//- DefaultInterfaceMethod.visibility public | ||
|
||
//- DefaultEnum.visibility package | ||
// N.B. enum values are tagged as public, final and static by the Java compiler. | ||
//- EnumValueX.visibility public |