public JsExpression TypeOf(ITypeSymbol type) { var typeExpression = Type(type); // if (type.IsExported() && !type.IsBuiltIn() && !(type is TypeParameterSymbol)) // typeExpression = typeExpression.Invoke(); if (type.IsExported() && !type.IsBuiltIn() && type.TypeKind != TypeKind.TypeParameter && type.TypeKind != TypeKind.Array) typeExpression = typeExpression.Invoke(); return typeExpression.Member(SpecialNames.GetTypeFromType).Invoke(); }
public JsExpression TypeAndResolve(ITypeSymbol type) { if (!type.IsExported() || type.IsBuiltIn() || type.TypeKind == TypeKind.Array || type.TypeKind == TypeKind.TypeParameter) return Type(type); else return Type(type).Invoke(); }
public JsExpression MakeArrayType(ITypeSymbol elementType) { var jsElementType = Type(elementType); // If it's a normal type, we need to invoke it to ensure static initializers are executed. if (elementType.IsExported() && !elementType.IsBuiltIn() && elementType.TypeKind != TypeKind.TypeParameter && elementType.TypeKind != TypeKind.Array) jsElementType = jsElementType.Invoke(); return Js.Reference(SpecialNames.MakeArrayType).Invoke(jsElementType); }