public TypeDecl( Text.Span span, Text.Span headingSpan, bool isConditional, PhpMemberAttributes memberAttributes, bool isPartial, List <FormalTypeParam> /*!*/ genericParams, INamedTypeRef baseClass, List <INamedTypeRef> /*!*/ implementsList, List <TypeMemberDecl> /*!*/ elements, Text.Span bodySpan, List <CustomAttribute> attributes) : base(span) { Debug.Assert(genericParams != null && implementsList != null && elements != null); Debug.Assert((memberAttributes & PhpMemberAttributes.Trait) == 0 || (memberAttributes & PhpMemberAttributes.Interface) == 0, "Interface cannot be a trait"); this.typeSignature = new TypeSignature(genericParams); this.baseClass = baseClass; this.MemberAttributes = memberAttributes; this.IsConditional = isConditional; this.ImplementsList = implementsList.AsArray(); this.members = elements; this.members.TrimExcess(); if (attributes != null && attributes.Count != 0) { this.Attributes = new CustomAttributes(attributes); } this.headingSpan = headingSpan; this.bodySpan = bodySpan; this.partialKeyword = isPartial; }
public AnonymousTypeDecl( Text.Span span, Text.Span headingSpan, bool isConditional, PhpMemberAttributes memberAttributes, bool isPartial, IList <FormalTypeParam> /*!*/ genericParams, INamedTypeRef baseClass, IList <INamedTypeRef> /*!*/ implementsList, IList <TypeMemberDecl> /*!*/ elements, Text.Span bodySpan) : base(span, headingSpan, isConditional, memberAttributes, isPartial, genericParams, baseClass, implementsList, elements, bodySpan) { }
private void VisitINamedTypeRef(INamedTypeRef tref) { if (tref is ClassTypeRef) { VisitClassTypeRef((ClassTypeRef)tref); } else { VisitTranslatedTypeRef((TranslatedTypeRef)tref); } }
public NamedTypeDecl( Text.Span span, Text.Span headingSpan, bool isConditional, PhpMemberAttributes memberAttributes, bool isPartial, NameRef className, IList <FormalTypeParam> /*!*/ genericParams, INamedTypeRef baseClass, IList <INamedTypeRef> /*!*/ implementsList, IList <TypeMemberDecl> /*!*/ elements, Text.Span bodySpan) : base(span, headingSpan, isConditional, memberAttributes, isPartial, genericParams, baseClass, implementsList, elements, bodySpan) { Debug.Assert(genericParams != null && implementsList != null && elements != null); Debug.Assert((memberAttributes & PhpMemberAttributes.Trait) == 0 || (memberAttributes & PhpMemberAttributes.Interface) == 0, "Interface cannot be a trait"); this.name = className; }
private void VisitNamedTypeRef(INamedTypeRef tref) => VisitElement((TypeRef)tref);
public virtual TypeRef AnonymousTypeReference(Span span, Span headingSpan, bool conditional, PhpMemberAttributes attributes, IEnumerable <FormalTypeParam> typeParamsOpt, INamedTypeRef baseClassOpt, IEnumerable <INamedTypeRef> implements, IEnumerable <LangElement> members, Span bodySpan) { Debug.Assert(members != null && implements != null); return(new AnonymousTypeRef(span, new AnonymousTypeDecl(span, headingSpan, conditional, attributes, false, typeParamsOpt.AsArray(), baseClassOpt, implements.AsArray(), members.CastToArray <TypeMemberDecl>(), bodySpan))); }
public override TypeRef AnonymousTypeReference(Span span, Span headingSpan, bool conditional, PhpMemberAttributes attributes, IEnumerable <FormalTypeParam> typeParamsOpt, INamedTypeRef baseClassOpt, IEnumerable <INamedTypeRef> implements, IEnumerable <LangElement> members, Span bodySpan) { var tref = (AnonymousTypeRef)base.AnonymousTypeReference(span, headingSpan, conditional, attributes, typeParamsOpt, baseClassOpt, implements, members, bodySpan); AddAndReturn(ref _types, tref.TypeDeclaration); return(tref); }
public override LangElement Type(Span span, Span headingSpan, bool conditional, PhpMemberAttributes attributes, Name name, Span nameSpan, IEnumerable <FormalTypeParam> typeParamsOpt, INamedTypeRef baseClassOpt, IEnumerable <INamedTypeRef> implements, IEnumerable <LangElement> members, Span bodySpan) { return(AddAndReturn(ref _types, (TypeDecl)base.Type(span, headingSpan, conditional, attributes, name, nameSpan, typeParamsOpt, baseClassOpt, implements, members, bodySpan))); }
public override LangElement Type(Span span, Span headingSpan, bool conditional, PhpMemberAttributes attributes, Name name, Span nameSpan, IEnumerable <FormalTypeParam> typeParamsOpt, INamedTypeRef baseClassOpt, IEnumerable <INamedTypeRef> implements, IEnumerable <LangElement> members, Span bodySpan) { var imp = implements != null?implements.ToList() : null; return(CountLE(base.Type(span, headingSpan, conditional, attributes, name, nameSpan, typeParamsOpt, baseClassOpt, imp, members, bodySpan))); }
=> (ActualParam)CountLE(base.ActualParameter(span, expr, flags)); // TODO - replace definitions by interfaces public override TypeRef AnonymousTypeReference(Span span, Span headingSpan, bool conditional, PhpMemberAttributes attributes, IEnumerable <FormalTypeParam> typeParamsOpt, INamedTypeRef baseClassOpt, IEnumerable <INamedTypeRef> implements, IEnumerable <LangElement> members, Span blockSpan) { // TODO - AnonymousTypeRef internaly creates AnonymousTypeDecl var reference = CountTR(base.AnonymousTypeReference(span, headingSpan, conditional, attributes, typeParamsOpt, baseClassOpt, implements, members, blockSpan)); _createdElements.Add(((AnonymousTypeRef)reference).TypeDeclaration); return(reference); }
public virtual TypeRef AnonymousTypeReference(Span span, Span headingSpan, bool conditional, PhpMemberAttributes attributes, IEnumerable <FormalTypeParam> typeParamsOpt, INamedTypeRef baseClassOpt, IEnumerable <INamedTypeRef> implements, IEnumerable <LangElement> members, Span bodySpan) { Debug.Assert(members != null && implements != null); return(new AnonymousTypeRef(span, new AnonymousTypeDecl(span, headingSpan, conditional, attributes, false, (typeParamsOpt != null) ? typeParamsOpt.ToList() : FormalTypeParam.EmptyList, baseClassOpt, implements.ToList(), ConvertList <TypeMemberDecl>(members), bodySpan, null))); }
internal TypeSymbol ResolveType(INamedTypeRef dtype) { return (TypeSymbol)_model.GetType(dtype.ClassName); }