ui: show when type is built-in (issue #2)

* renamed DefinitionType to DefinitionKind
* passing DefinitionKind from Java to C++ instead of just a single bool
* omitting to create a symbol for undefined types

fortune cookie message = Happy news is on the way to you.
This commit is contained in:
malte_langkabel
2017-01-23 15:55:29 +01:00
parent 6ea248b500
commit 2759018374
30 changed files with 214 additions and 161 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ package io.coati;
import com.github.javaparser.ast.AccessSpecifier;
public enum AccessKind
{ // these values need to be the same as AccesType in C++ code
{ // these values need to be the same as AccesKind in C++ code
NONE(0),
PUBLIC(1),
PROTECTED(2),
@@ -0,0 +1,20 @@
package io.coati;
public enum DefinitionKind
{ // these values need to be the same as DefinitionKind in C++ code
NONE(0),
IMPLICIT(1),
EXPLICIT(2);
private final int m_value;
private DefinitionKind(int value)
{
this.m_value = value;
}
public int getValue()
{
return m_value;
}
}
+36 -24
View File
@@ -78,10 +78,11 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
JavaIndexer.recordSymbolWithLocationAndScope(
m_callbackId,
JavaparserDeclNameResolver.getQualifiedName(name).toSerializedNameHierarchy(),
SymbolType.PACKAGE,
SymbolKind.PACKAGE,
name.getRange(),
n.getRange(),
AccessKind.NONE, false
AccessKind.NONE,
DefinitionKind.EXPLICIT
);
while (name.getQualifier().isPresent())
@@ -90,8 +91,9 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
JavaIndexer.recordSymbol(
m_callbackId,
JavaparserDeclNameResolver.getQualifiedName(name).toSerializedNameHierarchy(),
SymbolType.PACKAGE, AccessKind.NONE,
false
SymbolKind.PACKAGE,
AccessKind.NONE,
DefinitionKind.EXPLICIT
);
}
@@ -105,10 +107,11 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbolWithLocationAndScope(
m_callbackId, qualifiedName, (n.isInterface() ? SymbolType.INTERFACE : SymbolType.CLASS),
m_callbackId, qualifiedName, (n.isInterface() ? SymbolKind.INTERFACE : SymbolKind.CLASS),
name.getRange(),
n.getRange(),
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())), false
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())),
DefinitionKind.EXPLICIT
);
if (n.getRange().isPresent())
@@ -152,9 +155,10 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
}
JavaIndexer.recordSymbolWithLocation(
m_callbackId, qualifiedName, SymbolType.TYPE_PARAMETER,
m_callbackId, qualifiedName, SymbolKind.TYPE_PARAMETER,
range,
AccessKind.TYPE_PARAMETER, false
AccessKind.TYPE_PARAMETER,
DefinitionKind.EXPLICIT
);
List<DeclContext> parentContext = m_context;
@@ -171,10 +175,11 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbolWithLocationAndScope(
m_callbackId, qualifiedName, SymbolType.ENUM,
m_callbackId, qualifiedName, SymbolKind.ENUM,
name.getRange(),
n.getRange(),
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())), false
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())),
DefinitionKind.EXPLICIT
);
if (n.getRange().isPresent())
@@ -195,9 +200,10 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbolWithLocation(
m_callbackId, qualifiedName, SymbolType.ENUM_CONSTANT,
m_callbackId, qualifiedName, SymbolKind.ENUM_CONSTANT,
n.getRange(),
AccessKind.NONE, false
AccessKind.NONE,
DefinitionKind.EXPLICIT
);
List<DeclContext> parentContext = m_context;
@@ -214,10 +220,11 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbolWithLocationAndScope(
m_callbackId, qualifiedName, SymbolType.METHOD,
m_callbackId, qualifiedName, SymbolKind.METHOD,
name.getRange(),
n.getRange(),
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())), false
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())),
DefinitionKind.EXPLICIT
);
List<DeclContext> parentContext = m_context;
@@ -234,10 +241,11 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbolWithLocationAndScope(
m_callbackId, qualifiedName, SymbolType.METHOD,
m_callbackId, qualifiedName, SymbolKind.METHOD,
name.getRange(),
n.getRange(),
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())), false
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())),
DefinitionKind.EXPLICIT
);
@@ -329,9 +337,10 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
SimpleName name = declarator.getName();
JavaIndexer.recordSymbolWithLocation(
m_callbackId, qualifiedName, SymbolType.FIELD,
m_callbackId, qualifiedName, SymbolKind.FIELD,
name.getRange(),
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())), false
AccessKind.fromAccessSpecifier(Modifier.getAccessSpecifier(n.getModifiers())),
DefinitionKind.EXPLICIT
);
m_context.add(new DeclContext(qualifiedName));
@@ -562,8 +571,9 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String referencedName = JavaparserTypeNameResolver.getQualifiedTypeName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbol(
m_callbackId, referencedName, SymbolType.BUILTIN_TYPE,
AccessKind.NONE, true
m_callbackId, referencedName, SymbolKind.BUILTIN_TYPE,
AccessKind.NONE,
DefinitionKind.EXPLICIT
);
for (DeclContext context: m_context)
@@ -589,8 +599,9 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
String referencedName = JavaparserTypeNameResolver.getQualifiedTypeName(n, m_typeSolver).toSerializedNameHierarchy();
JavaIndexer.recordSymbol(
m_callbackId, referencedName, SymbolType.BUILTIN_TYPE,
AccessKind.NONE, true
m_callbackId, referencedName, SymbolKind.BUILTIN_TYPE,
AccessKind.NONE,
DefinitionKind.EXPLICIT
);
for (DeclContext context: m_context)
@@ -805,9 +816,10 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
JavaIndexer.logError(m_callbackId, e + " at " + m_filePath + "<"+ beginLine + ", " + beginColumn + ">");
JavaIndexer.recordSymbolWithLocation(
m_callbackId, "unsolved-symbol\ts\tp", SymbolType.TYPE_MAX,
m_callbackId, "unsolved-symbol\ts\tp", SymbolKind.TYPE_MAX,
n.getRange(),
AccessKind.DEFAULT, false
AccessKind.DEFAULT,
DefinitionKind.EXPLICIT
);
}
+18 -18
View File
@@ -126,69 +126,69 @@ public class JavaIndexer
// helpers
static public void recordSymbol(
int address, String symbolName, SymbolType symbolType,
AccessKind access, boolean isImplicit
int address, String symbolName, SymbolKind symbolType,
AccessKind access, DefinitionKind definitionKind
)
{
recordSymbol(
address, symbolName, symbolType.getValue(),
access.getValue(), (isImplicit ? 1 : 0)
access.getValue(), definitionKind.getValue()
);
}
static public void recordSymbolWithLocation(
int address, String symbolName, SymbolType symbolType,
int address, String symbolName, SymbolKind symbolType,
Optional<Range> range,
AccessKind access, boolean isImplicit
AccessKind access, DefinitionKind definitionKind
)
{
recordSymbolWithLocation(
address, symbolName, symbolType,
range.orElse(Range.range(0, 0, 0, 0)),
access, isImplicit
access, definitionKind
);
}
static public void recordSymbolWithLocation(
int address, String symbolName, SymbolType symbolType,
int address, String symbolName, SymbolKind symbolType,
Range range,
AccessKind access, boolean isImplicit
AccessKind access, DefinitionKind definitionKind
)
{
recordSymbolWithLocation(
address, symbolName, symbolType.getValue(),
range.begin.line, range.begin.column, range.end.line, range.end.column,
access.getValue(), (isImplicit ? 1 : 0)
access.getValue(), definitionKind.getValue()
);
}
static public void recordSymbolWithLocationAndScope(
int address, String symbolName, SymbolType symbolType,
int address, String symbolName, SymbolKind symbolType,
Optional<Range> range,
Optional<Range> scopeRange,
AccessKind access, boolean isImplicit
AccessKind access, DefinitionKind definitionKind
)
{
recordSymbolWithLocationAndScope(
address, symbolName, symbolType,
range.orElse(Range.range(0, 0, 0, 0)),
scopeRange.orElse(Range.range(0, 0, 0, 0)),
access, isImplicit
access, definitionKind
);
}
static public void recordSymbolWithLocationAndScope(
int address, String symbolName, SymbolType symbolType,
int address, String symbolName, SymbolKind symbolType,
Range range,
Range scopeRange,
AccessKind access, boolean isImplicit
AccessKind access, DefinitionKind definitionKind
)
{
recordSymbolWithLocationAndScope(
address, symbolName, symbolType.getValue(),
range.begin.line, range.begin.column, range.end.line, range.end.column,
scopeRange.begin.line, scopeRange.begin.column, scopeRange.end.line, scopeRange.end.column,
access.getValue(), (isImplicit ? 1 : 0)
access.getValue(), definitionKind.getValue()
);
}
@@ -284,20 +284,20 @@ public class JavaIndexer
static private native void recordSymbol(
int address, String symbolName, int symbolType,
int access, int isImplicit
int access, int definitionKind
);
static private native void recordSymbolWithLocation(
int address, String symbolName, int symbolType,
int beginLine, int beginColumn, int endLine, int endColumn,
int access, int isImplicit
int access, int definitionKind
);
static private native void recordSymbolWithLocationAndScope(
int address, String symbolName, int symbolType,
int beginLine, int beginColumn, int endLine, int endColumn,
int scopeBeginLine, int scopeBeginColumn, int scopeEndLine, int scopeEndColumn,
int access, int isImplicit
int access, int definitionKind
);
static private native void recordReference(
+1 -1
View File
@@ -1,7 +1,7 @@
package io.coati;
public enum ReferenceKind
{
{ // these values need to be the same as ReferenceKind in C++ code
UNDEFINED(0),
TYPE_USAGE(1),
USAGE(2),
@@ -1,7 +1,7 @@
package io.coati;
public enum SymbolType
{ // these values need to be the same as SymbolType in C++ code
public enum SymbolKind
{ // these values need to be the same as SymbolKind in C++ code
BUILTIN_TYPE(1),
CLASS(2),
ENUM(3),
@@ -25,7 +25,7 @@ public enum SymbolType
private final int m_value;
private SymbolType(int value)
private SymbolKind(int value)
{
this.m_value = value;
}