aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-06 17:11:19 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-06 17:11:19 +0000
commita063cdcec0ecfe449a22f0134dc559a40583fc09 (patch)
tree5514f8fe1af64f15c5a60efc7a2a0048083dfcaf /src/main/java/org/zwobble/couscous/backends/python
parent9dbf7ce22b7735e644d964437313a34229800e57 (diff)
Move naming code out of Python backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
index 086b3a0..d7e56aa 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
@@ -1,6 +1,5 @@
package org.zwobble.couscous.backends.python;
-import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
@@ -10,6 +9,7 @@ import org.zwobble.couscous.ast.structure.NodeStructure;
import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
import org.zwobble.couscous.ast.visitors.NodeMapperWithDefault;
import org.zwobble.couscous.ast.visitors.StatementNodeMapper;
+import org.zwobble.couscous.backends.Names;
import org.zwobble.couscous.backends.python.ast.*;
import org.zwobble.couscous.values.*;
@@ -161,7 +161,7 @@ public class PythonCodeGenerator {
method.isStatic() ? Collections.<String>emptyList() : list("self"),
explicitArgumentNames);
List<PythonStatementNode> pythonBody = generateStatements(method.getBody());
- return pythonFunctionDefinition(toName(method.signature()), ImmutableList.copyOf(argumentNames), new PythonBlock(pythonBody));
+ return pythonFunctionDefinition(Names.toUniqueName(method.signature()), ImmutableList.copyOf(argumentNames), new PythonBlock(pythonBody));
}
private static List<PythonStatementNode> generateStatements(List<StatementNode> statements) {
@@ -252,7 +252,7 @@ public class PythonCodeGenerator {
List<PythonExpressionNode> arguments = generateExpressions(methodCall.getArguments());
return getPrimitiveMethod(methodCall, receiver, arguments)
- .orElseGet(() -> pythonCall(pythonAttributeAccess(receiver, toName(methodCall.signature())), arguments));
+ .orElseGet(() -> pythonCall(pythonAttributeAccess(receiver, Names.toUniqueName(methodCall.signature())), arguments));
}
private Optional<PythonExpressionNode> getPrimitiveMethod(
@@ -346,10 +346,4 @@ public class PythonCodeGenerator {
private static PythonVariableReferenceNode typeReference(TypeName className) {
return pythonVariableReference(className.getSimpleName());
}
-
- public static String toName(MethodSignature signature) {
- return Joiner.on("__").join(Iterables.concat(
- list(signature.getName()),
- transform(signature.getArguments(), argument -> argument.getQualifiedName().replace('.', '_'))));
- }
} \ No newline at end of file