Skip to content

Commit

Permalink
issue1154: move the resolve methods in Node
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Sep 30, 2017
1 parent 098b467 commit 06b8ce0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 10 deletions.
14 changes: 14 additions & 0 deletions javaparser-core/src/main/java/com/github/javaparser/ast/Node.java
Expand Up @@ -41,6 +41,7 @@
import com.github.javaparser.metamodel.PropertyMetaModel; import com.github.javaparser.metamodel.PropertyMetaModel;
import com.github.javaparser.printer.PrettyPrinter; import com.github.javaparser.printer.PrettyPrinter;
import com.github.javaparser.printer.PrettyPrinterConfiguration; import com.github.javaparser.printer.PrettyPrinterConfiguration;
import com.github.javaparser.resolution.SymbolResolver;


import javax.annotation.Generated; import javax.annotation.Generated;
import java.util.*; import java.util.*;
Expand Down Expand Up @@ -663,4 +664,17 @@ public Optional<CompilationUnit> findCompilationUnit() {
} }
return Optional.empty(); return Optional.empty();
} }

protected SymbolResolver getSymbolResolver() {
return findCompilationUnit().map(cu -> {
SymbolResolver symbolResolver = this.getData(SYMBOL_RESOLVER_KEY);
if (symbolResolver == null) {
throw new IllegalStateException("Symbol resolution not configured");
}
return symbolResolver;
}).orElseThrow(() -> new IllegalStateException("The node is not inserted in a CompilationUnit"));
}

// We need to expose it because we will need to use it to inject the SymbolSolver
public static final DataKey<SymbolResolver> SYMBOL_RESOLVER_KEY = new DataKey<SymbolResolver>() { };
} }
Expand Up @@ -37,6 +37,8 @@
import com.github.javaparser.resolution.types.ResolvedType; import com.github.javaparser.resolution.types.ResolvedType;


import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Supplier;

import static com.github.javaparser.utils.CodeGenerationUtils.f; import static com.github.javaparser.utils.CodeGenerationUtils.f;


/** /**
Expand Down Expand Up @@ -294,13 +296,4 @@ public void ifVoidType(Consumer<VoidType> action) {
public void ifWildcardType(Consumer<WildcardType> action) { public void ifWildcardType(Consumer<WildcardType> action) {
} }


protected SymbolResolver getSymbolResolver() {
SymbolResolver symbolResolver = this.getData(SYMBOL_RESOLVER_KEY);
if (symbolResolver == null) {
throw new IllegalStateException("Symbol resolution not configured");
}
return symbolResolver;
}

private static final DataKey<SymbolResolver> SYMBOL_RESOLVER_KEY = new DataKey<SymbolResolver>() { };
} }
Expand Up @@ -33,6 +33,7 @@
import com.github.javaparser.metamodel.JavaParserMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel;
import javax.annotation.Generated; import javax.annotation.Generated;
import com.github.javaparser.TokenRange; import com.github.javaparser.TokenRange;
import com.github.javaparser.resolution.types.ResolvedReferenceType;
import com.github.javaparser.resolution.types.ResolvedType; import com.github.javaparser.resolution.types.ResolvedType;
import com.github.javaparser.resolution.types.ResolvedUnionType; import com.github.javaparser.resolution.types.ResolvedUnionType;


Expand Down Expand Up @@ -131,6 +132,6 @@ public void ifUnknownType(Consumer<UnknownType> action) {


@Override @Override
public ResolvedType resolve() { public ResolvedType resolve() {
throw new UnsupportedOperationException(); return getSymbolResolver().resolve(this, ResolvedReferenceType.class);
} }
} }

0 comments on commit 06b8ce0

Please sign in to comment.