diff --git a/src/main/java/stanhebben/zenscript/type/ZenType.java b/src/main/java/stanhebben/zenscript/type/ZenType.java index 8b1ae3a..722a27d 100644 --- a/src/main/java/stanhebben/zenscript/type/ZenType.java +++ b/src/main/java/stanhebben/zenscript/type/ZenType.java @@ -194,6 +194,10 @@ public static ZenType read(ZenTokener parser, IEnvironmentGlobal environment) { base = new ZenTypeArrayList(read(parser, environment)); parser.required(ZenTokener.T_SQBRCLOSE, "] expected"); break; + case ZenTokener.T_BROPEN: + base = read(parser, environment); + parser.required(ZenTokener.T_BRCLOSE, ") expected"); + break; default: throw new ParseException(next, "Unknown type: " + next.getValue()); } diff --git a/src/main/java/stanhebben/zenscript/type/ZenTypeFunction.java b/src/main/java/stanhebben/zenscript/type/ZenTypeFunction.java index b2c68df..94ec44c 100644 --- a/src/main/java/stanhebben/zenscript/type/ZenTypeFunction.java +++ b/src/main/java/stanhebben/zenscript/type/ZenTypeFunction.java @@ -28,28 +28,18 @@ public ZenTypeFunction(ZenType returnType, List argument for(int i = 0; i < argumentTypes.length; i++) { argumentTypes[i] = arguments.get(i).getType(); } - - StringBuilder nameBuilder = new StringBuilder(); - nameBuilder.append("function("); - boolean first = true; - for(ZenType type : argumentTypes) { - if(first) { - first = false; - } else { - nameBuilder.append(','); - } - nameBuilder.append(type.getName()); - } - nameBuilder.append(returnType.getName()); - name = nameBuilder.toString(); + name = makeName(); } public ZenTypeFunction(ZenType returnType, ZenType[] argumentTypes) { this.returnType = returnType; this.argumentTypes = argumentTypes; - - StringBuilder nameBuilder = new StringBuilder(); - nameBuilder.append("function("); + this.name = makeName(); + } + + private String makeName() { + StringBuilder nameBuilder = new StringBuilder() + .append("(function("); boolean first = true; for(ZenType type : argumentTypes) { if(first) { @@ -59,9 +49,10 @@ public ZenTypeFunction(ZenType returnType, ZenType[] argumentTypes) { } nameBuilder.append(type.getName()); } - nameBuilder.append(')'); - nameBuilder.append(returnType.getName()); - name = nameBuilder.toString(); + nameBuilder.append(')') + .append(returnType.getName()) + .append(')'); + return nameBuilder.toString(); } @Override @@ -227,4 +218,4 @@ public ZenType[] getArgumentTypes() { public String getNameForInterfaceSignature() { return ZenTypeFunctionCallable.makeInterfaceName(returnType, argumentTypes); } -} \ No newline at end of file +}