public override object VisitNew(BoundNewEx x) { return(x.Update( (BoundTypeRef)Accept(x.TypeRef), VisitImmutableArray(x.ArgumentsInSourceOrder), VisitImmutableArray(x.TypeArguments))); }
public override void VisitNew(BoundNewEx x) { if (x.TypeRef.ResolvedType.IsValidType()) { if (x.TypeRef.ResolvedType.IsInterfaceType()) { CannotInstantiate(x, "interface", x.TypeRef); } else if (x.TypeRef.ResolvedType.IsStatic) { CannotInstantiate(x, "static", x.TypeRef); } else if (x.TypeRef.ResolvedType is IPhpTypeSymbol phpt && phpt.IsTrait) { CannotInstantiate(x, "trait", x.TypeRef); } } base.VisitNew(x); }
public override T VisitNew(BoundNewEx x) { CheckMissusedPrimitiveType(x.TypeRef); var type = (TypeSymbol)x.TypeRef.Type; if (type.IsValidType()) { if (type.IsInterfaceType()) { CannotInstantiate(x, "interface", x.TypeRef); } else if (type.IsStatic) { CannotInstantiate(x, "static", x.TypeRef); } else if (type.IsTraitType()) { CannotInstantiate(x, "trait", x.TypeRef); } else // class: { // cannot instantiate Closure if (type == DeclaringCompilation.CoreTypes.Closure) { // Instantiation of '{0}' is not allowed Add(x.TypeRef.PhpSyntax.Span, Devsense.PHP.Errors.Errors.ClosureInstantiated, type.Name); } // else if (type.IsAbstract) { // Cannot instantiate abstract class {0} CannotInstantiate(x, "abstract class", x.TypeRef); } } } return base.VisitNew(x); }
public override void VisitNew(BoundNewEx x) { if (x.TypeRef.ResolvedType.IsValidType()) { if (x.TypeRef.ResolvedType.IsInterfaceType()) { CannotInstantiate(x, "interface", x.TypeRef); } else if (x.TypeRef.ResolvedType.IsStatic) { CannotInstantiate(x, "static", x.TypeRef); } else if (x.TypeRef.ResolvedType.IsTraitType()) { CannotInstantiate(x, "trait", x.TypeRef); } else // class: { // cannot instantiate Closure if (x.TypeRef.ResolvedType == DeclaringCompilation.CoreTypes.Closure) { // Instantiation of '{0}' is not allowed Add(x.TypeRef.TypeRef.Span, Devsense.PHP.Errors.Errors.ClosureInstantiated, x.TypeRef.ResolvedType.Name); } // else if (x.TypeRef.ResolvedType.IsAbstract) { // Cannot instantiate abstract class {0} CannotInstantiate(x, "abstract class", x.TypeRef); } } } base.VisitNew(x); }