diff options
Diffstat (limited to 'javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/FieldAccessContext.java')
-rw-r--r-- | javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/FieldAccessContext.java | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/FieldAccessContext.java b/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/FieldAccessContext.java deleted file mode 100644 index 85b30481f..000000000 --- a/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/FieldAccessContext.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2016 Federico Tomassetti - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.github.javaparser.symbolsolver.javaparsermodel.contexts; - -import com.github.javaparser.ast.expr.Expression; -import com.github.javaparser.ast.expr.FieldAccessExpr; -import com.github.javaparser.ast.expr.ThisExpr; -import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; -import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory; -import com.github.javaparser.symbolsolver.model.declarations.MethodDeclaration; -import com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration; -import com.github.javaparser.symbolsolver.model.declarations.ValueDeclaration; -import com.github.javaparser.symbolsolver.model.resolution.SymbolReference; -import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; -import com.github.javaparser.symbolsolver.model.resolution.Value; -import com.github.javaparser.symbolsolver.model.typesystem.PrimitiveType; -import com.github.javaparser.symbolsolver.model.typesystem.Type; -import com.github.javaparser.symbolsolver.resolution.SymbolSolver; - -import java.util.List; -import java.util.Optional; - -import static com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode; - -/** - * @author Federico Tomassetti - */ -public class FieldAccessContext extends AbstractJavaParserContext<FieldAccessExpr> { - - private static final String ARRAY_LENGTH_FIELD_NAME = "length"; - - public FieldAccessContext(FieldAccessExpr wrappedNode, TypeSolver typeSolver) { - super(wrappedNode, typeSolver); - } - - @Override - public SymbolReference<? extends ValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { - if (wrappedNode.getField().toString().equals(name)) { - if (wrappedNode.getScope() instanceof ThisExpr) { - Type typeOfThis = JavaParserFacade.get(typeSolver).getTypeOfThisIn(wrappedNode); - return new SymbolSolver(typeSolver).solveSymbolInType(typeOfThis.asReferenceType().getTypeDeclaration(), name); - } - } - return JavaParserFactory.getContext(getParentNode(wrappedNode), typeSolver).solveSymbol(name, typeSolver); - } - - @Override - public SymbolReference<TypeDeclaration> solveType(String name, TypeSolver typeSolver) { - return JavaParserFactory.getContext(getParentNode(wrappedNode), typeSolver).solveType(name, typeSolver); - } - - @Override - public SymbolReference<MethodDeclaration> solveMethod(String name, List<Type> parameterTypes, boolean staticOnly, TypeSolver typeSolver) { - return JavaParserFactory.getContext(getParentNode(wrappedNode), typeSolver).solveMethod(name, parameterTypes, false, typeSolver); - } - - @Override - public Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { - Expression scope = wrappedNode.getScope(); - if (wrappedNode.getField().toString().equals(name)) { - Type typeOfScope = JavaParserFacade.get(typeSolver).getType(scope); - if (typeOfScope.isArray() && name.equals(ARRAY_LENGTH_FIELD_NAME)) { - return Optional.of(new Value(PrimitiveType.INT, ARRAY_LENGTH_FIELD_NAME)); - } - if (typeOfScope.isReferenceType()) { - Optional<Type> typeUsage = typeOfScope.asReferenceType().getFieldType(name); - if (typeUsage.isPresent()) { - return Optional.of(new Value(typeUsage.get(), name)); - } else { - return Optional.empty(); - } - } else { - return Optional.empty(); - } - } else { - return getParent().solveSymbolAsValue(name, typeSolver); - } - } -} |