From ac3615f1f8c94d636dcc20bc706db2d208851e74 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 2 Mar 2016 18:16:29 +0000 Subject: Throw exception if class with captures has static constructor --- src/main/java/org/zwobble/couscous/ast/ClassNode.java | 2 +- src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/main/java') 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 methods; - private ClassNode( + public ClassNode( TypeName name, Set superTypes, List 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 -> -- cgit v1.2.3