DefaultTypeParameter ConvertConstraints(AST.TemplateDefinition template, DefaultTypeParameter typeParameter) { foreach (AST.TypeReference typeRef in template.Bases) { if (typeRef == AST.TypeReference.NewConstraint) { typeParameter.HasConstructableConstraint = true; } else if (typeRef == AST.TypeReference.ClassConstraint) { typeParameter.HasReferenceTypeConstraint = true; } else if (typeRef == AST.TypeReference.StructConstraint) { typeParameter.HasValueTypeConstraint = true; } else { IReturnType rt = CreateReturnType(typeRef); if (rt != null) { typeParameter.Constraints.Add(rt); } } } return(typeParameter); }
void ConvertConstraints(NRefactoryAST.TemplateDefinition template, DefaultTypeParameter typeParameter) { foreach (NRefactoryAST.TypeReference typeRef in template.Bases) { if (typeRef == NRefactoryAST.TypeReference.NewConstraint) { typeParameter.HasConstructableConstraint = true; } else if (typeRef == NRefactoryAST.TypeReference.ClassConstraint) { typeParameter.HasReferenceTypeConstraint = true; } else if (typeRef == NRefactoryAST.TypeReference.StructConstraint) { typeParameter.HasValueTypeConstraint = true; } else { IReturnType rt = CreateReturnType(typeRef, typeParameter.Method, TypeVisitor.ReturnTypeOptions.None); if (rt != null) { typeParameter.Constraints.Add(rt); } } } }
void TypeParameterConstraints( #line 397 "VBNET.ATG" TemplateDefinition template) { #line 399 "VBNET.ATG" TypeReference constraint; Expect(50); if (la.kind == 23) { lexer.NextToken(); TypeParameterConstraint( #line 405 "VBNET.ATG" out constraint); #line 405 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } while (la.kind == 12) { lexer.NextToken(); TypeParameterConstraint( #line 408 "VBNET.ATG" out constraint); #line 408 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } } Expect(24); } else if (StartOf(6)) { TypeParameterConstraint( #line 411 "VBNET.ATG" out constraint); #line 411 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } } else SynErr(234); }
void TypeParameter( #line 390 "VBNET.ATG" out TemplateDefinition template) { Identifier(); #line 392 "VBNET.ATG" template = new TemplateDefinition(t.val, null); if (la.kind == 50) { TypeParameterConstraints( #line 393 "VBNET.ATG" template); } }
void VariantTypeParameter( #line 2410 "cs.ATG" out TemplateDefinition typeParameter) { #line 2412 "cs.ATG" typeParameter = new TemplateDefinition(); AttributeSection section; while (la.kind == 18) { AttributeSection( #line 2416 "cs.ATG" out section); #line 2416 "cs.ATG" typeParameter.Attributes.Add(section); } if (la.kind == 81 || la.kind == 93) { if (la.kind == 81) { lexer.NextToken(); #line 2418 "cs.ATG" typeParameter.VarianceModifier = VarianceModifier.Contravariant; } else { lexer.NextToken(); #line 2419 "cs.ATG" typeParameter.VarianceModifier = VarianceModifier.Covariant; } } Identifier(); #line 2421 "cs.ATG" typeParameter.Name = t.val; typeParameter.StartLocation = t.Location; #line 2422 "cs.ATG" typeParameter.EndLocation = t.EndLocation; }
private bool IsMatch(TemplateDefinition td, TemplateDefinition data) { return td.Name == data.Name; }
void TypeParameter( //#line 411 "VBNET.ATG" out TemplateDefinition template) { //#line 412 "VBNET.ATG" VarianceModifier modifier = VarianceModifier.Invariant; Location startLocation = la.Location; if (la.kind == 138 || la.kind == 178) { if (la.kind == 138) { lexer.NextToken(); //#line 415 "VBNET.ATG" modifier = VarianceModifier.Contravariant; } else { lexer.NextToken(); //#line 415 "VBNET.ATG" modifier = VarianceModifier.Covariant; } } Identifier(); //#line 415 "VBNET.ATG" template = new TemplateDefinition(t.val, null) { VarianceModifier = modifier }; if (la.kind == 63) { TypeParameterConstraints( //#line 416 "VBNET.ATG" template); } //#line 419 "VBNET.ATG" if (template != null) { template.StartLocation = startLocation; template.EndLocation = t.EndLocation; } }
public sealed override object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { this.BeginVisit(templateDefinition); object result = this.TrackedVisitTemplateDefinition(templateDefinition, data); this.EndVisit(templateDefinition); return result; }
// Some classes are handled by their parent (TemplateDefinition by TypeDeclaration/MethodDeclaration etc.) // so we don't need to implement Visit for them. public object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { throw new ApplicationException("Visited TemplateDefinition."); }
public virtual object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { Debug.Assert((templateDefinition != null)); Debug.Assert((templateDefinition.Attributes != null)); Debug.Assert((templateDefinition.Bases != null)); foreach (AttributeSection o in templateDefinition.Attributes) { Debug.Assert(o != null); o.AcceptVisitor(this, data); } foreach (TypeReference o in templateDefinition.Bases) { Debug.Assert(o != null); o.AcceptVisitor(this, data); } return null; }
public object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { throw new NotImplementedException (); }
public virtual bool VisitTemplateDefinition(TemplateDefinition templateDefinition, object d) { if ((templateDefinition == null)) { return SetFailure(); } if ((d == null)) { return SetFailure(); } if ((templateDefinition.Attributes == null)) { return SetFailure(); } if ((templateDefinition.Bases == null)) { return SetFailure(); } if(templateDefinition.GetType() != d.GetType()) {return SetFailure();} var data = (TemplateDefinition)d; if (!IsMatch(templateDefinition, data)) { return SetFailure(); } if (templateDefinition.Attributes.Count == data.Attributes.Count) { for (int i=0; i<templateDefinition.Attributes.Count;i++) { AttributeSection o = templateDefinition.Attributes[i]; if(o == null){return SetFailure();} if((bool)o.AcceptVisitor(this, data.Attributes[i]) == false) return SetFailure(); } } else { return SetFailure(); } if (templateDefinition.Bases.Count == data.Bases.Count) { for (int i=0; i<templateDefinition.Bases.Count;i++) { TypeReference o = templateDefinition.Bases[i]; if(o == null){return SetFailure();} if((bool)o.AcceptVisitor(this, data.Bases[i]) == false) return SetFailure(); } } else { return SetFailure(); } return true; }
public override object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { return base.VisitTemplateDefinition(templateDefinition, data); }
public virtual object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { throw new global::System.NotImplementedException("TemplateDefinition"); }
public virtual object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { Debug.Assert((templateDefinition != null)); Debug.Assert((templateDefinition.Attributes != null)); Debug.Assert((templateDefinition.Bases != null)); for (int i = 0; i < templateDefinition.Attributes.Count; i++) { AttributeSection o = templateDefinition.Attributes[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (AttributeSection)nodeStack.Pop(); if (o == null) templateDefinition.Attributes.RemoveAt(i--); else templateDefinition.Attributes[i] = o; } for (int i = 0; i < templateDefinition.Bases.Count; i++) { TypeReference o = templateDefinition.Bases[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (TypeReference)nodeStack.Pop(); if (o == null) templateDefinition.Bases.RemoveAt(i--); else templateDefinition.Bases[i] = o; } return null; }
public virtual object TrackedVisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { return base.VisitTemplateDefinition(templateDefinition, data); }
public virtual object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { throw CreateException(templateDefinition); }
public override object TrackedVisitTemplateDefinition(TemplateDefinition templateDefinition, object data) { return null; }
void TypeParameterConstraints( #line 378 "VBNET.ATG" TemplateDefinition template) { #line 380 "VBNET.ATG" TypeReference constraint; Expect(48); if (la.kind == 22) { lexer.NextToken(); TypeParameterConstraint( #line 386 "VBNET.ATG" out constraint); #line 386 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } while (la.kind == 12) { lexer.NextToken(); TypeParameterConstraint( #line 389 "VBNET.ATG" out constraint); #line 389 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } } Expect(23); } else if (StartOf(5)) { TypeParameterConstraint( #line 392 "VBNET.ATG" out constraint); #line 392 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } } else SynErr(218); }
void TypeParameterConstraints( //#line 427 "VBNET.ATG" TemplateDefinition template) { //#line 429 "VBNET.ATG" TypeReference constraint; Expect(63); if (la.kind == 35) { lexer.NextToken(); TypeParameterConstraint( //#line 435 "VBNET.ATG" out constraint); //#line 435 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } while (la.kind == 22) { lexer.NextToken(); TypeParameterConstraint( //#line 438 "VBNET.ATG" out constraint); //#line 438 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } } Expect(36); } else if (StartOf(7)) { TypeParameterConstraint( //#line 441 "VBNET.ATG" out constraint); //#line 441 "VBNET.ATG" if (constraint != null) { template.Bases.Add(constraint); } } else SynErr(252); }
void TypeParameter( #line 410 "VBNET.ATG" out TemplateDefinition template) { #line 411 "VBNET.ATG" VarianceModifier modifier = VarianceModifier.Invariant; if (la.kind == 138 || la.kind == 178) { if (la.kind == 138) { lexer.NextToken(); #line 413 "VBNET.ATG" modifier = VarianceModifier.Contravariant; } else { lexer.NextToken(); #line 413 "VBNET.ATG" modifier = VarianceModifier.Covariant; } } Identifier(); #line 413 "VBNET.ATG" template = new TemplateDefinition(t.val, null) { VarianceModifier = modifier }; if (la.kind == 63) { TypeParameterConstraints( #line 414 "VBNET.ATG" template); } }