Skip to content

Commit 336d60b

Browse files
committed
Add the possibility that a class does not have a package.
1 parent 340bec4 commit 336d60b

3 files changed

Lines changed: 21 additions & 12 deletions

File tree

src/main/java/the/bytecode/club/bytecodeviewer/resources/classcontainer/ClassFileContainer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,10 @@ public boolean shouldParse()
9595

9696
public String getName()
9797
{
98-
return this.className.substring(this.className.lastIndexOf('/') + 1, this.className.lastIndexOf('.'));
98+
if (this.className.contains("/"))
99+
return this.className.substring(this.className.lastIndexOf('/') + 1, this.className.lastIndexOf('.'));
100+
else
101+
return this.className.substring(0, this.className.lastIndexOf('.'));
99102
}
100103

101104
public String getDecompiler()

src/main/java/the/bytecode/club/bytecodeviewer/resources/classcontainer/parser/visitors/MyVoidVisitor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,10 @@ public void visit(ClassOrInterfaceType n, Object arg)
339339
return;
340340

341341
String qualifiedName = referenceType.getQualifiedName();
342-
String packagePath = qualifiedName.substring(0, qualifiedName.lastIndexOf('.')).replace('.', '/');
342+
String packagePath = "";
343+
if (qualifiedName.contains("."))
344+
packagePath = qualifiedName.substring(0, qualifiedName.lastIndexOf('.')).replace('.', '/');
345+
343346
this.classFileContainer.putClassReference(classValue.name,
344347
new ClassReferenceLocation(getOwner(classFileContainer),
345348
packagePath, "", "reference", classValue.line, classValue.columnStart, classValue.columnEnd + 1));

src/main/java/the/bytecode/club/bytecodeviewer/resources/classcontainer/parser/visitors/ParserUtil.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ static void putLocalVariable(ClassFileContainer container, Value variable, Strin
127127
* @param scopeValue The scope value
128128
* @param fieldValue The field value
129129
*/
130-
static void putClassResolvedValues(ClassFileContainer container, Expression visitedExpr,
131-
Expression resolveExpr,
130+
static void putClassResolvedValues(ClassFileContainer container, Expression visitedExpr, Expression resolveExpr,
132131
Value scopeValue, Value fieldValue)
133132
{
134133
ResolvedType resolvedType = visitedExpr.getSymbolResolver().calculateType(resolveExpr);
@@ -137,10 +136,12 @@ static void putClassResolvedValues(ClassFileContainer container, Expression visi
137136

138137
String qualifiedName = resolvedType.asReferenceType().getQualifiedName();
139138
String className = qualifiedName.substring(qualifiedName.lastIndexOf('.') + 1);
140-
String packageName = qualifiedName.substring(0, qualifiedName.lastIndexOf('.'));
141-
container.putClassReference(className, new ClassReferenceLocation(ParserUtil.getOwner(container),
142-
packageName.replace('.', '/'), fieldValue.name, "reference", scopeValue.line, scopeValue.columnStart,
143-
scopeValue.columnEnd + 1));
139+
String packageName = "";
140+
if (qualifiedName.contains("."))
141+
packageName = qualifiedName.substring(0, qualifiedName.lastIndexOf('.')).replace('.', '/');
142+
143+
container.putClassReference(className, new ClassReferenceLocation(ParserUtil.getOwner(container), packageName
144+
, fieldValue.name, "reference", scopeValue.line, scopeValue.columnStart, scopeValue.columnEnd + 1));
144145
container.putField(fieldValue.name, new ClassFieldLocation(scopeValue.name, "reference", fieldValue.line,
145146
fieldValue.columnStart, fieldValue.columnEnd + 1));
146147
}
@@ -166,10 +167,12 @@ static void putClassResolvedValues(ClassFileContainer container, Expression visi
166167

167168
String qualifiedName = referenceType.getQualifiedName();
168169
String className = qualifiedName.substring(qualifiedName.lastIndexOf('.') + 1);
169-
String packageName = qualifiedName.substring(0, qualifiedName.lastIndexOf('.'));
170-
container.putClassReference(className, new ClassReferenceLocation(ParserUtil.getOwner(container),
171-
packageName.replace('.', '/'), "", "reference", scopeValue.line, scopeValue.columnStart,
172-
scopeValue.columnEnd + 1));
170+
String packageName = "";
171+
if (qualifiedName.contains("."))
172+
packageName = qualifiedName.substring(0, qualifiedName.lastIndexOf('.')).replace('.', '/');
173+
174+
container.putClassReference(className, new ClassReferenceLocation(ParserUtil.getOwner(container), packageName
175+
, "", "reference", scopeValue.line, scopeValue.columnStart, scopeValue.columnEnd + 1));
173176
}
174177

175178
/**

0 commit comments

Comments
 (0)