diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-02 18:16:29 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-03 18:49:37 +0000 |
| commit | ac3615f1f8c94d636dcc20bc706db2d208851e74 (patch) | |
| tree | b17dfaf6e38a5ce4cef32508197a1051c1499257 /src/main/java | |
| parent | 7576a7a0afa1bbb6adf9c8be0ad422d99cab4293 (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.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 7 |
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 -> |
