aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-02 18:16:29 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-03 18:49:37 +0000
commitac3615f1f8c94d636dcc20bc706db2d208851e74 (patch)
treeb17dfaf6e38a5ce4cef32508197a1051c1499257 /src/main/java
parent7576a7a0afa1bbb6adf9c8be0ad422d99cab4293 (diff)
Throw exception if class with captures has static constructor
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNode.java2
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java7
2 files changed, 6 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java
index 4cdb993..bdb3499 100644
--- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java
@@ -31,7 +31,7 @@ public class ClassNode implements TypeNode {
private final ConstructorNode constructor;
private final List<MethodNode> methods;
- private ClassNode(
+ public ClassNode(
TypeName name,
Set<TypeName> superTypes,
List<FieldDeclarationNode> fields,
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 d3a763b..a071127 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -220,11 +220,14 @@ public class JavaReader {
classNode.getFields(),
captureFields));
- ClassNode generatedClass = ClassNode.declareClass(
+ if (!classNode.getStaticConstructor().isEmpty()) {
+ throw new RuntimeException("Class has unexpected static constructor");
+ }
+
+ ClassNode generatedClass = new ClassNode(
classNode.getName(),
classNode.getSuperTypes(),
fields,
- // TODO: handle static constructor (or codify that this is a case that never needs handling)
list(),
buildConstructor(scope, classNode.getName(), capturedVariables, classNode.getConstructor()),
eagerMap(classNode.getMethods(), method ->