Пример #1
0
            public override void VisitTypeParameterDeclaration(TypeParameterDeclaration decl)
            {
                base.VisitTypeParameterDeclaration(decl);

                var resolveResult = ctx.Resolve(decl) as TypeResolveResult;

                if (resolveResult == null)
                {
                    return;
                }
                var typeParameter = resolveResult.Type as ITypeParameter;

                if (typeParameter == null)
                {
                    return;
                }
                var methodDecl = decl.Parent as MethodDeclaration;

                if (methodDecl == null)
                {
                    return;
                }

                if (FindUsage(ctx, unit, typeParameter, decl))
                {
                    return;
                }

                AddIssue(decl.NameToken, ctx.TranslateString("Type parameter is never used"));
            }
        TypeParameterDeclaration ConvertTypeParameter(ITypeParameter tp)
        {
            TypeParameterDeclaration decl = new TypeParameterDeclaration();

            decl.Variance = tp.Variance;
            decl.Name     = tp.Name;
            return(decl);
        }
 public override void VisitTypeParameterDeclaration(TypeParameterDeclaration declaration)
 {
     base.VisitTypeParameterDeclaration(declaration);
     try{
         intermediary.Add(declaration.Name, "generic_" + genericIndex);
         genericIndex++;
     }catch (ArgumentException) {}
 }
Пример #4
0
 TypeParameterDeclaration ConvertTypeParameter(ITypeParameter tp)
 {
     TypeParameterDeclaration decl = new TypeParameterDeclaration();
     decl.Variance = tp.Variance;
     decl.Name = tp.Name;
     if (ShowAttributes)
         decl.Attributes.AddRange (tp.Attributes.Select ((a) => new AttributeSection (ConvertAttribute (a))));
     return decl;
 }
Пример #5
0
 void HandleVisitorTypeParameterDeclarationVisited(TypeParameterDeclaration node, InspectionData data)
 {
     foreach (var rule in policy.Rules)
     {
         if (rule.CheckTypeParameter(node, data))
         {
             return;
         }
     }
 }
Пример #6
0
        public UnifiedElement VisitTypeParameterDeclaration(
            TypeParameterDeclaration dec, object data)
        {
            var type      = UnifiedType.Create(dec.Name);
            var modifiers = null as UnifiedSet <UnifiedModifier>;

            switch (dec.Variance)
            {
            case VarianceModifier.Contravariant:
                modifiers = UnifiedModifier.Create("in").ToSet();
                break;

            case VarianceModifier.Covariant:
                modifiers = UnifiedModifier.Create("out").ToSet();
                break;
            }
            return(UnifiedGenericParameter.Create(
                       type, /*constraint*/ null, modifiers));
        }
Пример #7
0
			public override void VisitTypeParameterDeclaration (TypeParameterDeclaration decl)
			{
				base.VisitTypeParameterDeclaration (decl);

				var resolveResult = ctx.Resolve (decl) as TypeResolveResult;
				if (resolveResult == null)
					return;
				var typeParameter = resolveResult.Type as ITypeParameter;
				if (typeParameter == null)
					return;
				var methodDecl = decl.Parent as MethodDeclaration;
				if (methodDecl == null)
					return;

				if (FindUsage (ctx, unit, typeParameter, decl))
					return;

				AddIssue (decl.NameToken, ctx.TranslateString ("Type parameter is never used"));
			}
        public override void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
        {
            if (typeParameterDeclaration.Variance == VarianceModifier.Contravariant)
            {
                Colorize(typeParameterDeclaration.VarianceToken, parameterModifierColor);
            }

            //            bool isValueType = false;
            //            if (typeParameterDeclaration.Parent != null) {
            //                foreach (var constraint in typeParameterDeclaration.Parent.GetChildrenByRole(Roles.Constraint)) {
            //                    if (constraint.TypeParameter.Identifier == typeParameterDeclaration.Name) {
            //                        isValueType = constraint.BaseTypes.OfType<PrimitiveType>().Any(p => p.Keyword == "struct");
            //                    }
            //                }
            //            }
            var nameToken = typeParameterDeclaration.NameToken;

            VisitChildrenUntil(typeParameterDeclaration, nameToken);
            Colorize(nameToken, typeParameterTypeColor);  /*isValueType ? valueTypeColor : referenceTypeColor*/
            VisitChildrenAfter(typeParameterDeclaration, nameToken);
        }
Пример #9
0
		void HandleVisitorTypeParameterDeclarationVisited (TypeParameterDeclaration node, InspectionData data)
		{
			foreach (var rule in policy.Rules) {
				if (rule.CheckTypeParameter (node, data))
					return;
			}
		}
Пример #10
0
 protected virtual IEnumerable <Syntax> TranslateTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, ILTranslationContext data)
 {
     throw new NotSupportedException();
 }
 /// <summary>
 /// Return the zero-based index of the first occurrence of a specific value
 /// in this TypeParameterDeclarationCollection
 /// </summary>
 /// <param name="value">
 /// The ITypeParameterDeclaration value to locate in the TypeParameterDeclarationCollection.
 /// </param>
 /// <returns>
 /// The zero-based index of the first occurrence of the _ELEMENT value if found;
 /// -1 otherwise.
 /// </returns>
 public virtual int IndexOf(TypeParameterDeclaration value)
 {
     return(this.List.IndexOf(value));
 }
Пример #12
0
 TypeParameterDeclaration ConvertTypeParameter(ITypeParameter tp)
 {
     TypeParameterDeclaration decl = new TypeParameterDeclaration();
     decl.Variance = tp.Variance;
     decl.Name = tp.Name;
     return decl;
 }
 public override void VisitTypeParameterDeclaration(TypeParameterDeclaration syntax)
 {
     _underlyingVisitor.VisitTypeParameterDeclaration(syntax);
 }
 /// <summary>
 /// Adds an instance of type ITypeParameterDeclaration to the end of this TypeParameterDeclarationCollection.
 /// </summary>
 /// <param name="value">
 /// The ITypeParameterDeclaration to be added to the end of this TypeParameterDeclarationCollection.
 /// </param>
 public virtual void Add(TypeParameterDeclaration value)
 {
     this.List.Add(value);
 }
Пример #15
0
 public StringBuilder VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, int data)
 {
     throw new NotSupportedException();
 }
Пример #16
0
		IEnumerable<TypeParameterDeclaration> MakeTypeParameters(IEnumerable<GenericParameter> genericParameters)
		{
			foreach (var gp in genericParameters) {
				TypeParameterDeclaration tp = new TypeParameterDeclaration();
				tp.Name = CleanName(gp.Name);
				if (gp.IsContravariant)
					tp.Variance = VarianceModifier.Contravariant;
				else if (gp.IsCovariant)
					tp.Variance = VarianceModifier.Covariant;
				ConvertCustomAttributes(tp, gp);
				yield return tp;
			}
		}
Пример #17
0
 TypeParameterDeclaration ConvertTypeParameter(ITypeParameter tp)
 {
     TypeParameterDeclaration decl = new TypeParameterDeclaration();
     decl.Variance = tp.Variance;
     decl.Name = tp.Name;
     if (ShowAttributes)
         decl.Attributes.AddRange (tp.Attributes.Select ((a) => new AttributeSection (ConvertAttribute (a))));
     return decl;
 }
Пример #18
0
 public void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     throw new NotImplementedException();
 }
Пример #19
0
 public object VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, object data)
 {
     throw new NotImplementedException();
 }
Пример #20
0
        public void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
        {
            JsonObject declaration = new JsonObject();
            declaration.Comment = "VisitTypeParameterDeclaration";
            declaration.AddJsonValue("attributes", GetAttributes(typeParameterDeclaration.Attributes));
            switch (typeParameterDeclaration.Variance)
            {
                case VarianceModifier.Invariant:
                    break;
                case VarianceModifier.Covariant:
                    declaration.AddJsonValue("keyword", GetKeyword(TypeParameterDeclaration.OutVarianceKeywordRole));
                    break;
                case VarianceModifier.Contravariant:
                    declaration.AddJsonValue("keyword", GetKeyword(TypeParameterDeclaration.InVarianceKeywordRole));
                    break;
                default:
                    throw new NotSupportedException("Invalid value for VarianceModifier");
            }
            declaration.AddJsonValue("identifier", GetIdentifier(typeParameterDeclaration.NameToken));

            Push(declaration);

        }
Пример #21
0
 public Node VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     return(CreateDummy(typeParameterDeclaration));
 }
 /// <inheritdoc/>
 public virtual void VisitTypeParameterDeclaration(TypeParameterDeclaration syntax)
 {
     VisitNode(syntax);
 }
Пример #23
0
 public StringBuilder VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     throw new NotImplementedException();
 }
Пример #24
0
 public virtual void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     //throw this.CreateException(typeParameterDeclaration);
 }
Пример #25
0
 public JNode VisitTypeParameterDeclaration(TypeParameterDeclaration node)
 {
     throw new NotImplementedException();
 }
Пример #26
0
			void AddTypeParameters (AstNode parent, List<Location> location, Mono.CSharp.TypeArguments typeArguments)
			{
				if (typeArguments == null || typeArguments.IsEmpty)
					return;
				for (int i = 0; i < typeArguments.Count; i++) {
					if (location != null && i > 0 && i - 1 < location.Count)
						parent.AddChild (new CSharpTokenNode (Convert (location[i - 1]), 1), InvocationExpression.Roles.Comma);
					var arg = (TypeParameterName)typeArguments.Args[i];
					if (arg == null)
						continue;
					TypeParameterDeclaration tp = new TypeParameterDeclaration();
					// TODO: attributes
					switch (arg.Variance) {
						case Variance.Covariant:
							tp.Variance = VarianceModifier.Covariant;
							break;
						case Variance.Contravariant:
							tp.Variance = VarianceModifier.Contravariant;
							break;
					}
					tp.AddChild (Identifier.Create (arg.Name, Convert (arg.Location)), InvocationExpression.Roles.Identifier);
					parent.AddChild (tp, InvocationExpression.Roles.TypeParameter);
				}
			}
Пример #27
0
 public void VisitTypeParameterDeclaration(TypeParameterDeclaration node)
 {
     VisitChildren(node);
 }
 /// <summary>
 /// Removes the first occurrence of a specific ITypeParameterDeclaration from this TypeParameterDeclarationCollection.
 /// </summary>
 /// <param name="value">
 /// The ITypeParameterDeclaration value to remove from this TypeParameterDeclarationCollection.
 /// </param>
 public virtual void Remove(TypeParameterDeclaration value)
 {
     this.List.Remove(value);
 }
Пример #29
0
			void AddTypeParameters(AstNode parent, MemberName memberName)
			{
				if (memberName == null || memberName.TypeParameters == null)
					return;
				var chevronLocs = LocationsBag.GetLocations(memberName.TypeParameters);
				if (chevronLocs != null)
					parent.AddChild(new CSharpTokenNode(Convert(chevronLocs [chevronLocs.Count - 2]), Roles.LChevron), Roles.LChevron);
				for (int i = 0; i < memberName.TypeParameters.Count; i++) {
					if (chevronLocs != null && i > 0 && i - 1 < chevronLocs.Count)
						parent.AddChild(new CSharpTokenNode(Convert(chevronLocs [i - 1]), Roles.Comma), Roles.Comma);
					var arg = memberName.TypeParameters [i];
					if (arg == null)
						continue;
					var tp = new TypeParameterDeclaration();
					
					List<Location> varianceLocation;
					switch (arg.Variance) {
						case Variance.Contravariant:
							tp.Variance = VarianceModifier.Contravariant;
							varianceLocation = LocationsBag.GetLocations(arg);
							if (varianceLocation != null)
								tp.AddChild(new CSharpTokenNode(Convert(varianceLocation [0]), TypeParameterDeclaration.InVarianceKeywordRole), TypeParameterDeclaration.InVarianceKeywordRole);
							break;
						case Variance.Covariant:
							tp.Variance = VarianceModifier.Covariant;
							varianceLocation = LocationsBag.GetLocations(arg);
							if (varianceLocation != null)
								tp.AddChild(new CSharpTokenNode(Convert(varianceLocation [0]), TypeParameterDeclaration.OutVarianceKeywordRole), TypeParameterDeclaration.OutVarianceKeywordRole);
							break;
						default:
							tp.Variance = VarianceModifier.Invariant;
							break;
							
					}
					
					AddAttributeSection(tp, arg.OptAttributes);

					switch (arg.Variance) {
						case Variance.Covariant:
							tp.Variance = VarianceModifier.Covariant;
							break;
						case Variance.Contravariant:
							tp.Variance = VarianceModifier.Contravariant;
							break;
					}
					tp.AddChild(Identifier.Create(arg.Name, Convert(arg.Location)), Roles.Identifier);
					parent.AddChild(tp, Roles.TypeParameter);
				}
				if (chevronLocs != null)
					parent.AddChild(new CSharpTokenNode(Convert(chevronLocs [chevronLocs.Count - 1]), Roles.RChevron), Roles.RChevron);
			}
 /// <summary>
 /// Determines whether a specfic ITypeParameterDeclaration value is in this TypeParameterDeclarationCollection.
 /// </summary>
 /// <param name="value">
 /// The ITypeParameterDeclaration value to locate in this TypeParameterDeclarationCollection.
 /// </param>
 /// <returns>
 /// true if value is found in this TypeParameterDeclarationCollection;
 /// false otherwise.
 /// </returns>
 public virtual bool Contains(TypeParameterDeclaration value)
 {
     return(this.List.Contains(value));
 }
Пример #31
0
 public override AstNode VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, ICecilArgumentsResolver argumentsResolver)
 {
     return(typeParameterDeclaration);
 }
 /// <summary>
 /// Inserts an element into the TypeParameterDeclarationCollection at the specified index
 /// </summary>
 /// <param name="index">
 /// The index at which the ITypeParameterDeclaration is to be inserted.
 /// </param>
 /// <param name="value">
 /// The ITypeParameterDeclaration to insert.
 /// </param>
 public virtual void Insert(int index, TypeParameterDeclaration value)
 {
     this.List.Insert(index, value);
 }
Пример #33
0
 public virtual Node VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     throw new System.NotImplementedException();
 }
Пример #34
0
			void AddTypeParameters (AstNode parent, Mono.CSharp.TypeArguments typeArguments)
			{
				if (typeArguments == null || typeArguments.IsEmpty)
					return;
				var chevronLocs = LocationsBag.GetLocations (typeArguments);
				if (chevronLocs != null)
					parent.AddChild (new CSharpTokenNode (Convert (chevronLocs[chevronLocs.Count - 2]), 1), InvocationExpression.Roles.LChevron);
				for (int i = 0; i < typeArguments.Count; i++) {
					if (chevronLocs != null && i > 0 && i - 1 < chevronLocs.Count)
						parent.AddChild (new CSharpTokenNode (Convert (chevronLocs[i - 1]), 1), InvocationExpression.Roles.Comma);
					var arg = (TypeParameterName)typeArguments.Args[i];
					if (arg == null)
						continue;
					TypeParameterDeclaration tp = new TypeParameterDeclaration();
					
					List<Location> varianceLocation;
					switch (arg.Variance) {
					case Variance.Contravariant:
						tp.Variance = VarianceModifier.Contravariant;
						varianceLocation = LocationsBag.GetLocations (arg);
						if (varianceLocation != null)
							tp.AddChild (new CSharpTokenNode (Convert (varianceLocation[0]), "out".Length), TypeParameterDeclaration.VarianceRole);
						break;
					case Variance.Covariant:
						tp.Variance = VarianceModifier.Covariant;
						varianceLocation = LocationsBag.GetLocations (arg);
						if (varianceLocation != null)
							tp.AddChild (new CSharpTokenNode (Convert (varianceLocation[0]), "out".Length), TypeParameterDeclaration.VarianceRole);
						break;
					default:
						tp.Variance = VarianceModifier.Invariant;
						break;
						
					}
					
					AddAttributeSection (tp, arg.OptAttributes);

					switch (arg.Variance) {
						case Variance.Covariant:
							tp.Variance = VarianceModifier.Covariant;
							break;
						case Variance.Contravariant:
							tp.Variance = VarianceModifier.Contravariant;
							break;
					}
					tp.AddChild (Identifier.Create (arg.Name, Convert (arg.Location)), InvocationExpression.Roles.Identifier);
					parent.AddChild (tp, InvocationExpression.Roles.TypeParameter);
				}
				if (chevronLocs != null)
					parent.AddChild (new CSharpTokenNode (Convert (chevronLocs[chevronLocs.Count - 1]), 1), InvocationExpression.Roles.RChevron);
			}
			public override void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
			{
				base.VisitTypeParameterDeclaration(typeParameterDeclaration);
				CheckNamedResolveResult(null, typeParameterDeclaration, AffectedEntity.TypeParameter, typeParameterDeclaration.NameToken, Modifiers.None);
			}
		public virtual void VisitTypeParameterDeclaration (TypeParameterDeclaration typeParameterDeclaration)
		{
			VisitChildren (typeParameterDeclaration);
		}
Пример #37
0
 IEnumerable <Syntax> IAstVisitor <ILTranslationContext, IEnumerable <Syntax> > .VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, ILTranslationContext data)
 => OnVisiting(data, typeParameterDeclaration, VisitingTypeParameterDeclaration)
 ?? OnVisited(data, typeParameterDeclaration, VisitedTypeParameterDeclaration, TranslateTypeParameterDeclaration(typeParameterDeclaration, data));
Пример #38
0
		public void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
		{
			StartNode(typeParameterDeclaration);
			WriteAttributes(typeParameterDeclaration.Attributes);
			switch (typeParameterDeclaration.Variance) {
				case VarianceModifier.Invariant:
					break;
				case VarianceModifier.Covariant:
					WriteKeyword(TypeParameterDeclaration.OutVarianceKeywordRole);
					break;
				case VarianceModifier.Contravariant:
					WriteKeyword(TypeParameterDeclaration.InVarianceKeywordRole);
					break;
				default:
					throw new NotSupportedException ("Invalid value for VarianceModifier");
			}
			typeParameterDeclaration.NameToken.AcceptVisitor(this);
			EndNode(typeParameterDeclaration);
		}
Пример #39
0
 public RedILNode VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, State data)
 {
     throw new System.NotImplementedException();
 }
 public override void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     base.VisitTypeParameterDeclaration(typeParameterDeclaration);
     CheckNamedResolveResult(null, typeParameterDeclaration, AffectedEntity.TypeParameter, typeParameterDeclaration.NameToken, Modifiers.None);
 }
 public override void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     throw NotSupportedToConsistency();
 }
Пример #42
0
			void AddTypeParameters (AstNode parent, List<Location> location, Mono.CSharp.TypeArguments typeArguments)
			{
				if (typeArguments == null || typeArguments.IsEmpty)
					return;
				for (int i = 0; i < typeArguments.Count; i++) {
					if (location != null && i > 0 && i - 1 < location.Count)
						parent.AddChild (new CSharpTokenNode (Convert (location[i - 1]), 1), InvocationExpression.Roles.Comma);
					var arg = (TypeParameterName)typeArguments.Args[i];
					if (arg == null)
						continue;
					TypeParameterDeclaration tp = new TypeParameterDeclaration();
					// TODO: attributes
					if (arg.Variance != Variance.None)
						throw new NotImplementedException(); // TODO: variance
					tp.AddChild (new Identifier (arg.Name, Convert (arg.Location)), InvocationExpression.Roles.Identifier);
					parent.AddChild (tp, InvocationExpression.Roles.TypeParameter);
				}
			}
Пример #43
0
 public virtual void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
 {
     //throw this.CreateException(typeParameterDeclaration);
 }