diff --git a/org.lflang/src/org/lflang/federated/extensions/TSExtension.java b/org.lflang/src/org/lflang/federated/extensions/TSExtension.java index 95b9dc2796..e438b1b866 100644 --- a/org.lflang/src/org/lflang/federated/extensions/TSExtension.java +++ b/org.lflang/src/org/lflang/federated/extensions/TSExtension.java @@ -117,7 +117,7 @@ public String generatePreamble(FederateInstance federate, FedFileConfig fileConf .collect(Collectors.joining(",")), federate.id, minOutputDelay == null ? "undefined" - : "%s".formatted(new TSTypes().getTargetTimeExpr(minOutputDelay)), + : "%s".formatted(TSTypes.getInstance().getTargetTimeExpr(minOutputDelay)), federate.networkMessageActions .stream() .map(Variable::getName) diff --git a/org.lflang/src/org/lflang/generator/ts/TSConstructorGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSConstructorGenerator.kt index c65cd157c5..0075950a1f 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSConstructorGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSConstructorGenerator.kt @@ -23,7 +23,7 @@ class TSConstructorGenerator( ) { private fun initializeParameter(p: Parameter): String = - "${p.name}: ${TSTypes.getTargetType(p)} = ${TSTypes.getTargetInitializer(p)}" + "${p.name}: ${TSTypes.getInstance().getTargetType(p)} = ${TSTypes.getInstance().getTargetInitializer(p)}" private fun generateConstructorArguments(reactor: Reactor): String { val arguments = StringJoiner(", \n") diff --git a/org.lflang/src/org/lflang/generator/ts/TSDelayBodyGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSDelayBodyGenerator.kt index b0a011d042..61aac6750e 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSDelayBodyGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSDelayBodyGenerator.kt @@ -16,7 +16,7 @@ object TSDelayBodyGenerator : DelayBodyGenerator { */ private fun getActionType(action: Action): String { return if (action.type != null) { - TSTypes.getTargetType(action.type) + TSTypes.getInstance().getTargetType(action.type) } else { "Present" } diff --git a/org.lflang/src/org/lflang/generator/ts/TSExtensions.kt b/org.lflang/src/org/lflang/generator/ts/TSExtensions.kt index 4ed12daa13..a28e462921 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSExtensions.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSExtensions.kt @@ -39,7 +39,7 @@ fun WidthSpec.toTSCode(): String = terms.joinToString(" + ") { * @return The TS type. */ val Port.tsPortType: String - get() = type?.let { TSTypes.getTargetType(it) } ?: "Present" + get() = type?.let { TSTypes.getInstance().getTargetType(it) } ?: "Present" /** * Return a TS type for the specified action. @@ -48,7 +48,7 @@ val Port.tsPortType: String * @return The TS type. */ val Action.tsActionType: String - get() = type?.let { TSTypes.getTargetType(it) } ?: "Present" + get() = type?.let { TSTypes.getInstance().getTargetType(it) } ?: "Present" -fun Expression.toTsTime(): String = TSTypes.getTargetTimeExpr(this) -fun TimeValue.toTsTime(): String = TSTypes.getTargetTimeExpr(this) +fun Expression.toTsTime(): String = TSTypes.getInstance().getTargetTimeExpr(this) +fun TimeValue.toTsTime(): String = TSTypes.getInstance().getTargetTimeExpr(this) diff --git a/org.lflang/src/org/lflang/generator/ts/TSGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSGenerator.kt index 3fd3675d52..9262e44e64 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSGenerator.kt @@ -429,7 +429,7 @@ class TSGenerator( return true } - override fun getTargetTypes(): TargetTypes = TSTypes + override fun getTargetTypes(): TargetTypes = TSTypes.getInstance() override fun getTarget(): Target { return Target.TS diff --git a/org.lflang/src/org/lflang/generator/ts/TSInstanceGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSInstanceGenerator.kt index 63857c0132..97e753f99b 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSInstanceGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSInstanceGenerator.kt @@ -25,10 +25,10 @@ class TSInstanceGenerator( private fun getTypeParams(typeParms: List): String = if (typeParms.isEmpty()) "" - else typeParms.joinToString(", ", "<", ">") { TSTypes.getTargetType(it) } + else typeParms.joinToString(", ", "<", ">") { TSTypes.getInstance().getTargetType(it) } private fun getReactorParameterList(parameters: List): String = - parameters.joinToString(", ", "[__Reactor, ", "]") { TSTypes.getTargetType(it) } + parameters.joinToString(", ", "[__Reactor, ", "]") { TSTypes.getInstance().getTargetType(it) } fun generateClassProperties(): String = @@ -50,7 +50,7 @@ class TSInstanceGenerator( childReactorArguments.add("this") for (parameter in childReactor.reactorClass.toDefinition().parameters) { - childReactorArguments.add(TSTypes.getTargetInitializer(parameter, childReactor)) + childReactorArguments.add(TSTypes.getInstance().getTargetInitializer(parameter, childReactor)) } if (childReactor.isBank) { childReactorInstantiations.add( diff --git a/org.lflang/src/org/lflang/generator/ts/TSParameterGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSParameterGenerator.kt index 5ded5814b0..838186a6dc 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSParameterGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSParameterGenerator.kt @@ -12,7 +12,7 @@ class TSParameterGenerator( fun generateClassProperties(): String = parameters.joinWithLn { - "${it.name}: __Parameter<${TSTypes.getTargetType(it)}>;" + "${it.name}: __Parameter<${TSTypes.getInstance().getTargetType(it)}>;" } fun generateInstantiations(): String = diff --git a/org.lflang/src/org/lflang/generator/ts/TSParameterPreambleGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSParameterPreambleGenerator.kt index c9fef820f0..305369832e 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSParameterPreambleGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSParameterPreambleGenerator.kt @@ -69,7 +69,7 @@ class TSParameterPreambleGenerator( mainParameters.joinWithLn { parameter -> """ - |let __CL${parameter.name}: ${TSTypes.getTargetType(parameter)} | undefined = undefined; + |let __CL${parameter.name}: ${TSTypes.getInstance().getTargetType(parameter)} | undefined = undefined; |if (__processedCLArgs.${parameter.name} !== undefined) { | if (__processedCLArgs.${parameter.name} !== null) { | __CL${parameter.name} = __processedCLArgs.${parameter.name}; @@ -114,7 +114,7 @@ class TSParameterPreambleGenerator( var customArgType: String? = null var customTypeLabel: String? = null - val paramType = TSTypes.getTargetType(parameter) + val paramType = TSTypes.getInstance().getTargetType(parameter) if (paramType == "string") { mainParameters.add(parameter) customArgType = "String"; diff --git a/org.lflang/src/org/lflang/generator/ts/TSReactionGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSReactionGenerator.kt index 4354ac1ea9..aca577aad0 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSReactionGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSReactionGenerator.kt @@ -358,7 +358,7 @@ class TSReactionGenerator( // Underscores are added to parameter names to prevent conflict with prologue val name = param.name - reactSignature.add("__$name: __Parameter<${TSTypes.getTargetType(param)}>") + reactSignature.add("__$name: __Parameter<${TSTypes.getInstance().getTargetType(param)}>") reactFunctArgs.add("this.$name") reactPrologue.add("let $name = __$name.get();") } @@ -367,7 +367,7 @@ class TSReactionGenerator( for (state in reactor.stateVars) { // Underscores are added to state names to prevent conflict with prologue val name = state.name - reactSignature.add("__$name: __State<${TSTypes.getTargetType(state)}>") + reactSignature.add("__$name: __State<${TSTypes.getInstance().getTargetType(state)}>") reactFunctArgs.add("this.$name") reactPrologue.add("let $name = __$name.get();") reactEpilogue.add( diff --git a/org.lflang/src/org/lflang/generator/ts/TSStateGenerator.kt b/org.lflang/src/org/lflang/generator/ts/TSStateGenerator.kt index 091da1d958..6ac2d8b28a 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSStateGenerator.kt +++ b/org.lflang/src/org/lflang/generator/ts/TSStateGenerator.kt @@ -15,7 +15,7 @@ class TSStateGenerator( fun generateClassProperties(): String { val stateClassProperties = LinkedList() for (stateVar in stateVars) { - stateClassProperties.add("${stateVar.name}: __State<${TSTypes.getTargetType(stateVar)}>;"); + stateClassProperties.add("${stateVar.name}: __State<${TSTypes.getInstance().getTargetType(stateVar)}>;"); } return stateClassProperties.joinToString("\n") } @@ -25,7 +25,7 @@ class TSStateGenerator( // Next handle states. for (stateVar in stateVars) { if (ASTUtils.isInitialized(stateVar)) { - stateInstantiations.add("this.${stateVar.name} = new __State(${TSTypes.getTargetInitializer(stateVar)});"); + stateInstantiations.add("this.${stateVar.name} = new __State(${TSTypes.getInstance().getTargetInitializer(stateVar)});"); } else { stateInstantiations.add("this.${stateVar.name} = new __State(undefined);"); } diff --git a/org.lflang/src/org/lflang/generator/ts/TSTypes.java b/org.lflang/src/org/lflang/generator/ts/TSTypes.java index 6a44b07627..e89fff00d4 100644 --- a/org.lflang/src/org/lflang/generator/ts/TSTypes.java +++ b/org.lflang/src/org/lflang/generator/ts/TSTypes.java @@ -9,7 +9,13 @@ import org.lflang.lf.StateVar; public class TSTypes implements TargetTypes { - + + private static TSTypes INSTANCE = new TSTypes(); + + private TSTypes() { + + } + @Override public String getTargetType(StateVar s) { var type = TargetTypes.super.getTargetType(s); @@ -62,4 +68,8 @@ public String getTargetVariableSizeListType(String baseType) { public String getVariableSizeListInitExpression(List contents, boolean withBraces) { return "[" + String.join(", ", contents) + "]"; } + + public static TSTypes getInstance() { + return INSTANCE; + } }