private bool TryAdaptVariableDeclarator(JassMapScriptAdapterContext context, bool isGlobalVariable, IVariableDeclaratorSyntax declarator, [NotNullWhen(true)] out IVariableDeclaratorSyntax?adaptedDeclarator) { if (!context.KnownTypes.ContainsKey(declarator.Type.TypeName.Name)) { context.Diagnostics.Add($"Unknown variable type '{declarator.Type}'."); } if (isGlobalVariable) { if (!context.KnownGlobalVariables.TryAdd(declarator.IdentifierName.Name, declarator.Type.TypeName.Name)) { context.Diagnostics.Add($"Duplicate global variable '{declarator.IdentifierName}'."); } } else { if (!context.KnownLocalVariables.TryAdd(declarator.IdentifierName.Name, declarator.Type.TypeName.Name)) { context.Diagnostics.Add($"Duplicate local variable '{declarator.IdentifierName}'."); } } return(declarator switch { JassArrayDeclaratorSyntax arrayDeclarator => TryAdaptArrayDeclarator(context, isGlobalVariable, arrayDeclarator, out adaptedDeclarator), JassVariableDeclaratorSyntax variableDeclarator => TryAdaptVariableDeclarator(context, isGlobalVariable, variableDeclarator, out adaptedDeclarator), _ => TryAdaptDummy(context, declarator, out adaptedDeclarator), });
public VariableDeclarationSyntax Transpile(IVariableDeclaratorSyntax declarator) { return(declarator switch { JassArrayDeclaratorSyntax arrayDeclarator => Transpile(arrayDeclarator), JassVariableDeclaratorSyntax variableDeclarator => Transpile(variableDeclarator), });
private VariableDeclarationSyntax Transpile(JassArrayDeclaratorSyntax arrayDeclarator) { var type = Transpile(arrayDeclarator.Type); return(SyntaxFactory.VariableDeclaration( SyntaxFactory.ArrayType(type), SyntaxFactory.SingletonSeparatedList(SyntaxFactory.VariableDeclarator( Transpile(arrayDeclarator.IdentifierName), null, SyntaxFactory.EqualsValueClause(SyntaxFactory.ArrayCreationExpression(SyntaxFactory.ArrayType(type))))))); }
public LuaVariableDeclaratorSyntax Transpile(JassArrayDeclaratorSyntax arrayDeclarator) { LuaExpressionSyntax expression = arrayDeclarator.Type switch { JassTypeSyntax type when type.Equals(JassTypeSyntax.Integer) => new LuaInvocationExpressionSyntax("__jarray", "0"), JassTypeSyntax type when type.Equals(JassTypeSyntax.Real) => new LuaInvocationExpressionSyntax("__jarray", "0.0"), JassTypeSyntax type when type.Equals(JassTypeSyntax.String) => new LuaInvocationExpressionSyntax("__jarray", LuaStringLiteralExpressionSyntax.Empty), JassTypeSyntax type when type.Equals(JassTypeSyntax.Boolean) => new LuaInvocationExpressionSyntax("__jarray", LuaIdentifierLiteralExpressionSyntax.False), _ => new LuaTableExpression(), }; return(new LuaVariableDeclaratorSyntax(Transpile(arrayDeclarator.IdentifierName), expression)); }
public LuaLocalDeclarationStatementSyntax Transpile(IVariableDeclaratorSyntax declarator, bool isLocalDeclaration) { RegisterVariableType(declarator, isLocalDeclaration); var luaDeclarator = declarator switch { JassArrayDeclaratorSyntax arrayDeclarator => Transpile(arrayDeclarator), JassVariableDeclaratorSyntax variableDeclarator => Transpile(variableDeclarator), }; var declaration = new LuaVariableListDeclarationSyntax(); luaDeclarator.IsLocalDeclaration = isLocalDeclaration; declaration.Variables.Add(luaDeclarator); return(new LuaLocalDeclarationStatementSyntax(declaration)); }
public void Render(JassArrayDeclaratorSyntax arrayDeclarator) { Render(arrayDeclarator.Type); Write($" {JassKeyword.Array} "); Render(arrayDeclarator.IdentifierName); }
private bool TryAdaptArrayDeclarator(JassMapScriptAdapterContext context, bool isGlobalVariable, JassArrayDeclaratorSyntax arrayDeclarator, [NotNullWhen(true)] out IVariableDeclaratorSyntax?adaptedArrayDeclarator) { adaptedArrayDeclarator = null; return(false); }