Skip to content

Commit

Permalink
Give ThisExpr a name as scope
Browse files Browse the repository at this point in the history
  • Loading branch information
matozoid committed May 1, 2019
1 parent 2e7bdfe commit 1bf4c06
Show file tree
Hide file tree
Showing 25 changed files with 79 additions and 71 deletions.
Expand Up @@ -3,6 +3,7 @@
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;


import static com.github.javaparser.StaticJavaParser.parseExpression; import static com.github.javaparser.StaticJavaParser.parseExpression;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;


class ThisExprTest { class ThisExprTest {
Expand All @@ -15,19 +16,19 @@ void justThis() {


@Test @Test
void singleScopeThis() { void singleScopeThis() {
Expression expr = parseExpression("a.this"); Expression expr = parseExpression("A.this");


Expression classExpr = expr.asThisExpr().getClassExpr().get(); Name className = expr.asThisExpr().getClassName().get();


assertTrue(classExpr.isNameExpr()); assertEquals("A", className.asString());
} }


@Test @Test
void multiScopeThis() { void multiScopeThis() {
Expression expr = parseExpression("a.b.this"); Expression expr = parseExpression("a.B.this");


Expression classExpr = expr.asThisExpr().getClassExpr().get(); Name className = expr.asThisExpr().getClassName().get();


assertTrue(classExpr.isFieldAccessExpr()); assertEquals("a.B", className.asString());
} }
} }
Expand Up @@ -42,15 +42,13 @@
import com.github.javaparser.utils.ClassUtils; import com.github.javaparser.utils.ClassUtils;
import com.github.javaparser.utils.CodeGenerationUtils; import com.github.javaparser.utils.CodeGenerationUtils;
import com.github.javaparser.utils.Utils; import com.github.javaparser.utils.Utils;

import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;

import static com.github.javaparser.JavaToken.Kind.*; import static com.github.javaparser.JavaToken.Kind.*;
import static com.github.javaparser.Providers.UTF8; import static com.github.javaparser.Providers.UTF8;
import static com.github.javaparser.Providers.provider; import static com.github.javaparser.Providers.provider;
Expand All @@ -60,9 +58,9 @@
import static com.github.javaparser.ast.Modifier.createModifierList; import static com.github.javaparser.ast.Modifier.createModifierList;
import static com.github.javaparser.utils.CodeGenerationUtils.subtractPaths; import static com.github.javaparser.utils.CodeGenerationUtils.subtractPaths;
import static com.github.javaparser.utils.Utils.assertNotNull; import static com.github.javaparser.utils.Utils.assertNotNull;

import com.github.javaparser.ast.Node; import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.Generated; import com.github.javaparser.ast.Generated;
import com.github.javaparser.TokenRange;


/** /**
* <p> * <p>
Expand Down
Expand Up @@ -139,6 +139,6 @@ public Optional<AnnotationDeclaration> toAnnotationDeclaration() {


@Override @Override
public FieldDeclaration addField(Type type, String name, Modifier.Keyword... modifiers) { public FieldDeclaration addField(Type type, String name, Modifier.Keyword... modifiers) {
throw new IllegalStateException("Cannot add a field to an annotation declaration."); throw new IllegalStateException("Cannot add a field to an annotation declaration.");
} }
} }
Expand Up @@ -37,11 +37,11 @@
import com.github.javaparser.TokenRange; import com.github.javaparser.TokenRange;
import com.github.javaparser.resolution.Resolvable; import com.github.javaparser.resolution.Resolvable;
import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration; import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration;

import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer; import java.util.function.Consumer;

import static com.github.javaparser.utils.Utils.assertNotNull; import static com.github.javaparser.utils.Utils.assertNotNull;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.Generated;


/** /**
* A constructor declaration: <code>class X { X() { } }</code> where X(){} is the constructor declaration. * A constructor declaration: <code>class X { X() { } }</code> where X(){} is the constructor declaration.
Expand Down
Expand Up @@ -33,20 +33,18 @@
import com.github.javaparser.ast.type.TypeParameter; import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor; import com.github.javaparser.ast.visitor.VoidVisitor;

import java.util.Optional; import java.util.Optional;

import static com.github.javaparser.utils.Utils.assertNotNull; import static com.github.javaparser.utils.Utils.assertNotNull;

import com.github.javaparser.ast.visitor.CloneVisitor; import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.metamodel.MethodDeclarationMetaModel; import com.github.javaparser.metamodel.MethodDeclarationMetaModel;
import com.github.javaparser.metamodel.JavaParserMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel;
import com.github.javaparser.TokenRange; import com.github.javaparser.TokenRange;
import com.github.javaparser.metamodel.OptionalProperty; import com.github.javaparser.metamodel.OptionalProperty;
import com.github.javaparser.resolution.Resolvable; import com.github.javaparser.resolution.Resolvable;
import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration; import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration;

import java.util.function.Consumer; import java.util.function.Consumer;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.Generated;


/** /**
* A method declaration. "public int abc() {return 1;}" in this example: <code>class X { public int abc() {return 1;} * A method declaration. "public int abc() {return 1;}" in this example: <code>class X { public int abc() {return 1;}
Expand Down
Expand Up @@ -52,24 +52,24 @@
public class ThisExpr extends Expression implements Resolvable<ResolvedTypeDeclaration> { public class ThisExpr extends Expression implements Resolvable<ResolvedTypeDeclaration> {


@OptionalProperty @OptionalProperty
private Expression classExpr; private Name className;


public ThisExpr() { public ThisExpr() {
this(null, null); this(null, null);
} }


@AllFieldsConstructor @AllFieldsConstructor
public ThisExpr(final Expression classExpr) { public ThisExpr(final Name className) {
this(null, classExpr); this(null, className);
} }


/** /**
* This constructor is used by the parser and is considered private. * This constructor is used by the parser and is considered private.
*/ */
@Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
public ThisExpr(TokenRange tokenRange, Expression classExpr) { public ThisExpr(TokenRange tokenRange, Name className) {
super(tokenRange); super(tokenRange);
setClassExpr(classExpr); setClassName(className);
customInitialization(); customInitialization();
} }


Expand All @@ -86,20 +86,20 @@ public <A> void accept(final VoidVisitor<A> v, final A arg) {
} }


@Generated("com.github.javaparser.generator.core.node.PropertyGenerator") @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
public Optional<Expression> getClassExpr() { public Optional<Name> getClassName() {
return Optional.ofNullable(classExpr); return Optional.ofNullable(className);
} }


@Generated("com.github.javaparser.generator.core.node.PropertyGenerator") @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
public ThisExpr setClassExpr(final Expression classExpr) { public ThisExpr setClassName(final Name className) {
if (classExpr == this.classExpr) { if (className == this.className) {
return (ThisExpr) this; return (ThisExpr) this;
} }
notifyPropertyChange(ObservableProperty.CLASS_EXPR, this.classExpr, classExpr); notifyPropertyChange(ObservableProperty.CLASS_NAME, this.className, className);
if (this.classExpr != null) if (this.className != null)
this.classExpr.setParentNode(null); this.className.setParentNode(null);
this.classExpr = classExpr; this.className = className;
setAsParentNodeOf(classExpr); setAsParentNodeOf(className);
return this; return this;
} }


Expand All @@ -108,18 +108,18 @@ public ThisExpr setClassExpr(final Expression classExpr) {
public boolean remove(Node node) { public boolean remove(Node node) {
if (node == null) if (node == null)
return false; return false;
if (classExpr != null) { if (className != null) {
if (node == classExpr) { if (node == className) {
removeClassExpr(); removeClassName();
return true; return true;
} }
} }
return super.remove(node); return super.remove(node);
} }


@Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator") @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
public ThisExpr removeClassExpr() { public ThisExpr removeClassName() {
return setClassExpr((Expression) null); return setClassName((Name) null);
} }


@Override @Override
Expand All @@ -139,9 +139,9 @@ public ThisExprMetaModel getMetaModel() {
public boolean replace(Node node, Node replacementNode) { public boolean replace(Node node, Node replacementNode) {
if (node == null) if (node == null)
return false; return false;
if (classExpr != null) { if (className != null) {
if (node == classExpr) { if (node == className) {
setClassExpr((Expression) replacementNode); setClassName((Name) replacementNode);
return true; return true;
} }
} }
Expand Down
Expand Up @@ -45,6 +45,7 @@ public enum ObservableProperty {
CLASS_BODY(Type.MULTIPLE_REFERENCE), CLASS_BODY(Type.MULTIPLE_REFERENCE),
CLASS_DECLARATION(Type.SINGLE_REFERENCE), CLASS_DECLARATION(Type.SINGLE_REFERENCE),
CLASS_EXPR(Type.SINGLE_REFERENCE), CLASS_EXPR(Type.SINGLE_REFERENCE),
CLASS_NAME(Type.SINGLE_REFERENCE),
COMMENT(Type.SINGLE_REFERENCE), COMMENT(Type.SINGLE_REFERENCE),
COMPARE(Type.SINGLE_REFERENCE), COMPARE(Type.SINGLE_REFERENCE),
COMPONENT_TYPE(Type.SINGLE_REFERENCE), COMPONENT_TYPE(Type.SINGLE_REFERENCE),
Expand Down
Expand Up @@ -598,9 +598,9 @@ public Visitable visit(final SimpleName n, final Object arg) {


@Override @Override
public Visitable visit(final ThisExpr n, final Object arg) { public Visitable visit(final ThisExpr n, final Object arg) {
Expression classExpr = cloneNode(n.getClassExpr(), arg); Name className = cloneNode(n.getClassName(), arg);
Comment comment = cloneNode(n.getComment(), arg); Comment comment = cloneNode(n.getComment(), arg);
ThisExpr r = new ThisExpr(n.getTokenRange().orElse(null), classExpr); ThisExpr r = new ThisExpr(n.getTokenRange().orElse(null), className);
r.setComment(comment); r.setComment(comment);
copyData(n, r); copyData(n, r);
return r; return r;
Expand Down
Expand Up @@ -792,7 +792,7 @@ public Boolean visit(final SimpleName n, final Visitable arg) {
@Override @Override
public Boolean visit(final ThisExpr n, final Visitable arg) { public Boolean visit(final ThisExpr n, final Visitable arg) {
final ThisExpr n2 = (ThisExpr) arg; final ThisExpr n2 = (ThisExpr) arg;
if (!nodeEquals(n.getClassExpr(), n2.getClassExpr())) if (!nodeEquals(n.getClassName(), n2.getClassName()))
return false; return false;
if (!nodeEquals(n.getComment(), n2.getComment())) if (!nodeEquals(n.getComment(), n2.getComment()))
return false; return false;
Expand Down
Expand Up @@ -1550,8 +1550,8 @@ public List<R> visit(final SynchronizedStmt n, final A arg) {
public List<R> visit(final ThisExpr n, final A arg) { public List<R> visit(final ThisExpr n, final A arg) {
List<R> result = new ArrayList<>(); List<R> result = new ArrayList<>();
List<R> tmp; List<R> tmp;
if (n.getClassExpr().isPresent()) { if (n.getClassName().isPresent()) {
tmp = n.getClassExpr().get().accept(this, arg); tmp = n.getClassName().get().accept(this, arg);
if (tmp != null) if (tmp != null)
result.addAll(tmp); result.addAll(tmp);
} }
Expand Down
Expand Up @@ -1471,8 +1471,8 @@ public R visit(final SynchronizedStmt n, final A arg) {
@Override @Override
public R visit(final ThisExpr n, final A arg) { public R visit(final ThisExpr n, final A arg) {
R result; R result;
if (n.getClassExpr().isPresent()) { if (n.getClassName().isPresent()) {
result = n.getClassExpr().get().accept(this, arg); result = n.getClassName().get().accept(this, arg);
if (result != null) if (result != null)
return result; return result;
} }
Expand Down
Expand Up @@ -331,7 +331,7 @@ public Integer visit(final SynchronizedStmt n, final Void arg) {
} }


public Integer visit(final ThisExpr n, final Void arg) { public Integer visit(final ThisExpr n, final Void arg) {
return (n.getClassExpr().isPresent() ? n.getClassExpr().get().accept(this, arg) : 0) * 31 + (n.getComment().isPresent() ? n.getComment().get().accept(this, arg) : 0); return (n.getClassName().isPresent() ? n.getClassName().get().accept(this, arg) : 0) * 31 + (n.getComment().isPresent() ? n.getComment().get().accept(this, arg) : 0);
} }


public Integer visit(final ThrowStmt n, final Void arg) { public Integer visit(final ThrowStmt n, final Void arg) {
Expand Down
Expand Up @@ -876,9 +876,9 @@ public Visitable visit(final SynchronizedStmt n, final A arg) {


@Override @Override
public Visitable visit(final ThisExpr n, final A arg) { public Visitable visit(final ThisExpr n, final A arg) {
Expression classExpr = n.getClassExpr().map(s -> (Expression) s.accept(this, arg)).orElse(null); Name className = n.getClassName().map(s -> (Name) s.accept(this, arg)).orElse(null);
Comment comment = n.getComment().map(s -> (Comment) s.accept(this, arg)).orElse(null); Comment comment = n.getComment().map(s -> (Comment) s.accept(this, arg)).orElse(null);
n.setClassExpr(classExpr); n.setClassName(className);
n.setComment(comment); n.setComment(comment);
return n; return n;
} }
Expand Down
Expand Up @@ -643,7 +643,7 @@ public Boolean visit(final SimpleName n, final Visitable arg) {
@Override @Override
public Boolean visit(final ThisExpr n, final Visitable arg) { public Boolean visit(final ThisExpr n, final Visitable arg) {
final ThisExpr n2 = (ThisExpr) arg; final ThisExpr n2 = (ThisExpr) arg;
if (!nodeEquals(n.getClassExpr(), n2.getClassExpr())) if (!nodeEquals(n.getClassName(), n2.getClassName()))
return false; return false;
return true; return true;
} }
Expand Down
Expand Up @@ -323,7 +323,7 @@ public Integer visit(final SynchronizedStmt n, final Void arg) {
} }


public Integer visit(final ThisExpr n, final Void arg) { public Integer visit(final ThisExpr n, final Void arg) {
return (n.getClassExpr().isPresent() ? n.getClassExpr().get().accept(this, arg) : 0); return (n.getClassName().isPresent() ? n.getClassName().get().accept(this, arg) : 0);
} }


public Integer visit(final ThrowStmt n, final Void arg) { public Integer visit(final ThrowStmt n, final Void arg) {
Expand Down
Expand Up @@ -515,7 +515,7 @@ public void visit(final SynchronizedStmt n, final A arg) {


@Override @Override
public void visit(final ThisExpr n, final A arg) { public void visit(final ThisExpr n, final A arg) {
n.getClassExpr().ifPresent(l -> l.accept(this, arg)); n.getClassName().ifPresent(l -> l.accept(this, arg));
n.getComment().ifPresent(l -> l.accept(this, arg)); n.getComment().ifPresent(l -> l.accept(this, arg));
} }


Expand Down
Expand Up @@ -163,7 +163,7 @@ private static void initializeConstructorParameters() {
singleMemberAnnotationExprMetaModel.getConstructorParameters().add(annotationExprMetaModel.namePropertyMetaModel); singleMemberAnnotationExprMetaModel.getConstructorParameters().add(annotationExprMetaModel.namePropertyMetaModel);
singleMemberAnnotationExprMetaModel.getConstructorParameters().add(singleMemberAnnotationExprMetaModel.memberValuePropertyMetaModel); singleMemberAnnotationExprMetaModel.getConstructorParameters().add(singleMemberAnnotationExprMetaModel.memberValuePropertyMetaModel);
superExprMetaModel.getConstructorParameters().add(superExprMetaModel.classExprPropertyMetaModel); superExprMetaModel.getConstructorParameters().add(superExprMetaModel.classExprPropertyMetaModel);
thisExprMetaModel.getConstructorParameters().add(thisExprMetaModel.classExprPropertyMetaModel); thisExprMetaModel.getConstructorParameters().add(thisExprMetaModel.classNamePropertyMetaModel);
typeExprMetaModel.getConstructorParameters().add(typeExprMetaModel.typePropertyMetaModel); typeExprMetaModel.getConstructorParameters().add(typeExprMetaModel.typePropertyMetaModel);
unaryExprMetaModel.getConstructorParameters().add(unaryExprMetaModel.expressionPropertyMetaModel); unaryExprMetaModel.getConstructorParameters().add(unaryExprMetaModel.expressionPropertyMetaModel);
unaryExprMetaModel.getConstructorParameters().add(unaryExprMetaModel.operatorPropertyMetaModel); unaryExprMetaModel.getConstructorParameters().add(unaryExprMetaModel.operatorPropertyMetaModel);
Expand Down Expand Up @@ -589,8 +589,8 @@ private static void initializePropertyMetaModels() {
singleMemberAnnotationExprMetaModel.getDeclaredPropertyMetaModels().add(singleMemberAnnotationExprMetaModel.memberValuePropertyMetaModel); singleMemberAnnotationExprMetaModel.getDeclaredPropertyMetaModels().add(singleMemberAnnotationExprMetaModel.memberValuePropertyMetaModel);
superExprMetaModel.classExprPropertyMetaModel = new PropertyMetaModel(superExprMetaModel, "classExpr", com.github.javaparser.ast.expr.Expression.class, Optional.of(expressionMetaModel), true, false, false, false); superExprMetaModel.classExprPropertyMetaModel = new PropertyMetaModel(superExprMetaModel, "classExpr", com.github.javaparser.ast.expr.Expression.class, Optional.of(expressionMetaModel), true, false, false, false);
superExprMetaModel.getDeclaredPropertyMetaModels().add(superExprMetaModel.classExprPropertyMetaModel); superExprMetaModel.getDeclaredPropertyMetaModels().add(superExprMetaModel.classExprPropertyMetaModel);
thisExprMetaModel.classExprPropertyMetaModel = new PropertyMetaModel(thisExprMetaModel, "classExpr", com.github.javaparser.ast.expr.Expression.class, Optional.of(expressionMetaModel), true, false, false, false); thisExprMetaModel.classNamePropertyMetaModel = new PropertyMetaModel(thisExprMetaModel, "className", com.github.javaparser.ast.expr.Name.class, Optional.of(nameMetaModel), true, false, false, false);
thisExprMetaModel.getDeclaredPropertyMetaModels().add(thisExprMetaModel.classExprPropertyMetaModel); thisExprMetaModel.getDeclaredPropertyMetaModels().add(thisExprMetaModel.classNamePropertyMetaModel);
typeExprMetaModel.typePropertyMetaModel = new PropertyMetaModel(typeExprMetaModel, "type", com.github.javaparser.ast.type.Type.class, Optional.of(typeMetaModel), false, false, false, false); typeExprMetaModel.typePropertyMetaModel = new PropertyMetaModel(typeExprMetaModel, "type", com.github.javaparser.ast.type.Type.class, Optional.of(typeMetaModel), false, false, false, false);
typeExprMetaModel.getDeclaredPropertyMetaModels().add(typeExprMetaModel.typePropertyMetaModel); typeExprMetaModel.getDeclaredPropertyMetaModels().add(typeExprMetaModel.typePropertyMetaModel);
unaryExprMetaModel.expressionPropertyMetaModel = new PropertyMetaModel(unaryExprMetaModel, "expression", com.github.javaparser.ast.expr.Expression.class, Optional.of(expressionMetaModel), false, false, false, false); unaryExprMetaModel.expressionPropertyMetaModel = new PropertyMetaModel(unaryExprMetaModel, "expression", com.github.javaparser.ast.expr.Expression.class, Optional.of(expressionMetaModel), false, false, false, false);
Expand Down
Expand Up @@ -8,5 +8,5 @@ public class ThisExprMetaModel extends ExpressionMetaModel {
super(superBaseNodeMetaModel, com.github.javaparser.ast.expr.ThisExpr.class, "ThisExpr", "com.github.javaparser.ast.expr", false, false); super(superBaseNodeMetaModel, com.github.javaparser.ast.expr.ThisExpr.class, "ThisExpr", "com.github.javaparser.ast.expr", false, false);
} }


public PropertyMetaModel classExprPropertyMetaModel; public PropertyMetaModel classNamePropertyMetaModel;
} }
Expand Up @@ -479,7 +479,7 @@ private static CsmElement typeArguments() {


concreteSyntaxModelByClass.put(ThisExpr.class, sequence( concreteSyntaxModelByClass.put(ThisExpr.class, sequence(
comment(), comment(),
conditional(ObservableProperty.CLASS_EXPR, IS_PRESENT, sequence(child(CLASS_EXPR), token(GeneratedJavaParserConstants.DOT))), conditional(CLASS_NAME, IS_PRESENT, sequence(child(CLASS_NAME), token(GeneratedJavaParserConstants.DOT))),
token(GeneratedJavaParserConstants.THIS) token(GeneratedJavaParserConstants.THIS)
)); ));


Expand Down
Expand Up @@ -709,8 +709,8 @@ public void visit(final NullLiteralExpr n, final Void arg) {
@Override @Override
public void visit(final ThisExpr n, final Void arg) { public void visit(final ThisExpr n, final Void arg) {
printComment(n.getComment(), arg); printComment(n.getComment(), arg);
if (n.getClassExpr().isPresent()) { if (n.getClassName().isPresent()) {
n.getClassExpr().get().accept(this, arg); n.getClassName().get().accept(this, arg);
printer.print("."); printer.print(".");
} }
printer.print("this"); printer.print("this");
Expand Down
Expand Up @@ -353,4 +353,20 @@ private String makeMessageForParseException(ParseException exception) {
} }
return sb.toString(); return sb.toString();
} }

/**
* Converts a NameExpr or a FieldAccessExpr scope to a Name.
*/
Name scopeToName(Expression scope) {
if (scope.isNameExpr()) {
SimpleName simpleName = scope.asNameExpr().getName();
return new Name(simpleName.getTokenRange().get(), null, simpleName.getIdentifier());
}
if (scope.isFieldAccessExpr()) {
FieldAccessExpr fieldAccessExpr = scope.asFieldAccessExpr();
return new Name(fieldAccessExpr.getTokenRange().get(), scopeToName(fieldAccessExpr.getScope()), fieldAccessExpr.getName().getIdentifier());

}
throw new IllegalStateException("Unexpected expression type: " + scope.getClass().getSimpleName());
}
} }
2 changes: 1 addition & 1 deletion javaparser-core/src/main/javacc/java.jj
Expand Up @@ -1881,7 +1881,7 @@ Expression PrimarySuffixWithoutSuper(Expression scope):
( (
"." "."
( (
"this" { ret = new ThisExpr(range(scope, token()), scope); } "this" { ret = new ThisExpr(range(scope, token()), scopeToName(scope)); }
| |
ret = AllocationExpression(scope) ret = AllocationExpression(scope)
| |
Expand Down
Expand Up @@ -168,9 +168,9 @@ public SymbolReference<ResolvedConstructorDeclaration> solve(ExplicitConstructor


public SymbolReference<ResolvedTypeDeclaration> solve(ThisExpr node) { public SymbolReference<ResolvedTypeDeclaration> solve(ThisExpr node) {
// If 'this' is prefixed by a class eg. MyClass.this // If 'this' is prefixed by a class eg. MyClass.this
if (node.getClassExpr().isPresent()) { if (node.getClassName().isPresent()) {
// Get the class name // Get the class name
String className = node.getClassExpr().get().toString(); String className = node.getClassName().get().asString();
// Attempt to resolve using a typeSolver // Attempt to resolve using a typeSolver
SymbolReference<ResolvedReferenceTypeDeclaration> clazz = typeSolver.tryToSolveType(className); SymbolReference<ResolvedReferenceTypeDeclaration> clazz = typeSolver.tryToSolveType(className);
if (clazz.isSolved()) { if (clazz.isSolved()) {
Expand Down

0 comments on commit 1bf4c06

Please sign in to comment.