aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java5
-rw-r--r--src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java50
-rw-r--r--src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java72
-rw-r--r--src/main/java/org/zwobble/couscous/ast/identifiers/IdentifierPart.java27
-rw-r--r--src/main/java/org/zwobble/couscous/ast/identifiers/Identifiers.java35
-rw-r--r--src/main/java/org/zwobble/couscous/ast/identifiers/TopIdentifier.java20
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java5
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java7
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/Scope.java13
-rw-r--r--src/main/java/org/zwobble/couscous/transforms/DesugarSwitchToIfElse.java1
-rw-r--r--src/main/java/org/zwobble/couscous/util/ExtraLists.java4
-rw-r--r--src/test/java/org/zwobble/couscous/tests/TestIds.java5
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java12
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java12
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java17
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java6
-rw-r--r--src/test/java/org/zwobble/couscous/tests/transforms/DesugarSwitchToIfElseTests.java8
17 files changed, 137 insertions, 162 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
index 4bd432f..a567254 100644
--- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
+++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
@@ -3,7 +3,6 @@ package org.zwobble.couscous.ast;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import org.zwobble.couscous.ast.identifiers.Identifier;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.types.Types;
@@ -41,7 +40,7 @@ public class ClassNodeBuilder {
}
public ClassNodeBuilder addTypeParameter(String name) {
- this.typeParameters.add(formalTypeParameter(Identifiers.forType(this.name.getQualifiedName()), name));
+ this.typeParameters.add(formalTypeParameter(Identifier.forType(this.name.getQualifiedName()), name));
return this;
}
@@ -178,4 +177,4 @@ public class ClassNodeBuilder {
return this.build.apply(this);
}
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java b/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java
deleted file mode 100644
index 407c6da..0000000
--- a/src/main/java/org/zwobble/couscous/ast/identifiers/ExtendedIdentifier.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.zwobble.couscous.ast.identifiers;
-
-import static org.zwobble.couscous.util.ExtraIterables.lazyAppend;
-
-public class ExtendedIdentifier implements Identifier {
- private final Identifier parent;
- private final String part;
- private final IdentifierType type;
-
- ExtendedIdentifier(Identifier parent, String part, IdentifierType type) {
- this.parent = parent;
- this.part = part;
- this.type = type;
- }
-
- @Override
- public Iterable<IdentifierPart> getParts() {
- return lazyAppend(parent.getParts(), new IdentifierPart(part, type));
- }
-
- @Override
- public String toString() {
- return "ExtendedIdentifier(" +
- "parent=" + parent +
- ", part='" + part + '\'' +
- ", type=" + type +
- ')';
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- ExtendedIdentifier that = (ExtendedIdentifier) o;
-
- if (!parent.equals(that.parent)) return false;
- if (!part.equals(that.part)) return false;
- return type == that.type;
-
- }
-
- @Override
- public int hashCode() {
- int result = parent.hashCode();
- result = 31 * result + part.hashCode();
- result = 31 * result + type.hashCode();
- return result;
- }
-}
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java b/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
index 777a0bb..07d7933 100644
--- a/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
+++ b/src/main/java/org/zwobble/couscous/ast/identifiers/Identifier.java
@@ -1,5 +1,73 @@
package org.zwobble.couscous.ast.identifiers;
-public interface Identifier {
- Iterable<IdentifierPart> getParts();
+import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.util.ExtraLists;
+
+import java.util.List;
+
+import static org.zwobble.couscous.util.ExtraLists.list;
+
+public class Identifier {
+ public static final Identifier TOP = new Identifier(list());
+
+ public static Identifier forType(String name) {
+ return TOP.type(name);
+ }
+
+ public static Identifier forType(ScalarType type) {
+ return forType(type.getQualifiedName());
+ }
+
+ private final List<IdentifierPart> parts;
+
+ Identifier(List<IdentifierPart> parts) {
+ this.parts = parts;
+ }
+
+ public Iterable<IdentifierPart> getParts() {
+ return parts;
+ }
+
+ public Identifier type(String name) {
+ return extend(name, IdentifierType.TYPE);
+ }
+
+ public Identifier method(String name) {
+ return extend(name, IdentifierType.METHOD);
+ }
+
+ public Identifier constructor() {
+ return extend("", IdentifierType.CONSTRUCTOR);
+ }
+
+ public Identifier variable(String name) {
+ return extend(name, IdentifierType.VARIABLE);
+ }
+
+ private Identifier extend(String name, IdentifierType type) {
+ return new Identifier(ExtraLists.append(parts, new IdentifierPart(name, type)));
+ }
+
+ @Override
+ public String toString() {
+ return "Identifier(" +
+ "parts=" + parts +
+ ')';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ Identifier that = (Identifier) o;
+
+ return parts.equals(that.parts);
+
+ }
+
+ @Override
+ public int hashCode() {
+ return parts.hashCode();
+ }
}
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/IdentifierPart.java b/src/main/java/org/zwobble/couscous/ast/identifiers/IdentifierPart.java
index 5aedcf0..ef1f83c 100644
--- a/src/main/java/org/zwobble/couscous/ast/identifiers/IdentifierPart.java
+++ b/src/main/java/org/zwobble/couscous/ast/identifiers/IdentifierPart.java
@@ -16,4 +16,31 @@ public class IdentifierPart {
public IdentifierType getType() {
return type;
}
+
+ @Override
+ public String toString() {
+ return "IdentifierPart(" +
+ "name='" + name + '\'' +
+ ", type=" + type +
+ ')';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ IdentifierPart that = (IdentifierPart) o;
+
+ if (!name.equals(that.name)) return false;
+ return type == that.type;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = name.hashCode();
+ result = 31 * result + type.hashCode();
+ return result;
+ }
}
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/Identifiers.java b/src/main/java/org/zwobble/couscous/ast/identifiers/Identifiers.java
deleted file mode 100644
index f104674..0000000
--- a/src/main/java/org/zwobble/couscous/ast/identifiers/Identifiers.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.zwobble.couscous.ast.identifiers;
-
-import org.zwobble.couscous.types.ScalarType;
-
-public class Identifiers {
- public static final Identifier TOP = TopIdentifier.INSTANCE;
-
- public static Identifier type(Identifier identifier, String name) {
- return extend(identifier, name, IdentifierType.TYPE);
- }
-
- public static Identifier method(Identifier identifier, String name) {
- return extend(identifier, name, IdentifierType.METHOD);
- }
-
- public static Identifier constructor(Identifier identifier) {
- return extend(identifier, "", IdentifierType.CONSTRUCTOR);
- }
-
- public static Identifier variable(Identifier identifier, String name) {
- return extend(identifier, name, IdentifierType.VARIABLE);
- }
-
- private static Identifier extend(Identifier identifier, String name, IdentifierType type) {
- return new ExtendedIdentifier(identifier, name, type);
- }
-
- public static Identifier forType(String name) {
- return type(TOP, name);
- }
-
- public static Identifier forType(ScalarType type) {
- return forType(type.getQualifiedName());
- }
-}
diff --git a/src/main/java/org/zwobble/couscous/ast/identifiers/TopIdentifier.java b/src/main/java/org/zwobble/couscous/ast/identifiers/TopIdentifier.java
deleted file mode 100644
index 6f578d2..0000000
--- a/src/main/java/org/zwobble/couscous/ast/identifiers/TopIdentifier.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.zwobble.couscous.ast.identifiers;
-
-import static org.zwobble.couscous.util.ExtraLists.list;
-
-public class TopIdentifier implements Identifier {
- static final Identifier INSTANCE = new TopIdentifier();
-
- private TopIdentifier() {
- }
-
- @Override
- public Iterable<IdentifierPart> getParts() {
- return list();
- }
-
- @Override
- public String toString() {
- return "TOP";
- }
-}
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java
index 014e4ae..61d353f 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java
@@ -5,7 +5,6 @@ import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.zwobble.couscous.ast.MethodSignature;
import org.zwobble.couscous.ast.identifiers.Identifier;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.types.TypeParameter;
@@ -63,8 +62,6 @@ class JavaMethods {
private static Identifier identifierFor(IMethodBinding method) {
// TODO: disambiguate overloads
- return Identifiers.method(
- Identifiers.forType(erasure(typeOf(method.getDeclaringClass()))),
- method.getName());
+ return Identifier.forType(erasure(typeOf(method.getDeclaringClass()))).method(method.getName());
}
}
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
index 37cee36..6e6a51b 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
@@ -3,7 +3,6 @@ package org.zwobble.couscous.frontends.java;
import com.google.common.collect.ImmutableSet;
import org.eclipse.jdt.core.dom.*;
import org.zwobble.couscous.ast.identifiers.Identifier;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
import org.zwobble.couscous.types.*;
import org.zwobble.couscous.types.ParameterizedType;
import org.zwobble.couscous.types.Type;
@@ -66,14 +65,14 @@ public class JavaTypes {
if (typeParameter.getDeclaringClass() == null) {
IMethodBinding method = typeParameter.getDeclaringMethod();
// TODO: disambiguate overloads
- return Identifiers.method(identifierForType(method.getDeclaringClass()), method.getName());
+ return identifierForType(method.getDeclaringClass()).method(method.getName());
} else {
return identifierForType(typeParameter.getDeclaringClass());
}
}
private static Identifier identifierForType(ITypeBinding type) {
- return Identifiers.forType(erasure(typeOf(type)).getQualifiedName());
+ return Identifier.forType(erasure(typeOf(type)).getQualifiedName());
}
static Set<Type> superTypes(TypeDeclaration declaration) {
@@ -144,7 +143,7 @@ public class JavaTypes {
}
private static final ScalarType RAW_ITERATOR = ScalarType.of("java.util.Iterator");
- public static TypeParameter ITERATOR_TYPE_PARAMETER = typeParameter(Identifiers.type(Identifiers.TOP, RAW_ITERATOR.getQualifiedName()), "T");
+ public static TypeParameter ITERATOR_TYPE_PARAMETER = typeParameter(Identifier.TOP.type(RAW_ITERATOR.getQualifiedName()), "T");
public static Type iterator(Type elementType) {
return parameterizedType(RAW_ITERATOR, list(elementType));
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/Scope.java b/src/main/java/org/zwobble/couscous/frontends/java/Scope.java
index 21745c6..ee8be5f 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/Scope.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/Scope.java
@@ -2,7 +2,6 @@ package org.zwobble.couscous.frontends.java;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.identifiers.Identifier;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.util.NaturalNumbers;
@@ -11,7 +10,7 @@ import java.util.*;
public class Scope {
public static Scope create() {
- return new Scope(new HashMap<>(), new HashSet<>(), Identifiers.TOP, NaturalNumbers.INSTANCE.iterator());
+ return new Scope(new HashMap<>(), new HashSet<>(), Identifier.TOP, NaturalNumbers.INSTANCE.iterator());
}
private final Map<String, VariableDeclaration> variablesByKey;
@@ -36,16 +35,16 @@ public class Scope {
}
public Scope enterClass(ScalarType className) {
- return enter(Identifiers.type(identifier, className.getQualifiedName()));
+ return enter(identifier.type(className.getQualifiedName()));
}
public Scope enterConstructor() {
- return enter(Identifiers.constructor(identifier));
+ return enter(identifier.constructor());
}
public Scope enterMethod(String name) {
// TODO: distinguish overloads
- return enter(Identifiers.method(identifier, name));
+ return enter(identifier.method(name));
}
private Scope enter(Identifier newIdentifier) {
@@ -112,10 +111,10 @@ public class Scope {
}
private Identifier generateVariableIdentifier(String name) {
- Identifier identifier = Identifiers.variable(this.identifier, name);
+ Identifier identifier = this.identifier.variable(name);
int index = 0;
while (identifiers.contains(identifier)) {
- identifier = Identifiers.variable(this.identifier, name + "_" + index);
+ identifier = this.identifier.variable(name + "_" + index);
index++;
}
identifiers.add(identifier);
diff --git a/src/main/java/org/zwobble/couscous/transforms/DesugarSwitchToIfElse.java b/src/main/java/org/zwobble/couscous/transforms/DesugarSwitchToIfElse.java
index 3ffaad5..810178b 100644
--- a/src/main/java/org/zwobble/couscous/transforms/DesugarSwitchToIfElse.java
+++ b/src/main/java/org/zwobble/couscous/transforms/DesugarSwitchToIfElse.java
@@ -84,7 +84,6 @@ public class DesugarSwitchToIfElse {
}
private static boolean isEndOfCase(StatementNode statement) {
- // TODO: add attribute onto statement node to detect exit
return statement.type() == NodeTypes.RETURN;
}
}
diff --git a/src/main/java/org/zwobble/couscous/util/ExtraLists.java b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
index d52c099..147fe00 100644
--- a/src/main/java/org/zwobble/couscous/util/ExtraLists.java
+++ b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
@@ -33,8 +33,8 @@ public class ExtraLists {
return concat(list(value), list);
}
- public static <T> List<T> append(List<? extends T> list, T value) {
- return Stream.concat(list.stream(), Stream.of(value)).collect(Collectors.toList());
+ public static <T> List<T> append(Iterable<? extends T> iterable, T value) {
+ return Stream.concat(ExtraIterables.stream(iterable), Stream.of(value)).collect(Collectors.toList());
}
public static <T> List<T> concat(Iterable<? extends T> first, Iterable<? extends T> second) {
diff --git a/src/test/java/org/zwobble/couscous/tests/TestIds.java b/src/test/java/org/zwobble/couscous/tests/TestIds.java
index da3cd09..5a5a3c0 100644
--- a/src/test/java/org/zwobble/couscous/tests/TestIds.java
+++ b/src/test/java/org/zwobble/couscous/tests/TestIds.java
@@ -1,12 +1,11 @@
package org.zwobble.couscous.tests;
import org.zwobble.couscous.ast.identifiers.Identifier;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
public class TestIds {
- public static final Identifier ANY_ID = Identifiers.variable(Identifiers.TOP, "[any id]");
+ public static final Identifier ANY_ID = Identifier.TOP.variable("[any id]");
public static Identifier variable(String name) {
- return Identifiers.variable(ANY_ID, name);
+ return ANY_ID.variable(name);
}
}
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
index 2572f8e..e3dc9ba 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
@@ -2,7 +2,7 @@ package org.zwobble.couscous.tests.backends.csharp;
import org.junit.Test;
import org.zwobble.couscous.ast.*;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
+import org.zwobble.couscous.ast.identifiers.Identifier;
import org.zwobble.couscous.ast.sugar.SwitchNode;
import org.zwobble.couscous.backends.csharp.CsharpSerializer;
import org.zwobble.couscous.tests.TestIds;
@@ -168,7 +168,7 @@ public class CsharpSerializerTests {
list(ScalarType.of("Z")),
list(),
ScalarType.of("Y"),
- signature("y", list(typeParameter(Identifiers.method(Identifiers.forType("X"), "y"), "T")), list(), ScalarType.of("Y"))));
+ signature("y", list(typeParameter(Identifier.forType("X").method("y"), "T")), list(), ScalarType.of("Y"))));
assertEquals("x.y<Z>()", output);
}
@@ -413,8 +413,8 @@ public class CsharpSerializerTests {
@Test
public void methodWithTypeParameters() {
MethodNode methodNode = MethodNode.staticMethod("nothing")
- .typeParameter(formalTypeParameter(Identifiers.method(Identifiers.forType("com.Example.example"), "nothing"), "T"))
- .typeParameter(formalTypeParameter(Identifiers.method(Identifiers.forType("com.Example.example"), "nothing"), "U"))
+ .typeParameter(formalTypeParameter(Identifier.forType("com.Example.example").method("nothing"), "T"))
+ .typeParameter(formalTypeParameter(Identifier.forType("com.Example.example").method("nothing"), "U"))
.returns(ScalarType.of("void"))
.build();
@@ -568,8 +568,8 @@ public class CsharpSerializerTests {
@Test
public void interfaceWithMethodWithTypeParameters() {
MethodNode method = MethodNode.staticMethod("nothing")
- .typeParameter(formalTypeParameter(Identifiers.method(Identifiers.forType("com.Example.example"), "nothing"), "T"))
- .typeParameter(formalTypeParameter(Identifiers.method(Identifiers.forType("com.Example.example"), "nothing"), "U"))
+ .typeParameter(formalTypeParameter(Identifier.forType("com.Example.example").method("nothing"), "T"))
+ .typeParameter(formalTypeParameter(Identifier.forType("com.Example.example").method("nothing"), "U"))
.returns(ScalarType.of("void"))
.build();
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java
index 585508a..e8b391e 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java
@@ -2,7 +2,7 @@ package org.zwobble.couscous.tests.frontends.java;
import org.junit.Test;
import org.zwobble.couscous.ast.*;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
+import org.zwobble.couscous.ast.identifiers.Identifier;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.TypeParameter;
import org.zwobble.couscous.types.Types;
@@ -233,7 +233,7 @@ public class ExpressionReadingTests {
@Test
public void canReadMethodCallsWithZeroExpressionsAsVarargs() {
- TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Arrays"), "asList"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("java.util.Arrays").method("asList"), "T");
assertEquals(
methodCall(
staticReceiver("java.util.Arrays"),
@@ -251,7 +251,7 @@ public class ExpressionReadingTests {
@Test
public void canReadMethodCallsWithMultipleExpressionsAsVarargs() {
- TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Arrays"), "asList"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("java.util.Arrays").method("asList"), "T");
assertEquals(
methodCall(
staticReceiver("java.util.Arrays"),
@@ -269,7 +269,7 @@ public class ExpressionReadingTests {
@Test
public void canReadMethodCallsWithArrayAsVarargs() {
- TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Arrays"), "asList"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("java.util.Arrays").method("asList"), "T");
assertEquals(
methodCall(
staticReceiver("java.util.Arrays"),
@@ -287,7 +287,7 @@ public class ExpressionReadingTests {
@Test
public void canReadGenericStaticMethodCallsWithExplicitTypeParameters() {
- TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Collections"), "emptyList"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("java.util.Collections").method("emptyList"), "T");
assertEquals(
methodCall(
staticReceiver("java.util.Collections"),
@@ -305,7 +305,7 @@ public class ExpressionReadingTests {
@Test
public void canReadGenericStaticMethodCallsWithImplicitTypeParameters() {
- TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Collections"), "emptyList"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("java.util.Collections").method("emptyList"), "T");
assertEquals(
methodCall(
staticReceiver("java.util.Collections"),
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
index acda60c..c6055e7 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
@@ -3,7 +3,6 @@ package org.zwobble.couscous.tests.frontends.java;
import org.junit.Test;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.identifiers.Identifier;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Types;
@@ -104,8 +103,8 @@ public class JavaReaderTests {
MethodNode method = classNode.getMethods().get(0);
- Identifier classIdentifier = Identifiers.forType("com.example.Example");
- Identifier expectedMethodIdentifier = Identifiers.method(classIdentifier, "identity");
+ Identifier classIdentifier = Identifier.forType("com.example.Example");
+ Identifier expectedMethodIdentifier = classIdentifier.method("identity");
assertThat(method.getTypeParameters(), contains(isFormalTypeParameter(expectedMethodIdentifier, "T")));
assertThat(
method.getArguments(),
@@ -215,13 +214,7 @@ public class JavaReaderTests {
@Test
public void canReadTryWithResourceWithoutOtherClauses() {
ScalarType type = ScalarType.of("java.io.ByteArrayOutputStream");
- Identifier identifier = Identifiers.variable(
- Identifiers.method(
- Identifiers.type(Identifiers.TOP, "com.example.Example"),
- "main"
- ),
- "closeable"
- );
+ Identifier identifier = Identifier.TOP.type("com.example.Example").method("main").variable("closeable");
LocalVariableDeclarationNode expectedResource = localVariableDeclaration(identifier, "closeable", type, constructorCall(type, list()));
assertThat(
readStatements("int", "try(java.io.ByteArrayOutputStream closeable = new java.io.ByteArrayOutputStream()) { return 1; }"),
@@ -395,7 +388,7 @@ public class JavaReaderTests {
assertThat(classes, hasSize(1));
ClassNode classNode = (ClassNode) classes.get(0);
assertEquals(ScalarType.of("com.example.Example"), classNode.getName());
- assertEquals(list(formalTypeParameter(Identifiers.forType("com.example.Example"), "T")), classNode.getTypeParameters());
+ assertEquals(list(formalTypeParameter(Identifier.forType("com.example.Example"), "T")), classNode.getTypeParameters());
}
@Test
@@ -406,7 +399,7 @@ public class JavaReaderTests {
assertThat(classes, hasSize(1));
InterfaceNode classNode = (InterfaceNode) classes.get(0);
assertEquals(ScalarType.of("com.example.Example"), classNode.getName());
- assertEquals(list(formalTypeParameter(Identifiers.forType("com.example.Example"), "T")), classNode.getTypeParameters());
+ assertEquals(list(formalTypeParameter(Identifier.forType("com.example.Example"), "T")), classNode.getTypeParameters());
}
@Test
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java
index 75c3594..f903eeb 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java
@@ -1,7 +1,7 @@
package org.zwobble.couscous.tests.frontends.java;
import org.junit.Test;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
+import org.zwobble.couscous.ast.identifiers.Identifier;
import org.zwobble.couscous.frontends.java.JavaTypes;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.TypeParameter;
@@ -24,7 +24,7 @@ public class JavaTypesTests {
@Test
public void bindingTypeToGenericTypeParameterReturnsBoundTypeParameter() {
- TypeParameter typeParameter = typeParameter(Identifiers.forType("List"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("List"), "T");
assertEquals(
boundTypeParameter(typeParameter, INT_TYPE),
JavaTypes.bind(typeParameter, INT_TYPE));
@@ -33,7 +33,7 @@ public class JavaTypesTests {
@Test
public void bindingTypeToParameterizedTypeBindsParameters() {
ScalarType rawList = ScalarType.of("List");
- TypeParameter typeParameter = typeParameter(Identifiers.forType("List"), "T");
+ TypeParameter typeParameter = typeParameter(Identifier.forType("List"), "T");
assertEquals(
parameterizedType(rawList, list(boundTypeParameter(typeParameter, INT_TYPE))),
JavaTypes.bind(
diff --git a/src/test/java/org/zwobble/couscous/tests/transforms/DesugarSwitchToIfElseTests.java b/src/test/java/org/zwobble/couscous/tests/transforms/DesugarSwitchToIfElseTests.java
index 9e458e7..f1cb2b4 100644
--- a/src/test/java/org/zwobble/couscous/tests/transforms/DesugarSwitchToIfElseTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/transforms/DesugarSwitchToIfElseTests.java
@@ -3,7 +3,7 @@ package org.zwobble.couscous.tests.transforms;
import org.junit.Test;
import org.zwobble.couscous.ast.Operations;
import org.zwobble.couscous.ast.VariableDeclaration;
-import org.zwobble.couscous.ast.identifiers.Identifiers;
+import org.zwobble.couscous.ast.identifiers.Identifier;
import org.zwobble.couscous.ast.sugar.SwitchNode;
import org.zwobble.couscous.frontends.java.Scope;
import org.zwobble.couscous.transforms.DesugarSwitchToIfElse;
@@ -24,7 +24,7 @@ public class DesugarSwitchToIfElseTests {
@Test
public void switchStatementWithoutFallThroughIsReadAsIfElseStatement() {
VariableDeclaration tmp = var(
- Identifiers.variable(Identifiers.TOP, "_couscous_tmp_0"),
+ Identifier.TOP.variable("_couscous_tmp_0"),
"_couscous_tmp_0",
Types.STRING
);
@@ -62,7 +62,7 @@ public class DesugarSwitchToIfElseTests {
@Test
public void switchStatementWithoutDefaultIsReadAsIfStatementWithoutElseStatement() {
VariableDeclaration tmp = var(
- Identifiers.variable(Identifiers.TOP, "_couscous_tmp_0"),
+ Identifier.TOP.variable("_couscous_tmp_0"),
"_couscous_tmp_0",
Types.STRING
);
@@ -90,7 +90,7 @@ public class DesugarSwitchToIfElseTests {
@Test
public void casesCanFallthrough() {
VariableDeclaration tmp = var(
- Identifiers.variable(Identifiers.TOP, "_couscous_tmp_0"),
+ Identifier.TOP.variable("_couscous_tmp_0"),
"_couscous_tmp_0",
Types.STRING
);