diff --git a/spaghetti-gradle-example/app/src/main/haxe/prezi/test/client/Client.hx b/spaghetti-gradle-example/app/src/main/haxe/prezi/test/client/Client.hx index 2d27b8a56..58ebaf193 100644 --- a/spaghetti-gradle-example/app/src/main/haxe/prezi/test/client/Client.hx +++ b/spaghetti-gradle-example/app/src/main/haxe/prezi/test/client/Client.hx @@ -26,8 +26,8 @@ class Client { }); trace("TestStuff.doSomething(): " + testStuff.doSomething("pre", "text", "pos")); - if (untyped __js__("typeof(document)") != "undefined") { - var canvas = untyped __js__("document.getElementById('canvas')"); + if (js.Syntax.code("typeof(document)") != "undefined") { + var canvas = js.Syntax.code("document.getElementById('canvas')"); testStuff.drawSomething(canvas); } diff --git a/spaghetti-haxe-support/src/integTest/module/src/spaghetti/test/TestModule.hx b/spaghetti-haxe-support/src/integTest/module/src/spaghetti/test/TestModule.hx index e2183f671..686d65b6c 100644 --- a/spaghetti-haxe-support/src/integTest/module/src/spaghetti/test/TestModule.hx +++ b/spaghetti-haxe-support/src/integTest/module/src/spaghetti/test/TestModule.hx @@ -52,6 +52,6 @@ class TestModule { } public static function getExternalDependencyVersion(): String { - return untyped __js__('libWithVersion.version'); + return js.Syntax.code('libWithVersion.version'); } } diff --git a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitor.groovy b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitor.groovy index 0608ed879..0d0cb99b9 100644 --- a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitor.groovy +++ b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitor.groovy @@ -21,7 +21,7 @@ class HaxeModuleAccessorGeneratorVisitor extends AbstractHaxeGeneratorVisitor { return \ """@:final class ${node.alias} { - static var __module:Dynamic = untyped __js__('${GeneratorUtils.createModuleAccessor(node.name, format)}'); + static var __module:Dynamic = js.Syntax.code('${GeneratorUtils.createModuleAccessor(node.name, format)}'); ${node.methods*.accept(new MethodVisitor(node)).join("")} } diff --git a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/impl/HaxeModuleProxyGeneratorVisitor.groovy b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/impl/HaxeModuleProxyGeneratorVisitor.groovy index 4320ccc2a..f1fb8244e 100644 --- a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/impl/HaxeModuleProxyGeneratorVisitor.groovy +++ b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/impl/HaxeModuleProxyGeneratorVisitor.groovy @@ -14,12 +14,14 @@ class HaxeModuleProxyGeneratorVisitor extends AbstractHaxeGeneratorVisitor { String visitModuleNode(ModuleNode node) { return \ """@:final class __${node.alias}Proxy { - public function new() {} + public var ${node.alias}: __${node.alias}Proxy; + public function new() { + ${node.alias} = this; + } ${ node.methods*.accept(new MethodVisitor(node)).join("") + node.accept(new QualifiedConstVisitor(node)) + - node.accept(new QualifiedEnumVisitor(node)) + - "\tpublic var ${node.alias} = this;\n" + node.accept(new QualifiedEnumVisitor(node)) }} """ } diff --git a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/consts/HaxeDependentConstGeneratorVisitor.groovy b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/consts/HaxeDependentConstGeneratorVisitor.groovy index 8f635583b..cc4db7b2a 100644 --- a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/consts/HaxeDependentConstGeneratorVisitor.groovy +++ b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/consts/HaxeDependentConstGeneratorVisitor.groovy @@ -38,7 +38,7 @@ ${node.entries*.accept(new ConstEntryVisitor(node.name)).join("")} String value = HaxeUtils.toPrimitiveString(node.value) // TODO [knuton] Enable after migratory period // String moduleAccessor = GeneratorUtils.createModuleAccessor(foreignModuleName, format) - // String value = "untyped __js__('${moduleAccessor}[\"${constName}\"][\"${node.name}\"]')" + // String value = "js.Syntax.code('${moduleAccessor}[\"${constName}\"][\"${node.name}\"]')" return "\tpublic static inline var ${node.name}:${type} = ${value};\n" } } diff --git a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeDependentEnumGeneratorVisitor.groovy b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeDependentEnumGeneratorVisitor.groovy index 7916eed6a..e1afc99ce 100644 --- a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeDependentEnumGeneratorVisitor.groovy +++ b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeDependentEnumGeneratorVisitor.groovy @@ -23,7 +23,7 @@ class HaxeDependentEnumGeneratorVisitor extends HaxeEnumGeneratorVisitor { return new HaxeEnumGeneratorVisitor.EnumValueVisitor(enumName) { @Override String generateValueExpression(EnumValueNode node) { - return "untyped __js__('${GeneratorUtils.createModuleAccessor(foreignModuleName, format)}[\"${enumName}\"][\"${node.name}\"]')" + return "js.Syntax.code('${GeneratorUtils.createModuleAccessor(foreignModuleName, format)}[\"${enumName}\"][\"${node.name}\"]')" } } } diff --git a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitor.groovy b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitor.groovy index dbf68731c..683a67204 100644 --- a/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitor.groovy +++ b/spaghetti-haxe-support/src/main/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitor.groovy @@ -11,13 +11,15 @@ class HaxeEnumGeneratorVisitor extends StringModuleVisitorBase { def enumName = node.name return \ -"""abstract ${enumName}(Int) { +""" +@:runtimeValue +enum abstract ${enumName}(Int) { ${node.values*.accept(createEnumValueVisitor(node.name)).join("\n")} static var _values = { #if js var thisValue = ${enumName}; - ${node.values.collect { entry -> "untyped __js__(\"thisValue[thisValue.${entry.name}] = '${entry.name}'\");" }.join("\n\t\t")} + ${node.values.collect { entry -> "js.Syntax.code(\"thisValue[thisValue.${entry.name}] = '${entry.name}'\");" }.join("\n\t\t")} #end [${node.values.collect { entry -> "Std.string(${entry.name}) => ${entry.name}" }.join(", ")}]; } diff --git a/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitorTest.groovy b/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitorTest.groovy index 299b404cf..e2e0e8eaa 100644 --- a/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitorTest.groovy +++ b/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/access/HaxeModuleAccessorGeneratorVisitorTest.groovy @@ -33,7 +33,7 @@ module com.example.test { expect: result == """@:final class TestModule { - static var __module:Dynamic = untyped __js__('Spaghetti["dependencies"]["com.example.test"]["module"]'); + static var __module:Dynamic = js.Syntax.code('Spaghetti["dependencies"]["com.example.test"]["module"]'); /** * Initializes module. diff --git a/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitorTest.groovy b/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitorTest.groovy index 28c006e88..1b87347fc 100644 --- a/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitorTest.groovy +++ b/spaghetti-haxe-support/src/test/groovy/com/prezi/spaghetti/haxe/type/enums/HaxeEnumGeneratorVisitorTest.groovy @@ -28,9 +28,9 @@ class HaxeEnumGeneratorVisitorTest extends EnumGeneratorSpecification { expect: result == expectedWith( - "untyped __js__('Spaghetti[\"dependencies\"][\"test\"][\"MyEnum\"][\"ALMA\"]')", - "untyped __js__('Spaghetti[\"dependencies\"][\"test\"][\"MyEnum\"][\"BELA\"]')", - "untyped __js__('Spaghetti[\"dependencies\"][\"test\"][\"MyEnum\"][\"GEZA\"]')") + "js.Syntax.code('Spaghetti[\"dependencies\"][\"test\"][\"MyEnum\"][\"ALMA\"]')", + "js.Syntax.code('Spaghetti[\"dependencies\"][\"test\"][\"MyEnum\"][\"BELA\"]')", + "js.Syntax.code('Spaghetti[\"dependencies\"][\"test\"][\"MyEnum\"][\"GEZA\"]')") } def "generate dependent definition for wrapperless format"() { @@ -38,9 +38,9 @@ class HaxeEnumGeneratorVisitorTest extends EnumGeneratorSpecification { expect: result == expectedWith( - "untyped __js__('Spaghetti[\"dependencies\"][\"test\"][\"module\"][\"MyEnum\"][\"ALMA\"]')", - "untyped __js__('Spaghetti[\"dependencies\"][\"test\"][\"module\"][\"MyEnum\"][\"BELA\"]')", - "untyped __js__('Spaghetti[\"dependencies\"][\"test\"][\"module\"][\"MyEnum\"][\"GEZA\"]')") + "js.Syntax.code('Spaghetti[\"dependencies\"][\"test\"][\"module\"][\"MyEnum\"][\"ALMA\"]')", + "js.Syntax.code('Spaghetti[\"dependencies\"][\"test\"][\"module\"][\"MyEnum\"][\"BELA\"]')", + "js.Syntax.code('Spaghetti[\"dependencies\"][\"test\"][\"module\"][\"MyEnum\"][\"GEZA\"]')") } private static String expectedWith(String first, String second, String third) { @@ -56,9 +56,9 @@ class HaxeEnumGeneratorVisitorTest extends EnumGeneratorSpecification { static var _values = { #if js var thisValue = MyEnum; - untyped __js__("thisValue[thisValue.ALMA] = 'ALMA'"); - untyped __js__("thisValue[thisValue.BELA] = 'BELA'"); - untyped __js__("thisValue[thisValue.GEZA] = 'GEZA'"); + js.Syntax.code("thisValue[thisValue.ALMA] = 'ALMA'"); + js.Syntax.code("thisValue[thisValue.BELA] = 'BELA'"); + js.Syntax.code("thisValue[thisValue.GEZA] = 'GEZA'"); #end [Std.string(ALMA) => ALMA, Std.string(BELA) => BELA, Std.string(GEZA) => GEZA]; }