Skip to content

Commit

Permalink
Uglify Kotline code to let it deal with Java implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
lhstrh committed Mar 28, 2023
1 parent a5b4dfd commit c872b43
Show file tree
Hide file tree
Showing 11 changed files with 29 additions and 19 deletions.
Expand Up @@ -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)
Expand Down
Expand Up @@ -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")
Expand Down
Expand Up @@ -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"
}
Expand Down
8 changes: 4 additions & 4 deletions org.lflang/src/org/lflang/generator/ts/TSExtensions.kt
Expand Up @@ -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.
Expand All @@ -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)
2 changes: 1 addition & 1 deletion org.lflang/src/org/lflang/generator/ts/TSGenerator.kt
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions org.lflang/src/org/lflang/generator/ts/TSInstanceGenerator.kt
Expand Up @@ -25,10 +25,10 @@ class TSInstanceGenerator(

private fun getTypeParams(typeParms: List<Type>): String =
if (typeParms.isEmpty()) ""
else typeParms.joinToString(", ", "<", ">") { TSTypes.getTargetType(it) }
else typeParms.joinToString(", ", "<", ">") { TSTypes.getInstance().getTargetType(it) }

private fun getReactorParameterList(parameters: List<Parameter>): String =
parameters.joinToString(", ", "[__Reactor, ", "]") { TSTypes.getTargetType(it) }
parameters.joinToString(", ", "[__Reactor, ", "]") { TSTypes.getInstance().getTargetType(it) }


fun generateClassProperties(): String =
Expand All @@ -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(
Expand Down
Expand Up @@ -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 =
Expand Down
Expand Up @@ -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};
Expand Down Expand Up @@ -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";
Expand Down
4 changes: 2 additions & 2 deletions org.lflang/src/org/lflang/generator/ts/TSReactionGenerator.kt
Expand Up @@ -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();")
}
Expand All @@ -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(
Expand Down
4 changes: 2 additions & 2 deletions org.lflang/src/org/lflang/generator/ts/TSStateGenerator.kt
Expand Up @@ -15,7 +15,7 @@ class TSStateGenerator(
fun generateClassProperties(): String {
val stateClassProperties = LinkedList<String>()
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")
}
Expand All @@ -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);");
}
Expand Down
12 changes: 11 additions & 1 deletion org.lflang/src/org/lflang/generator/ts/TSTypes.java
Expand Up @@ -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);
Expand Down Expand Up @@ -62,4 +68,8 @@ public String getTargetVariableSizeListType(String baseType) {
public String getVariableSizeListInitExpression(List<String> contents, boolean withBraces) {
return "[" + String.join(", ", contents) + "]";
}

public static TSTypes getInstance() {
return INSTANCE;
}
}

0 comments on commit c872b43

Please sign in to comment.