private bool TryAdaptDeclaration(JassMapScriptAdapterContext context, ITopLevelDeclarationSyntax declaration, [NotNullWhen(true)] out ITopLevelDeclarationSyntax?adaptedDeclaration) { return(declaration switch { JassGlobalDeclarationListSyntax globalDeclarationList => TryAdaptGlobalDeclarationList(context, globalDeclarationList, out adaptedDeclaration), JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration => TryAdaptNativeFunctionDeclaration(context, nativeFunctionDeclaration, out adaptedDeclaration), JassFunctionDeclarationSyntax functionDeclaration => TryAdaptFunctionDeclaration(context, functionDeclaration, out adaptedDeclaration), JassTypeDeclarationSyntax typeDeclaration => TryAdaptTypeDeclaration(context, typeDeclaration, out adaptedDeclaration), _ => TryAdaptDummy(context, declaration, out adaptedDeclaration), });
public IEnumerable <MemberDeclarationSyntax> Transpile(IDeclarationSyntax declaration) { return(declaration switch { JassTypeDeclarationSyntax typeDeclaration => new[] { Transpile(typeDeclaration) }, JassGlobalDeclarationListSyntax globalDeclarationList => Transpile(globalDeclarationList), JassGlobalDeclarationSyntax globalDeclaration => new[] { Transpile(globalDeclaration) }, JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration => new[] { Transpile(nativeFunctionDeclaration) }, JassFunctionDeclarationSyntax functionDeclaration => new[] { Transpile(functionDeclaration) }, _ => Array.Empty <MemberDeclarationSyntax>(), });
private bool TryAdaptNativeFunctionDeclaration(JassMapScriptAdapterContext context, JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration, [NotNullWhen(true)] out ITopLevelDeclarationSyntax?adaptedNativeFunctionDeclaration) { if (TryAdaptFunctionDeclarator(context, nativeFunctionDeclaration.FunctionDeclarator, out var adaptedFunctionDeclarator)) { adaptedNativeFunctionDeclaration = new JassNativeFunctionDeclarationSyntax(adaptedFunctionDeclarator); return(true); } adaptedNativeFunctionDeclaration = null; return(false); }
public void Render(JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration) { Write($"{JassKeyword.Native} "); Render(nativeFunctionDeclaration.FunctionDeclarator); }
public MemberDeclarationSyntax Transpile(JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration) { return(SyntaxFactory.MethodDeclaration(