Inheritance: AttributedNode
Beispiel #1
0
 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);
             }
         }
     }
 }
Beispiel #3
0
	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);
	}
Beispiel #4
0
	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);
		}
	}
Beispiel #5
0
	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;
 }
Beispiel #7
0
	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.");
		}
Beispiel #10
0
 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);
		}
Beispiel #17
0
 public virtual object VisitTemplateDefinition(TemplateDefinition templateDefinition, object data) {
     throw CreateException(templateDefinition);
 }
 public override object TrackedVisitTemplateDefinition(TemplateDefinition templateDefinition, object data)
 {
     return null;
 }
Beispiel #19
0
	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);
	}
Beispiel #20
0
	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);
	}
Beispiel #21
0
	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);
		}
	}