diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorCode.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorCode.cs index 71970eed3846..344f2b40ce0d 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorCode.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorCode.cs @@ -61,7 +61,6 @@ internal enum ErrorCode ERR_RefConstraintNotSatisfied = 452, ERR_ValConstraintNotSatisfied = 453, ERR_AmbigUDConv = 457, - ERR_PredefinedTypeNotFound = 518, ERR_BindToBogus = 570, ERR_CantCallSpecialMethod = 571, ERR_BogusType = 648, diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorFacts.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorFacts.cs index c7dc788bcb37..ea084bfddd7a 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorFacts.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Errors/ErrorFacts.cs @@ -179,9 +179,6 @@ public static string GetMessage(ErrorCode code) case ErrorCode.ERR_AmbigUDConv: codeStr = SR.AmbigUDConv; break; - case ErrorCode.ERR_PredefinedTypeNotFound: - codeStr = SR.PredefinedTypeNotFound; - break; case ErrorCode.ERR_BindToBogus: codeStr = SR.BindToBogus; break; diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs index 0667222cdaf7..1362e4f7c0c2 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/RuntimeBinder.cs @@ -626,7 +626,7 @@ private ExprMemberGroup CreateMemberGroupEXPR( CType callingObjectType = callingObject.Type; if (callingObjectType is ArrayType) { - callingType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_ARRAY); + callingType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_ARRAY); } else if (callingObjectType is NullableType callingNub) { @@ -1173,7 +1173,7 @@ internal Expr BindUnaryOperation( { // For true and false, we try to convert to bool first. If that // doesn't work, then we look for user defined operators. - Expr result = _binder.tryConvert(arg1, SymbolLoader.GetReqPredefType(PredefinedType.PT_BOOL)); + Expr result = _binder.tryConvert(arg1, SymbolLoader.GetPredefindType(PredefinedType.PT_BOOL)); if (result != null && op == OperatorKind.OP_FALSE) { // If we can convert to bool, we need to negate the thing if we're looking for false. @@ -1190,7 +1190,7 @@ internal Expr BindUnaryOperation( // the error. if (result == null) { - result = _binder.mustConvert(arg1, SymbolLoader.GetReqPredefType(PredefinedType.PT_BOOL)); + result = _binder.mustConvert(arg1, SymbolLoader.GetPredefindType(PredefinedType.PT_BOOL)); } return result; } @@ -1438,7 +1438,7 @@ internal Expr BindImplicitConversion( CType pDestType = _binder.chooseArrayIndexType(argument); if (null == pDestType) { - pDestType = SymbolLoader.GetReqPredefType(PredefinedType.PT_INT); + pDestType = SymbolLoader.GetPredefindType(PredefinedType.PT_INT); } return _binder.mustCast( @@ -1527,7 +1527,7 @@ internal Expr BindIsEvent( Expr callingObject = CreateLocal(arguments[0].Type, false, locals[0]); MemberLookup mem = new MemberLookup(); - CType boolType = SymbolLoader.GetReqPredefType(PredefinedType.PT_BOOL); + CType boolType = SymbolLoader.GetPredefindType(PredefinedType.PT_BOOL); bool result = false; if (arguments[0].Value == null) diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/BinOpSig.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/BinOpSig.cs index e8b37759bcf1..db41f04f3051 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/BinOpSig.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/BinOpSig.cs @@ -85,8 +85,8 @@ public BinOpFullSig(ExpressionBinder fnc, BinOpSig bos) this.grfos = bos.grfos; this.fnkind = bos.fnkind; - _type1 = pt1 != PredefinedType.PT_UNDEFINEDINDEX ? fnc.GetOptPDT(pt1) : null; - _type2 = pt2 != PredefinedType.PT_UNDEFINEDINDEX ? fnc.GetOptPDT(pt2) : null; + _type1 = pt1 != PredefinedType.PT_UNDEFINEDINDEX ? fnc.GetPredefindType(pt1) : null; + _type2 = pt2 != PredefinedType.PT_UNDEFINEDINDEX ? fnc.GetPredefindType(pt2) : null; _grflt = LiftFlags.None; } diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversion.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversion.cs index 832a0870d753..9566e6adcf0c 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversion.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversion.cs @@ -226,10 +226,10 @@ private void CheckBetterTable() (s_simpleTypeBetter[i][j] == right && s_simpleTypeBetter[j][i] == left) || (s_simpleTypeBetter[i][j] == neither && s_simpleTypeBetter[j][i] == neither)); Debug.Assert( - GetOptPDT((PredefinedType)i) == null || - GetOptPDT((PredefinedType)j) == null || - (!canConvert(GetOptPDT((PredefinedType)i), GetOptPDT((PredefinedType)j), CONVERTTYPE.NOUDC) || s_simpleTypeBetter[i][j] == left) && - (!canConvert(GetOptPDT((PredefinedType)j), GetOptPDT((PredefinedType)i), CONVERTTYPE.NOUDC) || s_simpleTypeBetter[j][i] == left)); + GetPredefindType((PredefinedType)i) == null || + GetPredefindType((PredefinedType)j) == null || + (!canConvert(GetPredefindType((PredefinedType)i), GetPredefindType((PredefinedType)j), CONVERTTYPE.NOUDC) || s_simpleTypeBetter[i][j] == left) && + (!canConvert(GetPredefindType((PredefinedType)j), GetPredefindType((PredefinedType)i), CONVERTTYPE.NOUDC) || s_simpleTypeBetter[j][i] == left)); } } s_fCheckedBetter = true; @@ -279,7 +279,7 @@ private BetterType WhichTypeIsBetter(PredefinedType pt1, PredefinedType pt2, CTy { return BetterType.Right; } - return WhichTypeIsBetter(GetOptPDT(pt1), GetOptPDT(pt2), typeGiven); + return WhichTypeIsBetter(GetPredefindType(pt1), GetPredefindType(pt2), typeGiven); } @@ -766,7 +766,7 @@ private bool BindGrpConversion(ExprMemberGroup grp, CType typeDst, bool needDest if (obj != null && obj.Type.fundType() != FUNDTYPE.FT_REF) { // Must box the object before creating a delegate to it. - obj = mustConvert(obj, GetReqPDT(PredefinedType.PT_OBJECT)); + obj = mustConvert(obj, GetPredefindType(PredefinedType.PT_OBJECT)); } } else @@ -1693,7 +1693,7 @@ private int CompareDstTypesBased(CType type1, bool fImplicit1, CType type2, bool private Expr bindDecimalConstCast(ExprClass exprDestType, CType srcType, ExprConstant src) { CType destType = exprDestType.Type; - CType typeDecimal = SymbolLoader.GetOptPredefType(PredefinedType.PT_DECIMAL); + CType typeDecimal = SymbolLoader.GetPredefindType(PredefinedType.PT_DECIMAL); ConstVal cv; if (typeDecimal == null) diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversions.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversions.cs index ff0b11dd839a..6307ed7de5ba 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversions.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Conversions.cs @@ -143,8 +143,8 @@ public static bool FExpRefConv(SymbolLoader loader, CType typeSrc, CType typeDst return false; } - AggregateSymbol aggIList = loader.GetOptPredefAgg(PredefinedType.PT_G_ILIST); - AggregateSymbol aggIReadOnlyList = loader.GetOptPredefAgg(PredefinedType.PT_G_IREADONLYLIST); + AggregateSymbol aggIList = loader.GetPredefAgg(PredefinedType.PT_G_ILIST); + AggregateSymbol aggIReadOnlyList = loader.GetPredefAgg(PredefinedType.PT_G_IREADONLYLIST); if ((aggIList == null || !loader.IsBaseAggregate(aggIList, aggDst.getAggregate())) && @@ -160,7 +160,7 @@ public static bool FExpRefConv(SymbolLoader loader, CType typeSrc, CType typeDst if (typeDst is ArrayType arrayDest && typeSrc is AggregateType aggtypeSrc) { // * From System.Array and the interfaces it implements, to any array-type. - if (loader.HasIdentityOrImplicitReferenceConversion(loader.GetReqPredefType(PredefinedType.PT_ARRAY), typeSrc)) + if (loader.HasIdentityOrImplicitReferenceConversion(loader.GetPredefindType(PredefinedType.PT_ARRAY), typeSrc)) { return true; } @@ -175,8 +175,8 @@ public static bool FExpRefConv(SymbolLoader loader, CType typeSrc, CType typeDst return false; } - AggregateSymbol aggIList = loader.GetOptPredefAgg(PredefinedType.PT_G_ILIST); - AggregateSymbol aggIReadOnlyList = loader.GetOptPredefAgg(PredefinedType.PT_G_IREADONLYLIST); + AggregateSymbol aggIList = loader.GetPredefAgg(PredefinedType.PT_G_ILIST); + AggregateSymbol aggIReadOnlyList = loader.GetPredefAgg(PredefinedType.PT_G_IREADONLYLIST); if ((aggIList == null || !loader.IsBaseAggregate(aggIList, aggtypeSrc.getAggregate())) && diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExplicitConversion.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExplicitConversion.cs index 4dbbb41f0442..0f0864ba221e 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExplicitConversion.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExplicitConversion.cs @@ -240,8 +240,8 @@ private bool bindExplicitConversionFromArrayToIList() return false; } - AggregateSymbol aggIList = GetSymbolLoader().GetOptPredefAgg(PredefinedType.PT_G_ILIST); - AggregateSymbol aggIReadOnlyList = GetSymbolLoader().GetOptPredefAgg(PredefinedType.PT_G_IREADONLYLIST); + AggregateSymbol aggIList = GetSymbolLoader().GetPredefAgg(PredefinedType.PT_G_ILIST); + AggregateSymbol aggIReadOnlyList = GetSymbolLoader().GetPredefAgg(PredefinedType.PT_G_IREADONLYLIST); if ((aggIList == null || !GetSymbolLoader().IsBaseAggregate(aggIList, aggDest.getAggregate())) && @@ -297,7 +297,7 @@ private bool bindExplicitConversionToTypeVar() { // Need to box first before unboxing. Expr exprT; - ExprClass exprObj = GetExprFactory().CreateClass(_binder.GetReqPDT(PredefinedType.PT_OBJECT)); + ExprClass exprObj = GetExprFactory().CreateClass(_binder.GetPredefindType(PredefinedType.PT_OBJECT)); _binder.bindSimpleCast(_exprSrc, exprObj, out exprT, EXPRFLAG.EXF_FORCE_BOX); _exprSrc = exprT; } @@ -325,8 +325,8 @@ private bool bindExplicitConversionFromIListToArray(ArrayType arrayDest) return false; } - AggregateSymbol aggIList = GetSymbolLoader().GetOptPredefAgg(PredefinedType.PT_G_ILIST); - AggregateSymbol aggIReadOnlyList = GetSymbolLoader().GetOptPredefAgg(PredefinedType.PT_G_IREADONLYLIST); + AggregateSymbol aggIList = GetSymbolLoader().GetPredefAgg(PredefinedType.PT_G_ILIST); + AggregateSymbol aggIReadOnlyList = GetSymbolLoader().GetPredefAgg(PredefinedType.PT_G_IREADONLYLIST); if ((aggIList == null || !GetSymbolLoader().IsBaseAggregate(aggIList, aggSrc.getAggregate())) && @@ -399,7 +399,7 @@ private bool bindExplicitConversionToArray(ArrayType arrayDest) // // * From System.Array and the interfaces it implements, to any array-type. - if (_binder.canConvert(_binder.GetReqPDT(PredefinedType.PT_ARRAY), _typeSrc, CONVERTTYPE.NOUDC)) + if (_binder.canConvert(_binder.GetPredefindType(PredefinedType.PT_ARRAY), _typeSrc, CONVERTTYPE.NOUDC)) { if (_needsExprDest) _binder.bindSimpleCast(_exprSrc, _exprTypeDest, out _exprDest, EXPRFLAG.EXF_REFCHECK); diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExprFactory.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExprFactory.cs index d4dcab816a68..d1202305fcbb 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExprFactory.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExprFactory.cs @@ -69,7 +69,7 @@ public ExprBoundLambda CreateAnonymousMethod(AggregateType delegateType, Scope a new ExprBoundLambda(delegateType, argumentScope); public ExprHoistedLocalExpr CreateHoistedLocalInExpression() => - new ExprHoistedLocalExpr(Types.GetOptPredefAgg(PredefinedType.PT_EXPRESSION).getThisType()); + new ExprHoistedLocalExpr(Types.GetPredefAgg(PredefinedType.PT_EXPRESSION).getThisType()); public ExprMethodInfo CreateMethodInfo(MethPropWithInst mwi) => CreateMethodInfo(mwi.Meth(), mwi.GetType(), mwi.TypeArgs); @@ -77,18 +77,18 @@ public ExprMethodInfo CreateMethodInfo(MethPropWithInst mwi) => public ExprMethodInfo CreateMethodInfo(MethodSymbol method, AggregateType methodType, TypeArray methodParameters) { return new ExprMethodInfo( - Types.GetOptPredefAgg(method.IsConstructor() ? PredefinedType.PT_CONSTRUCTORINFO : PredefinedType.PT_METHODINFO).getThisType(), + Types.GetPredefAgg(method.IsConstructor() ? PredefinedType.PT_CONSTRUCTORINFO : PredefinedType.PT_METHODINFO).getThisType(), method, methodType, methodParameters); } public ExprPropertyInfo CreatePropertyInfo(PropertySymbol prop, AggregateType propertyType) => - new ExprPropertyInfo(Types.GetOptPredefAgg(PredefinedType.PT_PROPERTYINFO).getThisType(), prop, propertyType); + new ExprPropertyInfo(Types.GetPredefAgg(PredefinedType.PT_PROPERTYINFO).getThisType(), prop, propertyType); public ExprFieldInfo CreateFieldInfo(FieldSymbol field, AggregateType fieldType) => - new ExprFieldInfo(field, fieldType, Types.GetOptPredefAgg(PredefinedType.PT_FIELDINFO).getThisType()); + new ExprFieldInfo(field, fieldType, Types.GetPredefAgg(PredefinedType.PT_FIELDINFO).getThisType()); private ExprTypeOf CreateTypeOf(ExprClass sourceType) => - new ExprTypeOf(Types.GetReqPredefAgg(PredefinedType.PT_TYPE).getThisType(), sourceType); + new ExprTypeOf(Types.GetPredefAgg(PredefinedType.PT_TYPE).getThisType(), sourceType); public ExprTypeOf CreateTypeOf(CType sourceType) => CreateTypeOf(CreateClass(sourceType)); @@ -105,7 +105,7 @@ public ExprUserLogicalOp CreateUserLogOpError(CType type, Expr trueFalseCall, Ex public ExprConcat CreateConcat(Expr first, Expr second) => new ExprConcat(first, second); public ExprConstant CreateStringConstant(string str) => - CreateConstant(Types.GetReqPredefAgg(PredefinedType.PT_STRING).getThisType(), ConstVal.Get(str)); + CreateConstant(Types.GetPredefAgg(PredefinedType.PT_STRING).getThisType(), ConstVal.Get(str)); public ExprMultiGet CreateMultiGet(EXPRFLAG flags, CType type, ExprMulti multi) => new ExprMultiGet(type, flags, multi); @@ -187,10 +187,10 @@ private Expr CreateZeroInit(ExprClass typeExpr, Expr originalConstructorCall, bo public ExprConstant CreateConstant(CType type, ConstVal constVal) => new ExprConstant(type, constVal); public ExprConstant CreateIntegerConstant(int x) => - CreateConstant(Types.GetReqPredefAgg(PredefinedType.PT_INT).getThisType(), ConstVal.Get(x)); + CreateConstant(Types.GetPredefAgg(PredefinedType.PT_INT).getThisType(), ConstVal.Get(x)); public ExprConstant CreateBoolConstant(bool b) => - CreateConstant(Types.GetReqPredefAgg(PredefinedType.PT_BOOL).getThisType(), ConstVal.Get(b)); + CreateConstant(Types.GetPredefAgg(PredefinedType.PT_BOOL).getThisType(), ConstVal.Get(b)); public ExprBlock CreateBlock(ExprStatement pOptionalStatements) => new ExprBlock(pOptionalStatements); @@ -203,7 +203,7 @@ public ExprArrayIndex CreateArrayIndex(Expr array, Expr index) } else if (type == null) { - type = Types.GetReqPredefAgg(PredefinedType.PT_INT).getThisType(); + type = Types.GetPredefAgg(PredefinedType.PT_INT).getThisType(); } return new ExprArrayIndex(type, array, index); diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExpressionBinder.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExpressionBinder.cs index fd25dc60a362..7ddae917344c 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExpressionBinder.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ExpressionBinder.cs @@ -358,33 +358,11 @@ private BSYMMGR GetGlobalSymbols() private ExprFactory ExprFactory { get { return Context.ExprFactory; } } - private AggregateType GetReqPDT(PredefinedType pt) + private AggregateType GetPredefindType(PredefinedType pt) { - return GetReqPDT(pt, GetSymbolLoader()); - } - - private static AggregateType GetReqPDT(PredefinedType pt, SymbolLoader symbolLoader) - { - Debug.Assert(pt != PredefinedType.PT_VOID); // use getVoidType() - return symbolLoader.GetReqPredefType(pt); - } - - private AggregateType GetOptPDT(PredefinedType pt) - { - return GetOptPDT(pt, true); - } + Debug.Assert(pt != PredefinedType.PT_VOID); // use getVoidType() - private AggregateType GetOptPDT(PredefinedType pt, bool WarnIfNotFound) - { - Debug.Assert(pt != PredefinedType.PT_VOID); // use getVoidType() - if (WarnIfNotFound) - { - return GetSymbolLoader().GetOptPredefTypeErr(pt); - } - else - { - return GetSymbolLoader().GetOptPredefType(pt); - } + return GetSymbolLoader().GetPredefindType(pt); } private CType VoidType { get { return GetSymbolLoader().GetTypeManager().GetVoid(); } } @@ -435,7 +413,7 @@ internal Expr BindArrayIndexCore(BindingFlag bindFlags, Expr pOp1, Expr pOp2) bIsError = true; } - CType pIntType = GetReqPDT(PredefinedType.PT_INT); + CType pIntType = GetPredefindType(PredefinedType.PT_INT); // Array indexing must occur on an array type. if (!(pOp1.Type is ArrayType pArrayType)) @@ -1250,7 +1228,7 @@ private ExprOperator BadOperatorTypesError(ExpressionKind ek, Expr pOperand1, Ex if (pTypeErr == null) { - pTypeErr = GetReqPDT(PredefinedType.PT_OBJECT); + pTypeErr = GetPredefindType(PredefinedType.PT_OBJECT); } ExprOperator rval = GetExprFactory().CreateOperator(ek, pTypeErr, pOperand1, pOperand2); @@ -1976,7 +1954,7 @@ internal CType chooseArrayIndexType(Expr args) // first, select the allowable types for (int ipt = 0; ipt < s_rgptIntOp.Length; ipt++) { - CType type = GetReqPDT(s_rgptIntOp[ipt]); + CType type = GetPredefindType(s_rgptIntOp[ipt]); foreach (Expr arg in args.ToEnumerable()) { if (!canConvert(arg, type)) diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/GroupToArgsBinder.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/GroupToArgsBinder.cs index de652d7014b4..022d40291f6f 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/GroupToArgsBinder.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/GroupToArgsBinder.cs @@ -325,7 +325,7 @@ private void LookForCandidates() } // Mark object. - AggregateType typeObject = GetSymbolLoader().GetReqPredefType(PredefinedType.PT_OBJECT); + AggregateType typeObject = GetSymbolLoader().GetPredefindType(PredefinedType.PT_OBJECT); _HiddenTypes.Add(typeObject); } } @@ -582,7 +582,7 @@ private static Expr GenerateOptionalArgument( // This is the specific case where we want to create a DateTime // but the constval that stores it is a long. - AggregateType dateTimeType = symbolLoader.GetReqPredefType(PredefinedType.PT_DATETIME); + AggregateType dateTimeType = symbolLoader.GetPredefindType(PredefinedType.PT_DATETIME); optionalArgument = exprFactory.CreateConstant(dateTimeType, ConstVal.Get(DateTime.FromBinary(cv.Int64Val))); } else if (pConstValType.isSimpleOrEnumOrString()) @@ -636,7 +636,7 @@ private static Expr GenerateOptionalArgument( { // Otherwise, we generate Type.Missing - AggregateSymbol agg = symbolLoader.GetOptPredefAgg(PredefinedType.PT_MISSING); + AggregateSymbol agg = symbolLoader.GetPredefAgg(PredefinedType.PT_MISSING); Name name = NameManager.GetPredefinedName(PredefinedName.PN_CAP_VALUE); FieldSymbol field = symbolLoader.LookupAggMember(name, agg, symbmask_t.MASK_FieldSymbol) as FieldSymbol; FieldWithType fwt = new FieldWithType(field, agg.getThisType()); diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ImplicitConversion.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ImplicitConversion.cs index 980052f35343..f11244d5ed70 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ImplicitConversion.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/ImplicitConversion.cs @@ -849,7 +849,7 @@ private bool bindImplicitConversionFromTypeVar(TypeParameterType tyVarSrc) { // For a type var destination we need to cast to object then to the other type var. Expr exprT; - ExprClass exprObj = GetExprFactory().CreateClass(_binder.GetReqPDT(PredefinedType.PT_OBJECT)); + ExprClass exprObj = GetExprFactory().CreateClass(_binder.GetPredefindType(PredefinedType.PT_OBJECT)); _binder.bindSimpleCast(_exprSrc, exprObj, out exprT, EXPRFLAG.EXF_FORCE_BOX); _binder.bindSimpleCast(exprT, _exprTypeDest, out _exprDest, EXPRFLAG.EXF_FORCE_UNBOX); } diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/MemberLookup.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/MemberLookup.cs index 5c38aa812a01..3ee5cc1f8367 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/MemberLookup.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/MemberLookup.cs @@ -677,7 +677,7 @@ public bool Lookup(CSemanticChecker checker, CType typeSrc, Expr obj, ParentSymb } if (typeIface != null || ifaces.Count > 0) - typeCls2 = GetSymbolLoader().GetReqPredefType(PredefinedType.PT_OBJECT); + typeCls2 = GetSymbolLoader().GetPredefindType(PredefinedType.PT_OBJECT); // Search the class first (except possibly object). if (typeCls1 == null || LookupInClass(typeCls1, ref typeCls2)) diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Operators.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Operators.cs index dba78eee1d50..428440ec37f2 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Operators.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Operators.cs @@ -166,8 +166,8 @@ private bool GetStandardAndLiftedBinopSignatures(List rgbofs, BinO continue; } - CType typeSig1 = GetOptPDT(bos.pt1, PredefinedTypes.isRequired(bos.pt1)); - CType typeSig2 = GetOptPDT(bos.pt2, PredefinedTypes.isRequired(bos.pt2)); + CType typeSig1 = GetPredefindType(bos.pt1); + CType typeSig2 = GetPredefindType(bos.pt2); if (typeSig1 == null || typeSig2 == null) continue; @@ -412,7 +412,7 @@ private ExprBinOp bindNullEqualityComparison(ExpressionKind ek, BinOpArgInfo inf Expr arg2 = info.arg2; if (info.binopKind == BinOpKind.Equal) { - CType typeBool = GetReqPDT(PredefinedType.PT_BOOL); + CType typeBool = GetPredefindType(PredefinedType.PT_BOOL); ExprBinOp exprRes = null; if (info.type1 is NullableType && info.type2 is NullType) { @@ -588,7 +588,7 @@ private ExprBinOp BindLiftedStandardBinOp(BinOpArgInfo info, BinOpFullSig bofs, // Check if we have a comparison. If so, set the result type to bool. if (info.binopKind == BinOpKind.Compare || info.binopKind == BinOpKind.Equal) { - resultType = GetReqPDT(PredefinedType.PT_BOOL); + resultType = GetPredefindType(PredefinedType.PT_BOOL); } else { @@ -938,7 +938,7 @@ private bool GetPtrBinOpSigs(List prgbofs, BinOpArgInfo info) for (uint i = 0; i < s_rgptIntOp.Length; i++) { - if (canConvert(info.arg2, typeT = GetReqPDT(s_rgptIntOp[i]))) + if (canConvert(info.arg2, typeT = GetPredefindType(s_rgptIntOp[i]))) { prgbofs.Add(new BinOpFullSig(info.type1, typeT, BindPtrBinOp, OpSigFlags.Convert, LiftFlags.None, BinOpFuncKind.PtrBinOp)); return true; @@ -964,7 +964,7 @@ private bool GetPtrBinOpSigs(List prgbofs, BinOpArgInfo info) for (uint i = 0; i < s_rgptIntOp.Length; i++) { - if (canConvert(info.arg1, typeT = GetReqPDT(s_rgptIntOp[i]))) + if (canConvert(info.arg1, typeT = GetPredefindType(s_rgptIntOp[i]))) { prgbofs.Add(new BinOpFullSig(typeT, info.type2, BindPtrBinOp, OpSigFlags.Convert, LiftFlags.None, BinOpFuncKind.PtrBinOp)); return true; @@ -994,7 +994,7 @@ private bool GetRefEqualSigs(List prgbofs, BinOpArgInfo info) bool fRet = false; CType type1 = info.type1; CType type2 = info.type2; - CType typeObj = GetReqPDT(PredefinedType.PT_OBJECT); + CType typeObj = GetPredefindType(PredefinedType.PT_OBJECT); CType typeCls = null; if (type1 is NullType && type2 is NullType) @@ -1005,7 +1005,7 @@ private bool GetRefEqualSigs(List prgbofs, BinOpArgInfo info) } // Check for: operator ==(System.Delegate, System.Delegate). - CType typeDel = GetReqPDT(PredefinedType.PT_DELEGATE); + CType typeDel = GetPredefindType(PredefinedType.PT_DELEGATE); if (canConvert(info.arg1, typeDel) && canConvert(info.arg2, typeDel) && !type1.isDelegateType() && !type2.isDelegateType()) @@ -1067,14 +1067,14 @@ private bool GetRefEqualSigs(List prgbofs, BinOpArgInfo info) if (type1.isInterfaceType() || type1.isPredefType(PredefinedType.PT_STRING) || GetSymbolLoader().HasBaseConversion(type1, typeDel)) type1 = typeObj; else if (type1 is ArrayType) - type1 = GetReqPDT(PredefinedType.PT_ARRAY); + type1 = GetPredefindType(PredefinedType.PT_ARRAY); else if (!type1.isClassType()) return false; if (type2.isInterfaceType() || type2.isPredefType(PredefinedType.PT_STRING) || GetSymbolLoader().HasBaseConversion(type2, typeDel)) type2 = typeObj; else if (type2 is ArrayType) - type2 = GetReqPDT(PredefinedType.PT_ARRAY); + type2 = GetPredefindType(PredefinedType.PT_ARRAY); else if (!type2.isClassType()) return false; @@ -1526,7 +1526,7 @@ private bool FindApplicableSignatures( { continue; } - if (canConvert(pArgument, typeSig = GetOptPDT(uos.pt))) + if (canConvert(pArgument, typeSig = GetPredefindType(uos.pt))) { break; } @@ -1542,7 +1542,7 @@ private bool FindApplicableSignatures( break; case ConvKind.Unknown: - if (canConvert(pArgument, typeSig = GetOptPDT(uos.pt))) + if (canConvert(pArgument, typeSig = GetPredefindType(uos.pt))) { break; } @@ -1746,7 +1746,7 @@ private Expr BindIncOpCore(ExpressionKind ek, EXPRFLAG flags, Expr exprVal, CTyp if (type.isEnumType() && type.fundType() > FUNDTYPE.FT_LASTINTEGRAL) { // This is an error case when enum derives from an illegal type. Just treat it as an int. - type = GetReqPDT(PredefinedType.PT_INT); + type = GetPredefindType(PredefinedType.PT_INT); } FUNDTYPE ft = type.fundType(); @@ -1764,13 +1764,13 @@ private Expr BindIncOpCore(ExpressionKind ek, EXPRFLAG flags, Expr exprVal, CTyp break; case FUNDTYPE.FT_PTR: cv = ConstVal.Get(1); - pExprResult = BindPtrBinOp(ek, flags, exprVal, GetExprFactory().CreateConstant(GetReqPDT(PredefinedType.PT_INT), cv)); + pExprResult = BindPtrBinOp(ek, flags, exprVal, GetExprFactory().CreateConstant(GetPredefindType(PredefinedType.PT_INT), cv)); break; case FUNDTYPE.FT_I1: case FUNDTYPE.FT_I2: case FUNDTYPE.FT_U1: case FUNDTYPE.FT_U2: - typeTmp = GetReqPDT(PredefinedType.PT_INT); + typeTmp = GetPredefindType(PredefinedType.PT_INT); cv = ConstVal.Get(1); pExprResult = LScalar(ek, flags, exprVal, type, cv, pExprResult, typeTmp); break; @@ -1873,7 +1873,7 @@ private ExprBinOp BindDecBinOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Exp { Debug.Assert(arg1.Type.isPredefType(PredefinedType.PT_DECIMAL) && arg2.Type.isPredefType(PredefinedType.PT_DECIMAL)); - CType typeDec = GetOptPDT(PredefinedType.PT_DECIMAL); + CType typeDec = GetPredefindType(PredefinedType.PT_DECIMAL); Debug.Assert(typeDec != null); CType typeRet; @@ -1897,7 +1897,7 @@ private ExprBinOp BindDecBinOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Exp case ExpressionKind.GreaterThanOrEqual: case ExpressionKind.Eq: case ExpressionKind.NotEq: - typeRet = GetReqPDT(PredefinedType.PT_BOOL); + typeRet = GetPredefindType(PredefinedType.PT_BOOL); break; } @@ -1913,7 +1913,7 @@ private ExprUnaryOp BindDecUnaOp(ExpressionKind ek, EXPRFLAG flags, Expr arg) Debug.Assert(arg.Type.isPredefType(PredefinedType.PT_DECIMAL)); Debug.Assert(ek == ExpressionKind.Negate || ek == ExpressionKind.UnaryPlus); - CType typeDec = GetOptPDT(PredefinedType.PT_DECIMAL); + CType typeDec = GetPredefindType(PredefinedType.PT_DECIMAL); Debug.Assert(typeDec != null); if (ek == ExpressionKind.Negate) @@ -1963,7 +1963,7 @@ private ExprBinOp BindBoolBinOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Ex Debug.Assert(arg1.Type.isPredefType(PredefinedType.PT_BOOL) || (arg1.Type is NullableType argNubType1 && argNubType1.GetUnderlyingType().isPredefType(PredefinedType.PT_BOOL))); Debug.Assert(arg2.Type.isPredefType(PredefinedType.PT_BOOL) || (arg2.Type is NullableType argNubType2 && argNubType2.GetUnderlyingType().isPredefType(PredefinedType.PT_BOOL))); - return GetExprFactory().CreateBinop(ek, GetReqPDT(PredefinedType.PT_BOOL), arg1, arg2); + return GetExprFactory().CreateBinop(ek, GetPredefindType(PredefinedType.PT_BOOL), arg1, arg2); } private ExprOperator BindBoolBitwiseOp(ExpressionKind ek, EXPRFLAG flags, Expr expr1, Expr expr2, BinOpFullSig bofs) @@ -1974,7 +1974,7 @@ private ExprOperator BindBoolBitwiseOp(ExpressionKind ek, EXPRFLAG flags, Expr e if (expr1.Type is NullableType || expr2.Type is NullableType) { - CType typeBool = GetReqPDT(PredefinedType.PT_BOOL); + CType typeBool = GetPredefindType(PredefinedType.PT_BOOL); CType typeRes = GetSymbolLoader().GetTypeManager().GetNullable(typeBool); // Get the non-lifted result. @@ -2017,7 +2017,7 @@ private Expr BindBoolUnaOp(ExpressionKind ek, EXPRFLAG flags, Expr arg) Debug.Assert(ek == ExpressionKind.LogicalNot); // Get the result type and operand type. - CType typeBool = GetReqPDT(PredefinedType.PT_BOOL); + CType typeBool = GetPredefindType(PredefinedType.PT_BOOL); // Determine if arg has a constant value. // Strip off EXPRKIND.EK_SEQUENCE for constant checking. @@ -2044,7 +2044,7 @@ private ExprBinOp BindStrCmpOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Exp PREDEFMETH predefMeth = ek == ExpressionKind.Eq ? PREDEFMETH.PM_STRING_OPEQUALITY : PREDEFMETH.PM_STRING_OPINEQUALITY; ek = ek == ExpressionKind.Eq ? ExpressionKind.StringEq : ExpressionKind.StringNotEq; - return CreateBinopForPredefMethodCall(ek, predefMeth, GetReqPDT(PredefinedType.PT_BOOL), arg1, arg2); + return CreateBinopForPredefMethodCall(ek, predefMeth, GetPredefindType(PredefinedType.PT_BOOL), arg1, arg2); } @@ -2056,10 +2056,10 @@ private ExprBinOp BindRefCmpOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Exp Debug.Assert(ek == ExpressionKind.Eq || ek == ExpressionKind.NotEq); // Must box type variables for the verifier. - arg1 = mustConvert(arg1, GetReqPDT(PredefinedType.PT_OBJECT), CONVERTTYPE.NOUDC); - arg2 = mustConvert(arg2, GetReqPDT(PredefinedType.PT_OBJECT), CONVERTTYPE.NOUDC); + arg1 = mustConvert(arg1, GetPredefindType(PredefinedType.PT_OBJECT), CONVERTTYPE.NOUDC); + arg2 = mustConvert(arg2, GetPredefindType(PredefinedType.PT_OBJECT), CONVERTTYPE.NOUDC); - return GetExprFactory().CreateBinop(ek, GetReqPDT(PredefinedType.PT_BOOL), arg1, arg2); + return GetExprFactory().CreateBinop(ek, GetPredefindType(PredefinedType.PT_BOOL), arg1, arg2); } @@ -2089,13 +2089,13 @@ private Expr BindDelBinOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Expr arg case ExpressionKind.Eq: predefMeth = PREDEFMETH.PM_DELEGATE_OPEQUALITY; - RetType = GetReqPDT(PredefinedType.PT_BOOL); + RetType = GetPredefindType(PredefinedType.PT_BOOL); ek = ExpressionKind.DelegateEq; break; case ExpressionKind.NotEq: predefMeth = PREDEFMETH.PM_DELEGATE_OPINEQUALITY; - RetType = GetReqPDT(PredefinedType.PT_BOOL); + RetType = GetPredefindType(PredefinedType.PT_BOOL); ek = ExpressionKind.DelegateNotEq; break; } @@ -2131,7 +2131,7 @@ private Expr BindEnumBinOp(ExpressionKind ek, EXPRFLAG flags, Expr arg1, Expr ar break; } - CType typeOp = GetReqPDT(ptOp); + CType typeOp = GetPredefindType(ptOp); arg1 = mustCast(arg1, typeOp, CONVERTTYPE.NOUDC); arg2 = mustCast(arg2, typeOp, CONVERTTYPE.NOUDC); @@ -2187,7 +2187,7 @@ private Expr BindLiftedEnumArithmeticBinOp(ExpressionKind ek, EXPRFLAG flags, Ex break; } - NullableType typeOp = GetTypes().GetNullable(GetReqPDT(ptOp)); + NullableType typeOp = GetTypes().GetNullable(GetPredefindType(ptOp)); arg1 = mustCast(arg1, typeOp, CONVERTTYPE.NOUDC); arg2 = mustCast(arg2, typeOp, CONVERTTYPE.NOUDC); @@ -2239,7 +2239,7 @@ private Expr BindEnumUnaOp(ExpressionKind ek, EXPRFLAG flags, Expr arg) break; } - CType typeOp = GetReqPDT(ptOp); + CType typeOp = GetPredefindType(ptOp); arg = mustCast(arg, typeOp, CONVERTTYPE.NOUDC); Expr exprRes = BindIntOp(ek, flags, arg, null, ptOp); @@ -2352,7 +2352,7 @@ private ExprOperator BindIntOp(ExpressionKind kind, EXPRFLAG flags, Expr op1, Ex { //Debug.Assert(kind.isRelational() || kind.isArithmetic() || kind.isBitwise()); Debug.Assert(ptOp == PredefinedType.PT_INT || ptOp == PredefinedType.PT_UINT || ptOp == PredefinedType.PT_LONG || ptOp == PredefinedType.PT_ULONG); - CType typeOp = GetReqPDT(ptOp); + CType typeOp = GetPredefindType(ptOp); Debug.Assert(typeOp != null); Debug.Assert(op1 != null && op1.Type == typeOp); Debug.Assert(op2 == null || op2.Type == typeOp); @@ -2363,7 +2363,7 @@ private ExprOperator BindIntOp(ExpressionKind kind, EXPRFLAG flags, Expr op1, Ex return BindIntegerNeg(flags, op1, ptOp); } - CType typeDest = kind.IsRelational() ? GetReqPDT(PredefinedType.PT_BOOL) : typeOp; + CType typeDest = kind.IsRelational() ? GetPredefindType(PredefinedType.PT_BOOL) : typeOp; ExprOperator exprRes = GetExprFactory().CreateOperator(kind, typeDest, op1, op2); exprRes.Flags |= flags; @@ -2404,7 +2404,7 @@ private ExprOperator BindIntegerNeg(EXPRFLAG flags, Expr op, PredefinedType ptOp Debug.Assert(ptOp == PredefinedType.PT_INT || ptOp == PredefinedType.PT_UINT || ptOp == PredefinedType.PT_LONG || ptOp == PredefinedType.PT_ULONG); - CType typeOp = GetReqPDT(ptOp); + CType typeOp = GetPredefindType(ptOp); Debug.Assert(typeOp != null); Debug.Assert(op != null && op.Type == typeOp); @@ -2415,7 +2415,7 @@ private ExprOperator BindIntegerNeg(EXPRFLAG flags, Expr op, PredefinedType ptOp if (ptOp == PredefinedType.PT_UINT && op.Type.fundType() == FUNDTYPE.FT_U4) { - ExprClass exprObj = GetExprFactory().CreateClass(GetReqPDT(PredefinedType.PT_LONG)); + ExprClass exprObj = GetExprFactory().CreateClass(GetPredefindType(PredefinedType.PT_LONG)); op = mustConvertCore(op, exprObj, CONVERTTYPE.NOUDC); } @@ -2436,7 +2436,7 @@ private ExprOperator bindFloatOp(ExpressionKind kind, EXPRFLAG flags, Expr op1, Debug.Assert(op1.Type.isPredefType(PredefinedType.PT_FLOAT) || op1.Type.isPredefType(PredefinedType.PT_DOUBLE)); // Allocate the result expression. - CType typeDest = kind.IsRelational() ? GetReqPDT(PredefinedType.PT_BOOL) : op1.Type; + CType typeDest = kind.IsRelational() ? GetPredefindType(PredefinedType.PT_BOOL) : op1.Type; ExprOperator exprRes = GetExprFactory().CreateOperator(kind, typeDest, op1, op2); flags = ~EXPRFLAG.EXF_CHECKOVERFLOW; @@ -2542,8 +2542,8 @@ private Expr BindUserBoolOp(ExpressionKind kind, ExprCall pCall) GetErrorContext().Error(ErrorCode.ERR_MustHaveOpTF, typeRet); return GetExprFactory().CreateUserLogOpError(typeRet, pCallTorF, pCall); } - pCallT = mustConvert(pCallT, GetReqPDT(PredefinedType.PT_BOOL)); - pCallF = mustConvert(pCallF, GetReqPDT(PredefinedType.PT_BOOL)); + pCallT = mustConvert(pCallT, GetPredefindType(PredefinedType.PT_BOOL)); + pCallF = mustConvert(pCallF, GetPredefindType(PredefinedType.PT_BOOL)); return GetExprFactory().CreateUserLogOp(typeRet, kind == ExpressionKind.LogicalAnd ? pCallF : pCallT, pCall); } @@ -2917,7 +2917,7 @@ private AggregateType GetEnumBinOpType(ExpressionKind ek, CType argType1, CType default: Debug.Assert(ek.IsRelational()); - typeDst = GetReqPDT(PredefinedType.PT_BOOL); + typeDst = GetPredefindType(PredefinedType.PT_BOOL); break; } diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/PredefinedMembers.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/PredefinedMembers.cs index 5aaa65dff52d..c59fcdf42da8 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/PredefinedMembers.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/PredefinedMembers.cs @@ -392,7 +392,7 @@ private Name GetPredefName(PredefinedName pn) } private AggregateSymbol GetOptPredefAgg(PredefinedType pt) { - return GetSymbolLoader().GetOptPredefAgg(pt); + return GetSymbolLoader().GetPredefAgg(pt); } private CType LoadTypeFromSignature(int[] signature, ref int indexIntoSignatures, TypeArray classTyVars) diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/SemanticChecker.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/SemanticChecker.cs index b4b436bfb787..195c48f46d14 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/SemanticChecker.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/SemanticChecker.cs @@ -145,7 +145,7 @@ private ErrorHandling ErrorContext //protected CompilerPhase GetCompPhase() { return SymbolLoader.CompPhase(); } //protected void SetCompPhase(CompilerPhase compPhase) { SymbolLoader.compPhase = compPhase; } - public PredefinedTypes getPredefTypes() { return SymbolLoader.getPredefTypes(); } + public PredefinedTypes getPredefTypes() { return SymbolLoader.GetPredefindTypes(); } // // SymbolLoader forwarders (end) ///////////////////////////////////////////////////////////////////////////////// diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolLoader.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolLoader.cs index 9a04200c52fd..b08884600344 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolLoader.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Symbols/SymbolLoader.cs @@ -59,7 +59,7 @@ public NameManager GetNameManager() return _nameManager; } - public PredefinedTypes getPredefTypes() + public PredefinedTypes GetPredefindTypes() { return GlobalSymbolContext.GetPredefTypes(); } @@ -94,44 +94,9 @@ public MiscSymFactory GetGlobalMiscSymFactory() return GlobalSymbolContext.GetGlobalMiscSymFactory(); } - public AggregateType GetReqPredefType(PredefinedType pt) - { - AggregateSymbol agg = GetTypeManager().GetReqPredefAgg(pt); - if (agg == null) - { - Debug.Assert(false, "Required predef type missing"); - return null; - } - AggregateType ats = agg.getThisType(); - return ats; - } + public AggregateSymbol GetPredefAgg(PredefinedType pt) => GetTypeManager().GetPredefAgg(pt); - public AggregateSymbol GetOptPredefAgg(PredefinedType pt) - { - return GetTypeManager().GetOptPredefAgg(pt); - } - - public AggregateType GetOptPredefType(PredefinedType pt) - { - AggregateSymbol agg = GetTypeManager().GetOptPredefAgg(pt); - if (agg == null) - return null; - AggregateType ats = agg.getThisType(); - return ats; - } - - public AggregateType GetOptPredefTypeErr(PredefinedType pt) - { - AggregateSymbol agg = GetTypeManager().GetOptPredefAgg(pt); - if (agg == null) - { - getPredefTypes().ReportMissingPredefTypeError(ErrorContext, pt); - return null; - } - - AggregateType ats = agg.getThisType(); - return ats; - } + public AggregateType GetPredefindType(PredefinedType pt) => GetPredefAgg(pt).getThisType(); public Symbol LookupAggMember(Name name, AggregateSymbol agg, symbmask_t mask) { @@ -157,7 +122,7 @@ typeSym is ArrayType || case TypeKind.TK_AggregateType: return (AggregateType)typeSym; case TypeKind.TK_ArrayType: - return GetReqPredefType(PredefinedType.PT_ARRAY); + return GetPredefindType(PredefinedType.PT_ARRAY); case TypeKind.TK_TypeParameterType: return ((TypeParameterType)typeSym).GetEffectiveBaseClass(); case TypeKind.TK_NullableType: @@ -384,7 +349,7 @@ private bool HasImplicitReferenceConversion(CType pSource, CType pDest) } // * From any array type to System.Array or any interface implemented by System.Array. - if (pDest.isPredefType(PredefinedType.PT_ARRAY) || IsBaseInterface(GetReqPredefType(PredefinedType.PT_ARRAY), pDest)) + if (pDest.isPredefType(PredefinedType.PT_ARRAY) || IsBaseInterface(GetPredefindType(PredefinedType.PT_ARRAY), pDest)) { return true; } @@ -410,7 +375,7 @@ private bool HasImplicitReferenceConversion(CType pSource, CType pDest) if (pSource.isDelegateType() && (pDest.isPredefType(PredefinedType.PT_MULTIDEL) || pDest.isPredefType(PredefinedType.PT_DELEGATE) || - IsBaseInterface(GetReqPredefType(PredefinedType.PT_MULTIDEL), pDest))) + IsBaseInterface(GetPredefindType(PredefinedType.PT_MULTIDEL), pDest))) { return true; } @@ -767,7 +732,7 @@ public bool HasBaseConversion(CType pSource, CType pDest) public bool FCanLift() { - return null != GetOptPredefAgg(PredefinedType.PT_G_OPTIONAL); + return null != GetPredefAgg(PredefinedType.PT_G_OPTIONAL); } public bool IsBaseAggregate(AggregateSymbol derived, AggregateSymbol @base) diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Tree/Visitors/ExpressionTreeRewriter.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Tree/Visitors/ExpressionTreeRewriter.cs index 0a5ba0a218ce..d5f0de169143 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Tree/Visitors/ExpressionTreeRewriter.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Tree/Visitors/ExpressionTreeRewriter.cs @@ -104,7 +104,7 @@ protected override Expr VisitBOUNDLAMBDA(ExprBoundLambda anonmeth) CType delegateType = anonmeth.DelegateType; TypeArray lambdaTypeParams = GetSymbolLoader().getBSymmgr().AllocParams(1, new CType[] { delegateType }); - AggregateType expressionType = GetSymbolLoader().GetOptPredefTypeErr(PredefinedType.PT_EXPRESSION); + AggregateType expressionType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_EXPRESSION); MethWithInst mwi = new MethWithInst(lambdaMethod, expressionType, lambdaTypeParams); Expr createParameters = CreateWraps(anonmeth); Expr body = RewriteLambdaBody(anonmeth); @@ -215,7 +215,7 @@ protected override Expr VisitCONCAT(ExprConcat expr) Expr p1 = Visit(expr.FirstArgument); Expr p2 = Visit(expr.SecondArgument); MethodSymbol method = GetPreDefMethod(pdm); - Expr methodInfo = GetExprFactory().CreateMethodInfo(method, GetSymbolLoader().GetReqPredefType(PredefinedType.PT_STRING), null); + Expr methodInfo = GetExprFactory().CreateMethodInfo(method, GetSymbolLoader().GetPredefindType(PredefinedType.PT_STRING), null); return GenerateCall(PREDEFMETH.PM_EXPRESSION_ADD_USER_DEFINED, p1, p2, methodInfo); } protected override Expr VisitBINOP(ExprBinOp expr) @@ -865,7 +865,7 @@ private Expr GenerateUserDefinedConversion(ExprUserDefinedConversion pExpr, Expr private Expr GenerateParameter(string name, CType CType) { - GetSymbolLoader().GetReqPredefType(PredefinedType.PT_STRING); // force an ensure state + GetSymbolLoader().GetPredefindType(PredefinedType.PT_STRING); // force an ensure state ExprConstant nameString = GetExprFactory().CreateStringConstant(name); ExprTypeOf pTypeOf = CreateTypeOf(CType); return GenerateCall(PREDEFMETH.PM_EXPRESSION_PARAMETER, pTypeOf, nameString); @@ -981,7 +981,7 @@ private Expr GenerateDelegateConstructor(ExprCall expr) ExprFuncPtr funcptr = (ExprFuncPtr)origArgs.OptionalNextListNode; Debug.Assert(funcptr != null); MethodSymbol createDelegateMethod = GetPreDefMethod(PREDEFMETH.PM_METHODINFO_CREATEDELEGATE_TYPE_OBJECT); - AggregateType delegateType = GetSymbolLoader().GetOptPredefTypeErr(PredefinedType.PT_DELEGATE); + AggregateType delegateType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_DELEGATE); MethWithInst mwi = new MethWithInst(createDelegateMethod, delegateType); Expr instance = GenerateConstant(GetExprFactory().CreateMethodInfo(funcptr.MethWithInst)); @@ -1009,7 +1009,7 @@ private Expr GenerateArgsList(Expr oldArgs) private Expr GenerateIndexList(Expr oldIndices) { - CType intType = symbolLoader.GetReqPredefType(PredefinedType.PT_INT); + CType intType = symbolLoader.GetPredefindType(PredefinedType.PT_INT); Expr newIndices = null; Expr newIndicesTail = newIndices; @@ -1032,7 +1032,7 @@ private Expr GenerateConstant(Expr expr) { EXPRFLAG flags = 0; - AggregateType pObject = GetSymbolLoader().GetReqPredefType(PredefinedType.PT_OBJECT); + AggregateType pObject = GetSymbolLoader().GetPredefindType(PredefinedType.PT_OBJECT); if (expr.Type is NullType) { @@ -1040,7 +1040,7 @@ private Expr GenerateConstant(Expr expr) return GenerateCall(PREDEFMETH.PM_EXPRESSION_CONSTANT_OBJECT_TYPE, expr, pTypeOf); } - AggregateType stringType = GetSymbolLoader().GetReqPredefType(PredefinedType.PT_STRING); + AggregateType stringType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_STRING); if (expr.Type != stringType) { flags = EXPRFLAG.EXF_BOX; @@ -1060,7 +1060,7 @@ private ExprCall GenerateCall(PREDEFMETH pdm, Expr arg1) // be handling this error if (method == null) return null; - AggregateType expressionType = GetSymbolLoader().GetOptPredefTypeErr(PredefinedType.PT_EXPRESSION); + AggregateType expressionType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_EXPRESSION); MethWithInst mwi = new MethWithInst(method, expressionType); ExprMemberGroup pMemGroup = GetExprFactory().CreateMemGroup(null, mwi); ExprCall call = GetExprFactory().CreateCall(0, mwi.Meth().RetType, arg1, pMemGroup, mwi); @@ -1073,7 +1073,7 @@ private ExprCall GenerateCall(PREDEFMETH pdm, Expr arg1, Expr arg2) MethodSymbol method = GetPreDefMethod(pdm); if (method == null) return null; - AggregateType expressionType = GetSymbolLoader().GetOptPredefTypeErr(PredefinedType.PT_EXPRESSION); + AggregateType expressionType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_EXPRESSION); Expr args = GetExprFactory().CreateList(arg1, arg2); MethWithInst mwi = new MethWithInst(method, expressionType); ExprMemberGroup pMemGroup = GetExprFactory().CreateMemGroup(null, mwi); @@ -1087,7 +1087,7 @@ private ExprCall GenerateCall(PREDEFMETH pdm, Expr arg1, Expr arg2, Expr arg3) MethodSymbol method = GetPreDefMethod(pdm); if (method == null) return null; - AggregateType expressionType = GetSymbolLoader().GetOptPredefTypeErr(PredefinedType.PT_EXPRESSION); + AggregateType expressionType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_EXPRESSION); Expr args = GetExprFactory().CreateList(arg1, arg2, arg3); MethWithInst mwi = new MethWithInst(method, expressionType); ExprMemberGroup pMemGroup = GetExprFactory().CreateMemGroup(null, mwi); @@ -1101,7 +1101,7 @@ private ExprCall GenerateCall(PREDEFMETH pdm, Expr arg1, Expr arg2, Expr arg3, E MethodSymbol method = GetPreDefMethod(pdm); if (method == null) return null; - AggregateType expressionType = GetSymbolLoader().GetOptPredefTypeErr(PredefinedType.PT_EXPRESSION); + AggregateType expressionType = GetSymbolLoader().GetPredefindType(PredefinedType.PT_EXPRESSION); Expr args = GetExprFactory().CreateList(arg1, arg2, arg3, arg4); MethWithInst mwi = new MethWithInst(method, expressionType); ExprMemberGroup pMemGroup = GetExprFactory().CreateMemGroup(null, mwi); @@ -1113,7 +1113,7 @@ private ExprCall GenerateCall(PREDEFMETH pdm, Expr arg1, Expr arg2, Expr arg3, E private ExprArrayInit GenerateParamsArray(Expr args, PredefinedType pt) { int parameterCount = ExpressionIterator.Count(args); - AggregateType paramsArrayElementType = GetSymbolLoader().GetOptPredefTypeErr(pt); + AggregateType paramsArrayElementType = GetSymbolLoader().GetPredefindType(pt); ArrayType paramsArrayType = GetSymbolLoader().GetTypeManager().GetArray(paramsArrayElementType, 1, true); ExprConstant paramsArrayArg = GetExprFactory().CreateIntegerConstant(parameterCount); return GetExprFactory().CreateArrayInit(paramsArrayType, args, paramsArrayArg, new int[] { parameterCount }, parameterCount); diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/PredefinedTypes.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/PredefinedTypes.cs index 9a27369f4a06..762f21c02869 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/PredefinedTypes.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/PredefinedTypes.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using Microsoft.CSharp.RuntimeBinder.Errors; using Microsoft.CSharp.RuntimeBinder.Syntax; namespace Microsoft.CSharp.RuntimeBinder.Semantics @@ -13,26 +12,20 @@ namespace Microsoft.CSharp.RuntimeBinder.Semantics internal sealed class PredefinedTypes { private SymbolTable _runtimeBinderSymbolTable; - private readonly BSYMMGR _pBSymmgr; + private readonly BSYMMGR _symbolManager; private AggregateSymbol[] _predefSyms; // array of predefined symbol types. - public PredefinedTypes(BSYMMGR pBSymmgr) + public PredefinedTypes(BSYMMGR symbolManager) { - _pBSymmgr = pBSymmgr; + _symbolManager = symbolManager; _runtimeBinderSymbolTable = null; } - // We want to delay load the predef syms as needed. + // We want to delay load the predefined symbols as needed. private AggregateSymbol DelayLoadPredefSym(PredefinedType pt) { CType type = _runtimeBinderSymbolTable.GetCTypeFromType(PredefinedTypeFacts.GetAssociatedSystemType(pt)); AggregateSymbol sym = type.getAggregate(); - - // If we failed to load this thing, we have problems. - if (sym == null) - { - return null; - } return InitializePredefinedType(sym, pt); } @@ -48,121 +41,37 @@ internal static AggregateSymbol InitializePredefinedType(AggregateSymbol sym, Pr public void Init(SymbolTable symtable) { _runtimeBinderSymbolTable = symtable; - Debug.Assert(_pBSymmgr != null); + Debug.Assert(_symbolManager != null); Debug.Assert(_predefSyms == null); _predefSyms = new AggregateSymbol[(int)PredefinedType.PT_COUNT]; } - public void ReportMissingPredefTypeError(ErrorHandling errorContext, PredefinedType pt) - { - Debug.Assert(_pBSymmgr != null); - Debug.Assert(_predefSyms != null); - Debug.Assert((PredefinedType)0 <= pt && pt < PredefinedType.PT_COUNT && _predefSyms[(int)pt] == null); - - // We do not assert that !predefTypeInfo[pt].isRequired because if the user is defining - // their own MSCorLib and is defining a required PredefType, they'll run into this error - // and we need to allow it to go through. - - errorContext.Error(ErrorCode.ERR_PredefinedTypeNotFound, PredefinedTypeFacts.GetName(pt)); - } - - public AggregateSymbol GetReqPredefAgg(PredefinedType pt) - { - if (!PredefinedTypeFacts.IsRequired(pt)) throw Error.InternalCompilerError(); - if (_predefSyms[(int)pt] == null) - { - // Delay load this thing. - _predefSyms[(int)pt] = DelayLoadPredefSym(pt); - } - return _predefSyms[(int)pt]; - } - - public AggregateSymbol GetOptPredefAgg(PredefinedType pt) - { - if (_predefSyms[(int)pt] == null) - { - // Delay load this thing. - _predefSyms[(int)pt] = DelayLoadPredefSym(pt); - } - - Debug.Assert(_predefSyms != null); - return _predefSyms[(int)pt]; - } + public AggregateSymbol GetPredefinedAggregate(PredefinedType pt) => + _predefSyms[(int)pt] ?? (_predefSyms[(int)pt] = DelayLoadPredefSym(pt)); //////////////////////////////////////////////////////////////////////////////// // Some of the predefined types have built-in names, like "int" or "string" or // "object". This return the nice name if one exists; otherwise null is // returned. - private static string GetNiceName(PredefinedType pt) - { - return PredefinedTypeFacts.GetNiceName(pt); - } + private static string GetNiceName(PredefinedType pt) => PredefinedTypeFacts.GetNiceName(pt); - public static string GetNiceName(AggregateSymbol type) - { - if (type.IsPredefined()) - return GetNiceName(type.GetPredefType()); - else - return null; - } + public static string GetNiceName(AggregateSymbol type) => + type.IsPredefined() ? GetNiceName(type.GetPredefType()) : null; - public static string GetFullName(PredefinedType pt) - { - return PredefinedTypeFacts.GetName(pt); - } - - public static bool isRequired(PredefinedType pt) - { - return PredefinedTypeFacts.IsRequired(pt); - } + public static string GetFullName(PredefinedType pt) => PredefinedTypeFacts.GetName(pt); } internal static class PredefinedTypeFacts { - internal static string GetName(PredefinedType type) - { - return s_pdTypes[(int)type].name; - } + internal static string GetName(PredefinedType type) => s_types[(int)type].Name; - internal static bool IsRequired(PredefinedType type) - { - return s_pdTypes[(int)type].required; - } + internal static FUNDTYPE GetFundType(PredefinedType type) => s_types[(int)type].FundType; - internal static FUNDTYPE GetFundType(PredefinedType type) - { - return s_pdTypes[(int)type].fundType; - } + internal static Type GetAssociatedSystemType(PredefinedType type) => s_types[(int)type].AssociatedSystemType; - internal static Type GetAssociatedSystemType(PredefinedType type) - { - return s_pdTypes[(int)type].AssociatedSystemType; - } - - internal static bool IsSimpleType(PredefinedType type) - { - switch (type) - { - case PredefinedType.PT_BYTE: - case PredefinedType.PT_SHORT: - case PredefinedType.PT_INT: - case PredefinedType.PT_LONG: - case PredefinedType.PT_FLOAT: - case PredefinedType.PT_DOUBLE: - case PredefinedType.PT_DECIMAL: - case PredefinedType.PT_CHAR: - case PredefinedType.PT_BOOL: - case PredefinedType.PT_SBYTE: - case PredefinedType.PT_USHORT: - case PredefinedType.PT_UINT: - case PredefinedType.PT_ULONG: - return true; - default: - return false; - } - } + internal static bool IsSimpleType(PredefinedType type) => type < PredefinedType.FirstNonSimpleType; internal static bool IsNumericType(PredefinedType type) { @@ -224,184 +133,177 @@ internal static string GetNiceName(PredefinedType type) } } - internal static bool IsPredefinedType(string name) - { - return s_pdTypeNames.ContainsKey(name); - } - - internal static PredefinedType GetPredefTypeIndex(string name) - { - return s_pdTypeNames[name]; - } + public static PredefinedType TryGetPredefTypeIndex(string name) => + s_typesByName.TryGetValue(name, out PredefinedType type) ? type : PredefinedType.PT_UNDEFINEDINDEX; private sealed class PredefinedTypeInfo { - internal readonly PredefinedType type; - internal readonly string name; - internal readonly bool required; - internal readonly FUNDTYPE fundType; - internal readonly Type AssociatedSystemType; +#if DEBUG + public readonly PredefinedType Type; +#endif + public readonly string Name; + public readonly FUNDTYPE FundType; + public readonly Type AssociatedSystemType; - internal PredefinedTypeInfo(PredefinedType type, Type associatedSystemType, string name, bool required, int arity, AggKindEnum aggKind, FUNDTYPE fundType, bool inMscorlib) + internal PredefinedTypeInfo(PredefinedType type, Type associatedSystemType, string name, FUNDTYPE fundType) { - this.type = type; - this.name = name; - this.required = required; - this.fundType = fundType; +#if DEBUG + Type = type; +#endif + Name = name; + FundType = fundType; AssociatedSystemType = associatedSystemType; } - internal PredefinedTypeInfo(PredefinedType type, Type associatedSystemType, string name, bool required, int arity, bool inMscorlib) - : this(type, associatedSystemType, name, required, arity, AggKindEnum.Class, FUNDTYPE.FT_REF, inMscorlib) + internal PredefinedTypeInfo(PredefinedType type, Type associatedSystemType, string name) + : this(type, associatedSystemType, name, FUNDTYPE.FT_REF) { } } - private static readonly PredefinedTypeInfo[] s_pdTypes = new PredefinedTypeInfo[] { - new PredefinedTypeInfo(PredefinedType.PT_BYTE, typeof(byte), "System.Byte", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_U1, true), - new PredefinedTypeInfo(PredefinedType.PT_SHORT, typeof(short), "System.Int16", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_I2, true), - new PredefinedTypeInfo(PredefinedType.PT_INT, typeof(int), "System.Int32", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_I4, true), - new PredefinedTypeInfo(PredefinedType.PT_LONG, typeof(long), "System.Int64", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_I8, true), - new PredefinedTypeInfo(PredefinedType.PT_FLOAT, typeof(float), "System.Single", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_R4, true), - new PredefinedTypeInfo(PredefinedType.PT_DOUBLE, typeof(double), "System.Double", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_R8, true), - new PredefinedTypeInfo(PredefinedType.PT_DECIMAL, typeof(decimal), "System.Decimal", false, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_CHAR, typeof(char), "System.Char", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_U2, true), - new PredefinedTypeInfo(PredefinedType.PT_BOOL, typeof(bool), "System.Boolean", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_I1, true), - new PredefinedTypeInfo(PredefinedType.PT_SBYTE, typeof(sbyte), "System.SByte", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_I1, true), - new PredefinedTypeInfo(PredefinedType.PT_USHORT, typeof(ushort), "System.UInt16", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_U2, true), - new PredefinedTypeInfo(PredefinedType.PT_UINT, typeof(uint), "System.UInt32", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_U4, true), - new PredefinedTypeInfo(PredefinedType.PT_ULONG, typeof(ulong), "System.UInt64", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_U8, true), - new PredefinedTypeInfo(PredefinedType.PT_INTPTR, typeof(IntPtr), "System.IntPtr", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_UINTPTR, typeof(UIntPtr), "System.UIntPtr", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_OBJECT, typeof(object), "System.Object", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_STRING, typeof(string), "System.String", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DELEGATE, typeof(Delegate), "System.Delegate", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_MULTIDEL, typeof(MulticastDelegate), "System.MulticastDelegate", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ARRAY, typeof(Array), "System.Array", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_EXCEPTION, typeof(Exception), "System.Exception", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_TYPE, typeof(Type), "System.Type", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_MONITOR, typeof(System.Threading.Monitor), "System.Threading.Monitor", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_VALUE, typeof(ValueType), "System.ValueType", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ENUM, typeof(Enum), "System.Enum", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DATETIME, typeof(DateTime), "System.DateTime", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_DEBUGGABLEATTRIBUTE, typeof(DebuggableAttribute), "System.Diagnostics.DebuggableAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEBUGGABLEATTRIBUTE_DEBUGGINGMODES, typeof(DebuggableAttribute.DebuggingModes), "System.Diagnostics.DebuggableAttribute.DebuggingModes", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_IN, typeof(System.Runtime.InteropServices.InAttribute), "System.Runtime.InteropServices.InAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_OUT, typeof(System.Runtime.InteropServices.OutAttribute), "System.Runtime.InteropServices.OutAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ATTRIBUTE, typeof(Attribute), "System.Attribute", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ATTRIBUTEUSAGE, typeof(AttributeUsageAttribute), "System.AttributeUsageAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ATTRIBUTETARGETS, typeof(AttributeTargets), "System.AttributeTargets", false, 0, AggKindEnum.Enum, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_OBSOLETE, typeof(ObsoleteAttribute), "System.ObsoleteAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_CONDITIONAL, typeof(ConditionalAttribute), "System.Diagnostics.ConditionalAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_CLSCOMPLIANT, typeof(CLSCompliantAttribute), "System.CLSCompliantAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_GUID, typeof(System.Runtime.InteropServices.GuidAttribute), "System.Runtime.InteropServices.GuidAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEFAULTMEMBER, typeof(System.Reflection.DefaultMemberAttribute), "System.Reflection.DefaultMemberAttribute", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_PARAMS, typeof(ParamArrayAttribute), "System.ParamArrayAttribute", true, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_COMIMPORT, typeof(System.Runtime.InteropServices.ComImportAttribute), "System.Runtime.InteropServices.ComImportAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_FIELDOFFSET, typeof(System.Runtime.InteropServices.FieldOffsetAttribute), "System.Runtime.InteropServices.FieldOffsetAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_STRUCTLAYOUT, typeof(System.Runtime.InteropServices.StructLayoutAttribute), "System.Runtime.InteropServices.StructLayoutAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_LAYOUTKIND, typeof(System.Runtime.InteropServices.LayoutKind), "System.Runtime.InteropServices.LayoutKind", false, 0, AggKindEnum.Enum, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_MARSHALAS, typeof(System.Runtime.InteropServices.MarshalAsAttribute), "System.Runtime.InteropServices.MarshalAsAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DLLIMPORT, typeof(System.Runtime.InteropServices.DllImportAttribute), "System.Runtime.InteropServices.DllImportAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_INDEXERNAME, typeof(System.Runtime.CompilerServices.IndexerNameAttribute), "System.Runtime.CompilerServices.IndexerNameAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DECIMALCONSTANT, typeof(System.Runtime.CompilerServices.DecimalConstantAttribute), "System.Runtime.CompilerServices.DecimalConstantAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEFAULTVALUE, typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute), "System.Runtime.InteropServices.DefaultParameterValueAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_UNMANAGEDFUNCTIONPOINTER, typeof(System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute), "System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_CALLINGCONVENTION, typeof(System.Runtime.InteropServices.CallingConvention), "System.Runtime.InteropServices.CallingConvention", false, 0, AggKindEnum.Enum, FUNDTYPE.FT_I4, true), - new PredefinedTypeInfo(PredefinedType.PT_CHARSET, typeof(System.Runtime.InteropServices.CharSet), "System.Runtime.InteropServices.CharSet", false, 0, AggKindEnum.Enum, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_TYPEHANDLE, typeof(RuntimeTypeHandle), "System.RuntimeTypeHandle", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_FIELDHANDLE, typeof(RuntimeFieldHandle), "System.RuntimeFieldHandle", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_METHODHANDLE, typeof(RuntimeMethodHandle), "System.RuntimeMethodHandle", false, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_G_DICTIONARY, typeof(Dictionary<,>), "System.Collections.Generic.Dictionary`2", false, 2, true), - new PredefinedTypeInfo(PredefinedType.PT_IASYNCRESULT, typeof(IAsyncResult), "System.IAsyncResult", false, 0, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_ASYNCCBDEL, typeof(AsyncCallback), "System.AsyncCallback", false, 0, AggKindEnum.Delegate, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_IDISPOSABLE, typeof(IDisposable), "System.IDisposable", true, 0, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_IENUMERABLE, typeof(System.Collections.IEnumerable), "System.Collections.IEnumerable", true, 0, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_IENUMERATOR, typeof(System.Collections.IEnumerator), "System.Collections.IEnumerator", true, 0, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_SYSTEMVOID, typeof(void), "System.Void", true, 0, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_RUNTIMEHELPERS, typeof(System.Runtime.CompilerServices.RuntimeHelpers), "System.Runtime.CompilerServices.RuntimeHelpers", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_VOLATILEMOD, typeof(System.Runtime.CompilerServices.IsVolatile), "System.Runtime.CompilerServices.IsVolatile", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_COCLASS, typeof(System.Runtime.InteropServices.CoClassAttribute), "System.Runtime.InteropServices.CoClassAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ACTIVATOR, typeof(Activator), "System.Activator", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_G_IENUMERABLE, typeof(IEnumerable<>), "System.Collections.Generic.IEnumerable`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_G_IENUMERATOR, typeof(IEnumerator<>), "System.Collections.Generic.IEnumerator`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_G_OPTIONAL, typeof(Nullable<>), "System.Nullable`1", false, 1, AggKindEnum.Struct, FUNDTYPE.FT_STRUCT, true), - new PredefinedTypeInfo(PredefinedType.PT_FIXEDBUFFER, typeof(System.Runtime.CompilerServices.FixedBufferAttribute), "System.Runtime.CompilerServices.FixedBufferAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEFAULTCHARSET, typeof(System.Runtime.InteropServices.DefaultCharSetAttribute), "System.Runtime.InteropServices.DefaultCharSetAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_COMPILATIONRELAXATIONS, typeof(System.Runtime.CompilerServices.CompilationRelaxationsAttribute), "System.Runtime.CompilerServices.CompilationRelaxationsAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_RUNTIMECOMPATIBILITY, typeof(System.Runtime.CompilerServices.RuntimeCompatibilityAttribute), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_FRIENDASSEMBLY, typeof(System.Runtime.CompilerServices.InternalsVisibleToAttribute), "System.Runtime.CompilerServices.InternalsVisibleToAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERHIDDEN, typeof(DebuggerHiddenAttribute), "System.Diagnostics.DebuggerHiddenAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_TYPEFORWARDER, typeof(System.Runtime.CompilerServices.TypeForwardedToAttribute), "System.Runtime.CompilerServices.TypeForwardedToAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_KEYFILE, typeof(System.Reflection.AssemblyKeyFileAttribute), "System.Reflection.AssemblyKeyFileAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_KEYNAME, typeof(System.Reflection.AssemblyKeyNameAttribute), "System.Reflection.AssemblyKeyNameAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DELAYSIGN, typeof(System.Reflection.AssemblyDelaySignAttribute), "System.Reflection.AssemblyDelaySignAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_NOTSUPPORTEDEXCEPTION, typeof(NotSupportedException), "System.NotSupportedException", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_COMPILERGENERATED, typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), "System.Runtime.CompilerServices.CompilerGeneratedAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_UNSAFEVALUETYPE, typeof(System.Runtime.CompilerServices.UnsafeValueTypeAttribute), "System.Runtime.CompilerServices.UnsafeValueTypeAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ASSEMBLYFLAGS, typeof(System.Reflection.AssemblyFlagsAttribute), "System.Reflection.AssemblyFlagsAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ASSEMBLYVERSION, typeof(System.Reflection.AssemblyVersionAttribute), "System.Reflection.AssemblyVersionAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_ASSEMBLYCULTURE, typeof(System.Reflection.AssemblyCultureAttribute), "System.Reflection.AssemblyCultureAttribute", false, 0, true), + private static readonly PredefinedTypeInfo[] s_types = { + new PredefinedTypeInfo(PredefinedType.PT_BYTE, typeof(byte), "System.Byte", FUNDTYPE.FT_U1), + new PredefinedTypeInfo(PredefinedType.PT_SHORT, typeof(short), "System.Int16", FUNDTYPE.FT_I2), + new PredefinedTypeInfo(PredefinedType.PT_INT, typeof(int), "System.Int32", FUNDTYPE.FT_I4), + new PredefinedTypeInfo(PredefinedType.PT_LONG, typeof(long), "System.Int64", FUNDTYPE.FT_I8), + new PredefinedTypeInfo(PredefinedType.PT_FLOAT, typeof(float), "System.Single", FUNDTYPE.FT_R4), + new PredefinedTypeInfo(PredefinedType.PT_DOUBLE, typeof(double), "System.Double", FUNDTYPE.FT_R8), + new PredefinedTypeInfo(PredefinedType.PT_DECIMAL, typeof(decimal), "System.Decimal", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_CHAR, typeof(char), "System.Char", FUNDTYPE.FT_U2), + new PredefinedTypeInfo(PredefinedType.PT_BOOL, typeof(bool), "System.Boolean", FUNDTYPE.FT_I1), + new PredefinedTypeInfo(PredefinedType.PT_SBYTE, typeof(sbyte), "System.SByte", FUNDTYPE.FT_I1), + new PredefinedTypeInfo(PredefinedType.PT_USHORT, typeof(ushort), "System.UInt16", FUNDTYPE.FT_U2), + new PredefinedTypeInfo(PredefinedType.PT_UINT, typeof(uint), "System.UInt32", FUNDTYPE.FT_U4), + new PredefinedTypeInfo(PredefinedType.PT_ULONG, typeof(ulong), "System.UInt64", FUNDTYPE.FT_U8), + new PredefinedTypeInfo(PredefinedType.PT_INTPTR, typeof(IntPtr), "System.IntPtr", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_UINTPTR, typeof(UIntPtr), "System.UIntPtr", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_OBJECT, typeof(object), "System.Object"), + new PredefinedTypeInfo(PredefinedType.PT_STRING, typeof(string), "System.String"), + new PredefinedTypeInfo(PredefinedType.PT_DELEGATE, typeof(Delegate), "System.Delegate"), + new PredefinedTypeInfo(PredefinedType.PT_MULTIDEL, typeof(MulticastDelegate), "System.MulticastDelegate"), + new PredefinedTypeInfo(PredefinedType.PT_ARRAY, typeof(Array), "System.Array"), + new PredefinedTypeInfo(PredefinedType.PT_EXCEPTION, typeof(Exception), "System.Exception"), + new PredefinedTypeInfo(PredefinedType.PT_TYPE, typeof(Type), "System.Type"), + new PredefinedTypeInfo(PredefinedType.PT_MONITOR, typeof(System.Threading.Monitor), "System.Threading.Monitor"), + new PredefinedTypeInfo(PredefinedType.PT_VALUE, typeof(ValueType), "System.ValueType"), + new PredefinedTypeInfo(PredefinedType.PT_ENUM, typeof(Enum), "System.Enum"), + new PredefinedTypeInfo(PredefinedType.PT_DATETIME, typeof(DateTime), "System.DateTime", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_DEBUGGABLEATTRIBUTE, typeof(DebuggableAttribute), "System.Diagnostics.DebuggableAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEBUGGABLEATTRIBUTE_DEBUGGINGMODES, typeof(DebuggableAttribute.DebuggingModes), "System.Diagnostics.DebuggableAttribute.DebuggingModes"), + new PredefinedTypeInfo(PredefinedType.PT_IN, typeof(System.Runtime.InteropServices.InAttribute), "System.Runtime.InteropServices.InAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_OUT, typeof(System.Runtime.InteropServices.OutAttribute), "System.Runtime.InteropServices.OutAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_ATTRIBUTE, typeof(Attribute), "System.Attribute"), + new PredefinedTypeInfo(PredefinedType.PT_ATTRIBUTEUSAGE, typeof(AttributeUsageAttribute), "System.AttributeUsageAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_ATTRIBUTETARGETS, typeof(AttributeTargets), "System.AttributeTargets", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_OBSOLETE, typeof(ObsoleteAttribute), "System.ObsoleteAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_CONDITIONAL, typeof(ConditionalAttribute), "System.Diagnostics.ConditionalAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_CLSCOMPLIANT, typeof(CLSCompliantAttribute), "System.CLSCompliantAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_GUID, typeof(System.Runtime.InteropServices.GuidAttribute), "System.Runtime.InteropServices.GuidAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEFAULTMEMBER, typeof(System.Reflection.DefaultMemberAttribute), "System.Reflection.DefaultMemberAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_PARAMS, typeof(ParamArrayAttribute), "System.ParamArrayAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_COMIMPORT, typeof(System.Runtime.InteropServices.ComImportAttribute), "System.Runtime.InteropServices.ComImportAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_FIELDOFFSET, typeof(System.Runtime.InteropServices.FieldOffsetAttribute), "System.Runtime.InteropServices.FieldOffsetAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_STRUCTLAYOUT, typeof(System.Runtime.InteropServices.StructLayoutAttribute), "System.Runtime.InteropServices.StructLayoutAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_LAYOUTKIND, typeof(System.Runtime.InteropServices.LayoutKind), "System.Runtime.InteropServices.LayoutKind", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_MARSHALAS, typeof(System.Runtime.InteropServices.MarshalAsAttribute), "System.Runtime.InteropServices.MarshalAsAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DLLIMPORT, typeof(System.Runtime.InteropServices.DllImportAttribute), "System.Runtime.InteropServices.DllImportAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_INDEXERNAME, typeof(System.Runtime.CompilerServices.IndexerNameAttribute), "System.Runtime.CompilerServices.IndexerNameAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DECIMALCONSTANT, typeof(System.Runtime.CompilerServices.DecimalConstantAttribute), "System.Runtime.CompilerServices.DecimalConstantAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEFAULTVALUE, typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute), "System.Runtime.InteropServices.DefaultParameterValueAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_UNMANAGEDFUNCTIONPOINTER, typeof(System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute), "System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_CALLINGCONVENTION, typeof(System.Runtime.InteropServices.CallingConvention), "System.Runtime.InteropServices.CallingConvention", FUNDTYPE.FT_I4), + new PredefinedTypeInfo(PredefinedType.PT_CHARSET, typeof(System.Runtime.InteropServices.CharSet), "System.Runtime.InteropServices.CharSet", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_TYPEHANDLE, typeof(RuntimeTypeHandle), "System.RuntimeTypeHandle", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_FIELDHANDLE, typeof(RuntimeFieldHandle), "System.RuntimeFieldHandle", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_METHODHANDLE, typeof(RuntimeMethodHandle), "System.RuntimeMethodHandle", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_G_DICTIONARY, typeof(Dictionary<,>), "System.Collections.Generic.Dictionary`2"), + new PredefinedTypeInfo(PredefinedType.PT_IASYNCRESULT, typeof(IAsyncResult), "System.IAsyncResult"), + new PredefinedTypeInfo(PredefinedType.PT_ASYNCCBDEL, typeof(AsyncCallback), "System.AsyncCallback"), + new PredefinedTypeInfo(PredefinedType.PT_IDISPOSABLE, typeof(IDisposable), "System.IDisposable"), + new PredefinedTypeInfo(PredefinedType.PT_IENUMERABLE, typeof(System.Collections.IEnumerable), "System.Collections.IEnumerable"), + new PredefinedTypeInfo(PredefinedType.PT_IENUMERATOR, typeof(System.Collections.IEnumerator), "System.Collections.IEnumerator"), + new PredefinedTypeInfo(PredefinedType.PT_SYSTEMVOID, typeof(void), "System.Void", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_RUNTIMEHELPERS, typeof(System.Runtime.CompilerServices.RuntimeHelpers), "System.Runtime.CompilerServices.RuntimeHelpers"), + new PredefinedTypeInfo(PredefinedType.PT_VOLATILEMOD, typeof(System.Runtime.CompilerServices.IsVolatile), "System.Runtime.CompilerServices.IsVolatile"), + new PredefinedTypeInfo(PredefinedType.PT_COCLASS, typeof(System.Runtime.InteropServices.CoClassAttribute), "System.Runtime.InteropServices.CoClassAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_ACTIVATOR, typeof(Activator), "System.Activator"), + new PredefinedTypeInfo(PredefinedType.PT_G_IENUMERABLE, typeof(IEnumerable<>), "System.Collections.Generic.IEnumerable`1"), + new PredefinedTypeInfo(PredefinedType.PT_G_IENUMERATOR, typeof(IEnumerator<>), "System.Collections.Generic.IEnumerator`1"), + new PredefinedTypeInfo(PredefinedType.PT_G_OPTIONAL, typeof(Nullable<>), "System.Nullable`1", FUNDTYPE.FT_STRUCT), + new PredefinedTypeInfo(PredefinedType.PT_FIXEDBUFFER, typeof(System.Runtime.CompilerServices.FixedBufferAttribute), "System.Runtime.CompilerServices.FixedBufferAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEFAULTCHARSET, typeof(System.Runtime.InteropServices.DefaultCharSetAttribute), "System.Runtime.InteropServices.DefaultCharSetAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_COMPILATIONRELAXATIONS, typeof(System.Runtime.CompilerServices.CompilationRelaxationsAttribute), "System.Runtime.CompilerServices.CompilationRelaxationsAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_RUNTIMECOMPATIBILITY, typeof(System.Runtime.CompilerServices.RuntimeCompatibilityAttribute), "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_FRIENDASSEMBLY, typeof(System.Runtime.CompilerServices.InternalsVisibleToAttribute), "System.Runtime.CompilerServices.InternalsVisibleToAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERHIDDEN, typeof(DebuggerHiddenAttribute), "System.Diagnostics.DebuggerHiddenAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_TYPEFORWARDER, typeof(System.Runtime.CompilerServices.TypeForwardedToAttribute), "System.Runtime.CompilerServices.TypeForwardedToAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_KEYFILE, typeof(System.Reflection.AssemblyKeyFileAttribute), "System.Reflection.AssemblyKeyFileAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_KEYNAME, typeof(System.Reflection.AssemblyKeyNameAttribute), "System.Reflection.AssemblyKeyNameAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DELAYSIGN, typeof(System.Reflection.AssemblyDelaySignAttribute), "System.Reflection.AssemblyDelaySignAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_NOTSUPPORTEDEXCEPTION, typeof(NotSupportedException), "System.NotSupportedException"), + new PredefinedTypeInfo(PredefinedType.PT_COMPILERGENERATED, typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), "System.Runtime.CompilerServices.CompilerGeneratedAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_UNSAFEVALUETYPE, typeof(System.Runtime.CompilerServices.UnsafeValueTypeAttribute), "System.Runtime.CompilerServices.UnsafeValueTypeAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_ASSEMBLYFLAGS, typeof(System.Reflection.AssemblyFlagsAttribute), "System.Reflection.AssemblyFlagsAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_ASSEMBLYVERSION, typeof(System.Reflection.AssemblyVersionAttribute), "System.Reflection.AssemblyVersionAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_ASSEMBLYCULTURE, typeof(System.Reflection.AssemblyCultureAttribute), "System.Reflection.AssemblyCultureAttribute"), // LINQ - new PredefinedTypeInfo(PredefinedType.PT_G_IQUERYABLE, typeof(System.Linq.IQueryable<>), "System.Linq.IQueryable`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, false), - new PredefinedTypeInfo(PredefinedType.PT_IQUERYABLE, typeof(System.Linq.IQueryable), "System.Linq.IQueryable", false, 0, AggKindEnum.Interface, FUNDTYPE.FT_REF, false), - new PredefinedTypeInfo(PredefinedType.PT_STRINGBUILDER, typeof(System.Text.StringBuilder), "System.Text.StringBuilder", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_G_ICOLLECTION, typeof(ICollection<>), "System.Collections.Generic.ICollection`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_G_ILIST, typeof(IList<>), "System.Collections.Generic.IList`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, true), - new PredefinedTypeInfo(PredefinedType.PT_EXTENSION, typeof(System.Runtime.CompilerServices.ExtensionAttribute), "System.Runtime.CompilerServices.ExtensionAttribute", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_G_EXPRESSION, typeof(System.Linq.Expressions.Expression<>), "System.Linq.Expressions.Expression`1", false, 1, false), - new PredefinedTypeInfo(PredefinedType.PT_EXPRESSION, typeof(System.Linq.Expressions.Expression), "System.Linq.Expressions.Expression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_LAMBDAEXPRESSION, typeof(System.Linq.Expressions.LambdaExpression), "System.Linq.Expressions.LambdaExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_BINARYEXPRESSION, typeof(System.Linq.Expressions.BinaryExpression), "System.Linq.Expressions.BinaryExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_UNARYEXPRESSION, typeof(System.Linq.Expressions.UnaryExpression), "System.Linq.Expressions.UnaryExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_CONDITIONALEXPRESSION, typeof(System.Linq.Expressions.ConditionalExpression), "System.Linq.Expressions.ConditionalExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_CONSTANTEXPRESSION, typeof(System.Linq.Expressions.ConstantExpression), "System.Linq.Expressions.ConstantExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_PARAMETEREXPRESSION, typeof(System.Linq.Expressions.ParameterExpression), "System.Linq.Expressions.ParameterExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_MEMBEREXPRESSION, typeof(System.Linq.Expressions.MemberExpression), "System.Linq.Expressions.MemberExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_METHODCALLEXPRESSION, typeof(System.Linq.Expressions.MethodCallExpression), "System.Linq.Expressions.MethodCallExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_NEWEXPRESSION, typeof(System.Linq.Expressions.NewExpression), "System.Linq.Expressions.NewExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_BINDING, typeof(System.Linq.Expressions.MemberBinding), "System.Linq.Expressions.MemberBinding", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_MEMBERINITEXPRESSION, typeof(System.Linq.Expressions.MemberInitExpression), "System.Linq.Expressions.MemberInitExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_LISTINITEXPRESSION, typeof(System.Linq.Expressions.ListInitExpression), "System.Linq.Expressions.ListInitExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_TYPEBINARYEXPRESSION, typeof(System.Linq.Expressions.TypeBinaryExpression), "System.Linq.Expressions.TypeBinaryExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_NEWARRAYEXPRESSION, typeof(System.Linq.Expressions.NewArrayExpression), "System.Linq.Expressions.NewArrayExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_MEMBERASSIGNMENT, typeof(System.Linq.Expressions.MemberAssignment), "System.Linq.Expressions.MemberAssignment", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_MEMBERLISTBINDING, typeof(System.Linq.Expressions.MemberListBinding), "System.Linq.Expressions.MemberListBinding", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_MEMBERMEMBERBINDING, typeof(System.Linq.Expressions.MemberMemberBinding), "System.Linq.Expressions.MemberMemberBinding", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_INVOCATIONEXPRESSION, typeof(System.Linq.Expressions.InvocationExpression), "System.Linq.Expressions.InvocationExpression", false, 0, false), - new PredefinedTypeInfo(PredefinedType.PT_FIELDINFO, typeof(System.Reflection.FieldInfo), "System.Reflection.FieldInfo", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_METHODINFO, typeof(System.Reflection.MethodInfo), "System.Reflection.MethodInfo", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_CONSTRUCTORINFO, typeof(System.Reflection.ConstructorInfo), "System.Reflection.ConstructorInfo", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_PROPERTYINFO, typeof(System.Reflection.PropertyInfo), "System.Reflection.PropertyInfo", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_METHODBASE, typeof(System.Reflection.MethodBase), "System.Reflection.MethodBase", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_MEMBERINFO, typeof(System.Reflection.MemberInfo), "System.Reflection.MemberInfo", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERDISPLAY, typeof(DebuggerDisplayAttribute), "System.Diagnostics.DebuggerDisplayAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERBROWSABLE, typeof(DebuggerBrowsableAttribute), "System.Diagnostics.DebuggerBrowsableAttribute", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERBROWSABLESTATE, typeof(DebuggerBrowsableState), "System.Diagnostics.DebuggerBrowsableState", false, 0, AggKindEnum.Enum, FUNDTYPE.FT_I4, true), - new PredefinedTypeInfo(PredefinedType.PT_G_EQUALITYCOMPARER, typeof(EqualityComparer<>), "System.Collections.Generic.EqualityComparer`1", false, 1, true), - new PredefinedTypeInfo(PredefinedType.PT_ELEMENTINITIALIZER, typeof(System.Linq.Expressions.ElementInit), "System.Linq.Expressions.ElementInit", false, 0, false), - - new PredefinedTypeInfo(PredefinedType.PT_MISSING, typeof(System.Reflection.Missing), "System.Reflection.Missing", false, 0, true), - new PredefinedTypeInfo(PredefinedType.PT_G_IREADONLYLIST, typeof(IReadOnlyList<>), "System.Collections.Generic.IReadOnlyList`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, false), - new PredefinedTypeInfo(PredefinedType.PT_G_IREADONLYCOLLECTION, typeof(IReadOnlyCollection<>), "System.Collections.Generic.IReadOnlyCollection`1", false, 1, AggKindEnum.Interface, FUNDTYPE.FT_REF, false), + new PredefinedTypeInfo(PredefinedType.PT_G_IQUERYABLE, typeof(System.Linq.IQueryable<>), "System.Linq.IQueryable`1"), + new PredefinedTypeInfo(PredefinedType.PT_IQUERYABLE, typeof(System.Linq.IQueryable), "System.Linq.IQueryable"), + new PredefinedTypeInfo(PredefinedType.PT_STRINGBUILDER, typeof(System.Text.StringBuilder), "System.Text.StringBuilder"), + new PredefinedTypeInfo(PredefinedType.PT_G_ICOLLECTION, typeof(ICollection<>), "System.Collections.Generic.ICollection`1"), + new PredefinedTypeInfo(PredefinedType.PT_G_ILIST, typeof(IList<>), "System.Collections.Generic.IList`1"), + new PredefinedTypeInfo(PredefinedType.PT_EXTENSION, typeof(System.Runtime.CompilerServices.ExtensionAttribute), "System.Runtime.CompilerServices.ExtensionAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_G_EXPRESSION, typeof(System.Linq.Expressions.Expression<>), "System.Linq.Expressions.Expression`1"), + new PredefinedTypeInfo(PredefinedType.PT_EXPRESSION, typeof(System.Linq.Expressions.Expression), "System.Linq.Expressions.Expression"), + new PredefinedTypeInfo(PredefinedType.PT_LAMBDAEXPRESSION, typeof(System.Linq.Expressions.LambdaExpression), "System.Linq.Expressions.LambdaExpression"), + new PredefinedTypeInfo(PredefinedType.PT_BINARYEXPRESSION, typeof(System.Linq.Expressions.BinaryExpression), "System.Linq.Expressions.BinaryExpression"), + new PredefinedTypeInfo(PredefinedType.PT_UNARYEXPRESSION, typeof(System.Linq.Expressions.UnaryExpression), "System.Linq.Expressions.UnaryExpression"), + new PredefinedTypeInfo(PredefinedType.PT_CONDITIONALEXPRESSION, typeof(System.Linq.Expressions.ConditionalExpression), "System.Linq.Expressions.ConditionalExpression"), + new PredefinedTypeInfo(PredefinedType.PT_CONSTANTEXPRESSION, typeof(System.Linq.Expressions.ConstantExpression), "System.Linq.Expressions.ConstantExpression"), + new PredefinedTypeInfo(PredefinedType.PT_PARAMETEREXPRESSION, typeof(System.Linq.Expressions.ParameterExpression), "System.Linq.Expressions.ParameterExpression"), + new PredefinedTypeInfo(PredefinedType.PT_MEMBEREXPRESSION, typeof(System.Linq.Expressions.MemberExpression), "System.Linq.Expressions.MemberExpression"), + new PredefinedTypeInfo(PredefinedType.PT_METHODCALLEXPRESSION, typeof(System.Linq.Expressions.MethodCallExpression), "System.Linq.Expressions.MethodCallExpression"), + new PredefinedTypeInfo(PredefinedType.PT_NEWEXPRESSION, typeof(System.Linq.Expressions.NewExpression), "System.Linq.Expressions.NewExpression"), + new PredefinedTypeInfo(PredefinedType.PT_BINDING, typeof(System.Linq.Expressions.MemberBinding), "System.Linq.Expressions.MemberBinding"), + new PredefinedTypeInfo(PredefinedType.PT_MEMBERINITEXPRESSION, typeof(System.Linq.Expressions.MemberInitExpression), "System.Linq.Expressions.MemberInitExpression"), + new PredefinedTypeInfo(PredefinedType.PT_LISTINITEXPRESSION, typeof(System.Linq.Expressions.ListInitExpression), "System.Linq.Expressions.ListInitExpression"), + new PredefinedTypeInfo(PredefinedType.PT_TYPEBINARYEXPRESSION, typeof(System.Linq.Expressions.TypeBinaryExpression), "System.Linq.Expressions.TypeBinaryExpression"), + new PredefinedTypeInfo(PredefinedType.PT_NEWARRAYEXPRESSION, typeof(System.Linq.Expressions.NewArrayExpression), "System.Linq.Expressions.NewArrayExpression"), + new PredefinedTypeInfo(PredefinedType.PT_MEMBERASSIGNMENT, typeof(System.Linq.Expressions.MemberAssignment), "System.Linq.Expressions.MemberAssignment"), + new PredefinedTypeInfo(PredefinedType.PT_MEMBERLISTBINDING, typeof(System.Linq.Expressions.MemberListBinding), "System.Linq.Expressions.MemberListBinding"), + new PredefinedTypeInfo(PredefinedType.PT_MEMBERMEMBERBINDING, typeof(System.Linq.Expressions.MemberMemberBinding), "System.Linq.Expressions.MemberMemberBinding"), + new PredefinedTypeInfo(PredefinedType.PT_INVOCATIONEXPRESSION, typeof(System.Linq.Expressions.InvocationExpression), "System.Linq.Expressions.InvocationExpression"), + new PredefinedTypeInfo(PredefinedType.PT_FIELDINFO, typeof(System.Reflection.FieldInfo), "System.Reflection.FieldInfo"), + new PredefinedTypeInfo(PredefinedType.PT_METHODINFO, typeof(System.Reflection.MethodInfo), "System.Reflection.MethodInfo"), + new PredefinedTypeInfo(PredefinedType.PT_CONSTRUCTORINFO, typeof(System.Reflection.ConstructorInfo), "System.Reflection.ConstructorInfo"), + new PredefinedTypeInfo(PredefinedType.PT_PROPERTYINFO, typeof(System.Reflection.PropertyInfo), "System.Reflection.PropertyInfo"), + new PredefinedTypeInfo(PredefinedType.PT_METHODBASE, typeof(System.Reflection.MethodBase), "System.Reflection.MethodBase"), + new PredefinedTypeInfo(PredefinedType.PT_MEMBERINFO, typeof(System.Reflection.MemberInfo), "System.Reflection.MemberInfo"), + new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERDISPLAY, typeof(DebuggerDisplayAttribute), "System.Diagnostics.DebuggerDisplayAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERBROWSABLE, typeof(DebuggerBrowsableAttribute), "System.Diagnostics.DebuggerBrowsableAttribute"), + new PredefinedTypeInfo(PredefinedType.PT_DEBUGGERBROWSABLESTATE, typeof(DebuggerBrowsableState), "System.Diagnostics.DebuggerBrowsableState", FUNDTYPE.FT_I4), + new PredefinedTypeInfo(PredefinedType.PT_G_EQUALITYCOMPARER, typeof(EqualityComparer<>), "System.Collections.Generic.EqualityComparer`1"), + new PredefinedTypeInfo(PredefinedType.PT_ELEMENTINITIALIZER, typeof(System.Linq.Expressions.ElementInit), "System.Linq.Expressions.ElementInit"), + + new PredefinedTypeInfo(PredefinedType.PT_MISSING, typeof(System.Reflection.Missing), "System.Reflection.Missing"), + new PredefinedTypeInfo(PredefinedType.PT_G_IREADONLYLIST, typeof(IReadOnlyList<>), "System.Collections.Generic.IReadOnlyList`1"), + new PredefinedTypeInfo(PredefinedType.PT_G_IREADONLYCOLLECTION, typeof(IReadOnlyCollection<>), "System.Collections.Generic.IReadOnlyCollection`1"), }; - private static readonly Dictionary s_pdTypeNames = CreatePredefinedTypeFacts(); + private static readonly Dictionary s_typesByName = CreatePredefinedTypeFacts(); private static Dictionary CreatePredefinedTypeFacts() { - var pdTypeNames = new Dictionary((int)PredefinedType.PT_COUNT); -#if DEBUG + var typesByName = new Dictionary((int)PredefinedType.PT_COUNT); for (int i = 0; i < (int)PredefinedType.PT_COUNT; i++) { - Debug.Assert(s_pdTypes[i].type == (PredefinedType)i); - } +#if DEBUG + Debug.Assert(s_types[i].Type == (PredefinedType)i); #endif - for (int i = 0; i < (int)PredefinedType.PT_COUNT; i++) - { - pdTypeNames.Add(s_pdTypes[i].name, (PredefinedType)i); + typesByName.Add(s_types[i].Name, (PredefinedType)i); } - return pdTypeNames; + + return typesByName; } } } diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs index 3ed73fe56357..8f21e1169457 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/Types/TypeManager.cs @@ -8,7 +8,6 @@ using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; -using Microsoft.CSharp.RuntimeBinder.Errors; using Microsoft.CSharp.RuntimeBinder.Syntax; namespace Microsoft.CSharp.RuntimeBinder.Semantics @@ -420,10 +419,7 @@ public ErrorType GetErrorSym() return _errorType; } - public AggregateSymbol GetNullable() - { - return this.GetOptPredefAgg(PredefinedType.PT_G_OPTIONAL); - } + public AggregateSymbol GetNullable() => GetPredefAgg(PredefinedType.PT_G_OPTIONAL); private CType SubstType(CType typeSrc, TypeArray typeArgsCls, TypeArray typeArgsMeth, SubstTypeFlags grfst) { @@ -923,15 +919,7 @@ public static bool ParametersContainTyVar(TypeArray @params, TypeParameterType t return false; } - public AggregateSymbol GetReqPredefAgg(PredefinedType pt) - { - return _predefTypes.GetReqPredefAgg(pt); - } - - public AggregateSymbol GetOptPredefAgg(PredefinedType pt) - { - return _predefTypes.GetOptPredefAgg(pt); - } + public AggregateSymbol GetPredefAgg(PredefinedType pt) => _predefTypes.GetPredefinedAggregate(pt); public TypeArray CreateArrayOfUnitTypes(int cSize) { @@ -1096,7 +1084,7 @@ internal bool GetBestAccessibleType(CSemanticChecker semanticChecker, BindingCon if (typeSrc is NullableType) { // We have an inaccessible nullable type, which means that the best we can do is System.ValueType. - typeDst = this.GetOptPredefAgg(PredefinedType.PT_VALUE).getThisType(); + typeDst = GetPredefAgg(PredefinedType.PT_VALUE).getThisType(); Debug.Assert(semanticChecker.CheckTypeAccess(typeDst, bindingContext.ContextForMemberLookup)); return true; @@ -1106,7 +1094,7 @@ internal bool GetBestAccessibleType(CSemanticChecker semanticChecker, BindingCon { // We have an inaccessible array type for which we could not earlier find a better array type // with a covariant conversion, so the best we can do is System.Array. - typeDst = this.GetReqPredefAgg(PredefinedType.PT_ARRAY).getThisType(); + typeDst = GetPredefAgg(PredefinedType.PT_ARRAY).getThisType(); Debug.Assert(semanticChecker.CheckTypeAccess(typeDst, bindingContext.ContextForMemberLookup)); return true; @@ -1124,7 +1112,7 @@ internal bool GetBestAccessibleType(CSemanticChecker semanticChecker, BindingCon // This happens with interfaces, for instance. But in that case, the // conversion to object does exist, is an implicit reference conversion, // and so we will use it. - baseType = this.GetReqPredefAgg(PredefinedType.PT_OBJECT).getThisType(); + baseType = GetPredefAgg(PredefinedType.PT_OBJECT).getThisType(); } return GetBestAccessibleType(semanticChecker, bindingContext, baseType, out typeDst); diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/UnaOpSig.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/UnaOpSig.cs index 4953078112ff..cbbe443ca7ee 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/UnaOpSig.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Semantics/UnaOpSig.cs @@ -56,7 +56,7 @@ public UnaOpFullSig(ExpressionBinder fnc, UnaOpSig uos) this.cuosSkip = uos.cuosSkip; this.pfn = uos.pfn; this.fnkind = uos.fnkind; - _type = pt != PredefinedType.PT_UNDEFINEDINDEX ? fnc.GetOptPDT(pt) : null; + _type = pt != PredefinedType.PT_UNDEFINEDINDEX ? fnc.GetPredefindType(pt) : null; _grflt = LiftFlags.None; } public bool FPreDef() diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs index 5e6055f474ce..56274d702688 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/SymbolTable.cs @@ -140,7 +140,7 @@ internal SymWithType LookupMember( if (type is ArrayType) { - type = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_ARRAY); + type = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_ARRAY); } if (type is NullableType nub) { @@ -1108,9 +1108,13 @@ private AggregateSymbol AddAggregateToSymbolTable( { typeName = type.GetGenericTypeDefinition().FullName; } - if (typeName != null && PredefinedTypeFacts.IsPredefinedType(typeName)) + if (typeName != null) { - PredefinedTypes.InitializePredefinedType(agg, PredefinedTypeFacts.GetPredefTypeIndex(typeName)); + PredefinedType predefinedType = PredefinedTypeFacts.TryGetPredefTypeIndex(typeName); + if (predefinedType != PredefinedType.PT_UNDEFINEDINDEX) + { + PredefinedTypes.InitializePredefinedType(agg, predefinedType); + } } } @@ -1728,7 +1732,7 @@ private void SetParameterAttributes(MethodOrPropertySymbol methProp, ParameterIn DateTimeConstantAttribute attr = (DateTimeConstantAttribute)attrs[0]; ConstVal cv = ConstVal.Get(((DateTime)attr.Value).Ticks); - CType cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_DATETIME); + CType cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_DATETIME); methProp.SetDefaultParameterValue(i, cvType, cv); } else if ((attrs = parameters[i].GetCustomAttributes(typeof(DecimalConstantAttribute), false).ToArray()) != null @@ -1739,7 +1743,7 @@ private void SetParameterAttributes(MethodOrPropertySymbol methProp, ParameterIn DecimalConstantAttribute attr = (DecimalConstantAttribute)attrs[0]; ConstVal cv = ConstVal.Get(attr.Value); - CType cvType = _semanticChecker.GetSymbolLoader().GetOptPredefType(PredefinedType.PT_DECIMAL); + CType cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_DECIMAL); methProp.SetDefaultParameterValue(i, cvType, cv); } else if (((parameters[i].Attributes & ParameterAttributes.HasDefault) != 0) && @@ -1749,7 +1753,7 @@ private void SetParameterAttributes(MethodOrPropertySymbol methProp, ParameterIn // looking at isn't a by ref type or a type parameter. ConstVal cv = default(ConstVal); - CType cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_OBJECT); + CType cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_OBJECT); // We need to use RawDefaultValue, because DefaultValue is too clever. #if UNSUPPORTEDAPI @@ -1766,72 +1770,72 @@ private void SetParameterAttributes(MethodOrPropertySymbol methProp, ParameterIn if (defType == typeof(byte)) { cv = ConstVal.Get((byte)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_BYTE); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_BYTE); } else if (defType == typeof(short)) { cv = ConstVal.Get((short)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_SHORT); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_SHORT); } else if (defType == typeof(int)) { cv = ConstVal.Get((int)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_INT); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_INT); } else if (defType == typeof(long)) { cv = ConstVal.Get((long)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_LONG); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_LONG); } else if (defType == typeof(float)) { cv = ConstVal.Get((float)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_FLOAT); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_FLOAT); } else if (defType == typeof(double)) { cv = ConstVal.Get((double)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_DOUBLE); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_DOUBLE); } else if (defType == typeof(decimal)) { cv = ConstVal.Get((decimal)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_DECIMAL); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_DECIMAL); } else if (defType == typeof(char)) { cv = ConstVal.Get((char)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_CHAR); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_CHAR); } else if (defType == typeof(bool)) { cv = ConstVal.Get((bool)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_BOOL); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_BOOL); } else if (defType == typeof(sbyte)) { cv = ConstVal.Get((sbyte)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_SBYTE); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_SBYTE); } else if (defType == typeof(ushort)) { cv = ConstVal.Get((ushort)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_USHORT); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_USHORT); } else if (defType == typeof(uint)) { cv = ConstVal.Get((uint)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_UINT); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_UINT); } else if (defType == typeof(ulong)) { cv = ConstVal.Get((ulong)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_ULONG); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_ULONG); } else if (defType == typeof(string)) { cv = ConstVal.Get((string)defValue); - cvType = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_STRING); + cvType = _semanticChecker.GetSymbolLoader().GetPredefindType(PredefinedType.PT_STRING); } // if we fall off the end of this cascading if, we get Object/null // because that's how we initialized the constval. diff --git a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Syntax/PredefinedType.cs b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Syntax/PredefinedType.cs index 556c14acbd04..28be036857fd 100644 --- a/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Syntax/PredefinedType.cs +++ b/src/Microsoft.CSharp/src/Microsoft/CSharp/RuntimeBinder/Syntax/PredefinedType.cs @@ -26,8 +26,9 @@ internal enum PredefinedType : uint PT_ULONG, // The special "pointer-sized int" types. Note that this are not considered numeric types from the compiler's point of view -- - // they are special only in that they have special signature encodings. - PT_INTPTR, + // they are special only in that they have special signature encodings. + FirstNonSimpleType, + PT_INTPTR = FirstNonSimpleType, PT_UINTPTR, PT_OBJECT, diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.de.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.de.xlf index bb79d4e3d7da..654d803bd3c7 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.de.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.de.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' Mehrdeutige benutzerdefinierte Konvertierungen von {0} und {1} bei der Konvertierung von {2} in {3} - - Predefined type '{0}' is not defined or imported - Der vordefinierte {0}-Typ ist nicht definiert oder importiert. - '{0}' is not supported by the language {0} wird von der Sprache nicht unterstützt. diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.es.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.es.xlf index 8db813bf94dd..599af7354bd5 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.es.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.es.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' Conversiones ambiguas definidas por el usuario '{0}' y '{1}' al convertir de '{2}' a '{3}' - - Predefined type '{0}' is not defined or imported - El tipo predefinido '{0}' no está definido ni importado. - '{0}' is not supported by the language '{0}' no es compatible con el lenguaje diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.fr.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.fr.xlf index e5ca711a88be..4b3096691708 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.fr.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.fr.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' Conversions définies par l'utilisateur ambiguës '{0}' et '{1}' lors de la conversion de '{2}' en '{3}' - - Predefined type '{0}' is not defined or imported - Le type prédéfini '{0}' n'est pas défini ou importé - '{0}' is not supported by the language '{0}' n'est pas pris en charge par le langage diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.it.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.it.xlf index 780e98b2927b..840d3cfd8b9e 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.it.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.it.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' Conversioni '{0}' e '{1}' ambigue definite dall'utente durante la conversione da '{2}' a '{3}' - - Predefined type '{0}' is not defined or imported - Il tipo predefinito '{0}' non è definito né importato - '{0}' is not supported by the language '{0}' non è supportato dal linguaggio diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ja.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ja.xlf index 996edfec0fd5..265e8b75578b 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ja.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ja.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' '{2}' から '{3}' へ変換するときの、あいまいなユーザー定義の変換 '{0}' および '{1}' です - - Predefined type '{0}' is not defined or imported - 定義済みの型 '{0}' は定義、またはインポートされていません - '{0}' is not supported by the language '{0}' はこの言語でサポートされていません diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ko.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ko.xlf index c30e6707d040..d696c54b6f17 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ko.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ko.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' '{2}'에서 '{3}(으)로 변환하는 동안 모호한 사용자 정의 변환 '{0}' 및 '{1}'이(가) 발생했습니다. - - Predefined type '{0}' is not defined or imported - 미리 정의된 형식 '{0}'을(를) 정의하지 않았거나 가져오지 않았습니다. - '{0}' is not supported by the language '{0}'은(는) 언어에서 지원되지 않습니다. diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ru.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ru.xlf index 7cddad97bc6b..d43473ff5751 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ru.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.ru.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' Неоднозначные пользовательские преобразования "{0}" и "{1}" при преобразовании из "{2}" в "{3}" - - Predefined type '{0}' is not defined or imported - Предопределенный тип "{0}" не определен и не импортирован - '{0}' is not supported by the language "{0}" не поддерживается языком diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hans.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hans.xlf index 716185c166c2..0f81203917f2 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hans.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hans.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' 从“{2}”转换为“{3}”时,用户定义的转换“{0}”和“{1}”具有二义性 - - Predefined type '{0}' is not defined or imported - 预定义类型“{0}”未定义或导入 - '{0}' is not supported by the language 现用语言不支持“{0}” diff --git a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hant.xlf b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hant.xlf index 241be2a4a961..364ab06919fc 100644 --- a/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hant.xlf +++ b/src/Microsoft.CSharp/src/MultilingualResources/Microsoft.CSharp.zh-Hant.xlf @@ -278,10 +278,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' 從 '{2}' 轉換為 '{3}' 時,發現模稜兩可的使用者定義轉換 '{0}' 和 '{1}' - - Predefined type '{0}' is not defined or imported - 未定義或匯入預先定義的型別 '{0}' - '{0}' is not supported by the language 此語言不支援 '{0}' diff --git a/src/Microsoft.CSharp/src/Resources/Strings.de.resx b/src/Microsoft.CSharp/src/Resources/Strings.de.resx index 1ee2cb2f83e8..cb02add11f57 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.de.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.de.resx @@ -216,9 +216,6 @@ Mehrdeutige benutzerdefinierte Konvertierungen von {0} und {1} bei der Konvertierung von {2} in {3} - - Der vordefinierte {0}-Typ ist nicht definiert oder importiert. - {0} wird von der Sprache nicht unterstützt. diff --git a/src/Microsoft.CSharp/src/Resources/Strings.es.resx b/src/Microsoft.CSharp/src/Resources/Strings.es.resx index f209842072e8..87025d294356 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.es.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.es.resx @@ -216,9 +216,6 @@ Conversiones ambiguas definidas por el usuario '{0}' y '{1}' al convertir de '{2}' a '{3}' - - El tipo predefinido '{0}' no está definido ni importado. - '{0}' no es compatible con el lenguaje diff --git a/src/Microsoft.CSharp/src/Resources/Strings.fr.resx b/src/Microsoft.CSharp/src/Resources/Strings.fr.resx index eb94311b41ee..88667965cf49 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.fr.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.fr.resx @@ -216,9 +216,6 @@ Conversions définies par l'utilisateur ambiguës '{0}' et '{1}' lors de la conversion de '{2}' en '{3}' - - Le type prédéfini '{0}' n'est pas défini ou importé - '{0}' n'est pas pris en charge par le langage diff --git a/src/Microsoft.CSharp/src/Resources/Strings.it.resx b/src/Microsoft.CSharp/src/Resources/Strings.it.resx index b1783e74db48..498ddfe67c66 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.it.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.it.resx @@ -216,9 +216,6 @@ Conversioni '{0}' e '{1}' ambigue definite dall'utente durante la conversione da '{2}' a '{3}' - - Il tipo predefinito '{0}' non è definito né importato - '{0}' non è supportato dal linguaggio diff --git a/src/Microsoft.CSharp/src/Resources/Strings.ja.resx b/src/Microsoft.CSharp/src/Resources/Strings.ja.resx index 98f5f31c6750..b7a4772710d7 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.ja.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.ja.resx @@ -216,9 +216,6 @@ '{2}' から '{3}' へ変換するときの、あいまいなユーザー定義の変換 '{0}' および '{1}' です - - 定義済みの型 '{0}' は定義、またはインポートされていません - '{0}' はこの言語でサポートされていません diff --git a/src/Microsoft.CSharp/src/Resources/Strings.ko.resx b/src/Microsoft.CSharp/src/Resources/Strings.ko.resx index fd495ba48410..c5678aae98fa 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.ko.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.ko.resx @@ -216,9 +216,6 @@ '{2}'에서 '{3}(으)로 변환하는 동안 모호한 사용자 정의 변환 '{0}' 및 '{1}'이(가) 발생했습니다. - - 미리 정의된 형식 '{0}'을(를) 정의하지 않았거나 가져오지 않았습니다. - '{0}'은(는) 언어에서 지원되지 않습니다. diff --git a/src/Microsoft.CSharp/src/Resources/Strings.resx b/src/Microsoft.CSharp/src/Resources/Strings.resx index 4c7c2dfcee07..30874413a88b 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.resx @@ -262,9 +262,6 @@ Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}' - - Predefined type '{0}' is not defined or imported - '{0}' is not supported by the language diff --git a/src/Microsoft.CSharp/src/Resources/Strings.ru.resx b/src/Microsoft.CSharp/src/Resources/Strings.ru.resx index 3efb28df99d2..c0e8ea57424c 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.ru.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.ru.resx @@ -216,9 +216,6 @@ Неоднозначные пользовательские преобразования "{0}" и "{1}" при преобразовании из "{2}" в "{3}" - - Предопределенный тип "{0}" не определен и не импортирован - "{0}" не поддерживается языком diff --git a/src/Microsoft.CSharp/src/Resources/Strings.zh-Hans.resx b/src/Microsoft.CSharp/src/Resources/Strings.zh-Hans.resx index a9a7d531a610..dc13e60284bf 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.zh-Hans.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.zh-Hans.resx @@ -216,9 +216,6 @@ 从“{2}”转换为“{3}”时,用户定义的转换“{0}”和“{1}”具有二义性 - - 预定义类型“{0}”未定义或导入 - 现用语言不支持“{0}” diff --git a/src/Microsoft.CSharp/src/Resources/Strings.zh-Hant.resx b/src/Microsoft.CSharp/src/Resources/Strings.zh-Hant.resx index cca9e7f7ca36..55c37f26da2f 100644 --- a/src/Microsoft.CSharp/src/Resources/Strings.zh-Hant.resx +++ b/src/Microsoft.CSharp/src/Resources/Strings.zh-Hant.resx @@ -216,9 +216,6 @@ 從 '{2}' 轉換為 '{3}' 時,發現模稜兩可的使用者定義轉換 '{0}' 和 '{1}' - - 未定義或匯入預先定義的型別 '{0}' - 此語言不支援 '{0}'