Esempio n. 1
0
        private static TypeSyntax CreateType(WebIdlTypeReference returnTypeReference)
        {
            var typeName   = NameService.GetTypeName(returnTypeReference);
            var returnType = SyntaxFactory.ParseTypeName(typeName);

            return(returnType);
        }
Esempio n. 2
0
        public static bool IsAsync(WebIdlTypeReference type)
        {
            if (type.Generic?.Value == "Promise")
            {
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        public static string GetTypeName(WebIdlTypeReference typeReference)
        {
            if (typeReference.Generic != null)
            {
                var genericType = typeReference.Generic.Value;
                var wellKnownGenericTypeOverrides = new Dictionary <string, string>
                {
                    { "Promise", "Task" },
                    { "sequence", "IEnumerable" },
                    { "FrozenArray", "IReadOnlyList" },
                };
                if (wellKnownGenericTypeOverrides.TryGetValue(genericType, out var overrideTypeName))
                {
                    genericType = overrideTypeName;
                }

                var genericTypeParameter = GetTypeName(typeReference.IdlType[0]);
                var result = $"{genericType}<{genericTypeParameter}>";
                if (result == "Task<void>")
                {
                    return("Task");
                }

                return(result);
            }

            var wellKnownTypeOverrides = new Dictionary <string, string>
            {
                { "boolean", "bool" },
                { "DOMString", "string" },
                { "USVString", "string" },
                { "unsigned short", "ushort" },
                { "unsigned long", "ulong" },
                { "unsigned long long", "ulong" },
                { "any", "object" },
                { "DOMTimeStamp", "DateTime" },
                { "DOMHighResTimeStamp", "double" },

                // Temporary workaround until generator would be fully implemented.
                { "VibratePattern", "int[]" },
            };

            if (wellKnownTypeOverrides.TryGetValue(typeReference.TypeName, out var overrideType))
            {
                return(overrideType);
            }

            return(typeReference.TypeName);
        }