Ejemplo n.º 1
0
 public void Render(JassTypeDeclarationSyntax typeDeclaration)
 {
     Write($"{JassKeyword.Type} ");
     Render(typeDeclaration.IdentifierName);
     Write($" {JassKeyword.Extends} ");
     Render(typeDeclaration.BaseType);
 }
Ejemplo n.º 2
0
        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),
            });
Ejemplo n.º 3
0
 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>(),
     });
Ejemplo n.º 4
0
        private bool TryAdaptTypeDeclaration(JassMapScriptAdapterContext context, JassTypeDeclarationSyntax typeDeclaration, [NotNullWhen(true)] out ITopLevelDeclarationSyntax?adaptedTypeDeclaration)
        {
            if (!context.KnownTypes.ContainsKey(typeDeclaration.BaseType.TypeName.Name))
            {
                context.Diagnostics.Add($"Unknown base type '{typeDeclaration.BaseType}'.");
            }

            context.KnownTypes.Add(typeDeclaration.IdentifierName.Name, typeDeclaration.BaseType.TypeName.Name);

            adaptedTypeDeclaration = null;
            return(false);
        }
Ejemplo n.º 5
0
        public MemberDeclarationSyntax Transpile(JassTypeDeclarationSyntax typeDeclaration)
        {
            var identifier = Transpile(typeDeclaration.IdentifierName);
            var baseList   = SyntaxFactory.BaseList(SyntaxFactory.SingletonSeparatedList <BaseTypeSyntax>(SyntaxFactory.SimpleBaseType(Transpile(typeDeclaration.BaseType))));

            return(SyntaxFactory.ClassDeclaration(