aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-06 16:46:34 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-06 16:46:34 +0000
commit9dbf7ce22b7735e644d964437313a34229800e57 (patch)
treed168117c31109cf1d49ab27dc8f0f1fba6608770 /src
parent651c531a85d23fb88cc810ac5cdd92f80f1c8a3a (diff)
Read return type of method once
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
index 35ed03e..2067381 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -288,8 +288,10 @@ public class JavaReader {
Scope scope = outerScope.enterMethod(method.getName().getIdentifier());
List<FormalArgumentNode> formalArguments = readFormalArguments(scope, method);
- List<StatementNode> body = readBody(scope, method);
List<AnnotationNode> annotations = readAnnotations(method);
+ Optional<TypeName> returnType = Optional.ofNullable(method.getReturnType2())
+ .map(JavaTypes::typeOf);
+ List<StatementNode> body = readBody(scope, method, returnType);
if (method.isConstructor()) {
return constructor(
@@ -301,7 +303,7 @@ public class JavaReader {
Modifier.isStatic(method.getModifiers()),
method.getName().getIdentifier(),
formalArguments,
- typeOf(method.getReturnType2()),
+ returnType.get(),
body);
}
}
@@ -320,12 +322,9 @@ public class JavaReader {
return eagerMap(parameters, parameter -> JavaVariableDeclarationReader.read(scope, parameter));
}
- private List<StatementNode> readBody(Scope scope, MethodDeclaration method) {
+ private List<StatementNode> readBody(Scope scope, MethodDeclaration method, Optional<TypeName> returnType) {
@SuppressWarnings("unchecked")
List<Statement> statements = method.getBody().statements();
- Optional<TypeName> returnType = Optional.ofNullable(method.getReturnType2())
- .map(Type::resolveBinding)
- .map(JavaTypes::typeOf);
return readStatements(scope, statements, returnType);
}