@Override public ImmutableList<JSType> getTemplateTypes() { return referencedObjType == null ? null : referencedObjType.getTemplateTypes(); }
@Override public ImmutableList<JSType> getTemplateTypes() { return referencedObjType == null ? null : referencedObjType.getTemplateTypes(); }
/** * Emits a type that is not resolved by closure, as the literal string that was in the original * code. Special care is taken for templatized types. */ private void emitNoResolvedTypeAsumingForwardDeclare(ObjectType type) { String displayName = maybeRewriteImportedName(type.getDisplayName()); String maybeGlobalName = maybeRenameGlobalType(displayName); if (maybeGlobalName == null) { typesUsed.add(displayName); displayName = Constants.INTERNAL_NAMESPACE + "." + displayName; } else { displayName = maybeGlobalName; } emit(displayName); List<JSType> templateTypes = type.getTemplateTypes(); if (templateTypes != null && templateTypes.size() > 0) { emitGenericTypeArguments(type.getTemplateTypes().iterator()); } }
private JSType evalTemplateTypeOf(Node ttlAst, NameResolver nameResolver) { ImmutableList<Node> params = getCallParams(ttlAst); JSType type = evalInternal(params.get(0), nameResolver); if (!type.isGenericObjectType()) { reportWarning(ttlAst, TEMPTYPE_INVALID, "templateTypeOf", type.toString()); return getUnknownType(); } int index = (int) params.get(1).getDouble(); ImmutableList<? extends JSType> templateTypes = type.toMaybeObjectType().getTemplateTypes(); if (index >= templateTypes.size()) { reportWarning(ttlAst, INDEX_OUTOFBOUNDS, Integer.toString(templateTypes.size()), Integer.toString(index)); return getUnknownType(); } return templateTypes.get(index); }
private ImmutableCollection<String> getTagNames(Node tag) { if (tag.isString()) { return ImmutableSet.of(tag.getString().toLowerCase()); } else if (tag.isGetProp() && tag.getFirstChild().matchesQualifiedName("goog.dom.TagName")) { return ImmutableSet.of(tag.getLastChild().getString().toLowerCase()); } // TODO(jakubvrana): Support union, e.g. {!TagName<!HTMLDivElement>|!TagName<!HTMLBRElement>}. JSType type = tag.getJSType(); if (type == null || !type.isGenericObjectType()) { return null; } ObjectType typeAsObj = type.toMaybeObjectType(); if (typeAsObj.getRawType().getDisplayName().equals("goog.dom.TagName")) { JSType tagType = Iterables.getOnlyElement(typeAsObj.getTemplateTypes()); return ELEMENT_TAG_NAMES.get(tagType.getDisplayName()); } return null; }
ImmutableList<JSType> templateTypes = implementedInterface.getTemplateTypes();