//------------------------------------------------------------ // FUNCBREC.BindImplicitlyTypedArrayInitConvert // /// <summary></summary> /// <param name="elementTypeSym"></param> /// <param name="dimList"></param> /// <param name="dimIndex"></param> /// <param name="argListExpr"></param> /// <param name="nonConstCount"></param> /// <param name="constCount"></param> /// <param name="hasSideEffects"></param> //------------------------------------------------------------ internal void BindImplicitlyTypedArrayInitConvert( TYPESYM elementTypeSym, List <int> dimList, int dimIndex, ref EXPR argListExpr, ref int nonConstCount, ref int constCount, ref bool hasSideEffects) { int count = 0; EXPR nodeExpr = argListExpr; EXPR topArgList = null, lastArgList = null; while (nodeExpr != null) { EXPR argExpr; if (nodeExpr.Kind == EXPRKIND.LIST) { EXPRBINOP listExpr = nodeExpr as EXPRBINOP; argExpr = listExpr.Operand1; nodeExpr = listExpr.Operand2; } else { argExpr = nodeExpr; nodeExpr = null; } count++; EXPR expr = null; #if false expr = MustConvert( argExpr, elementTypeSym, 0); #endif if (!BindImplicitConversion( argExpr.TreeNode, argExpr, argExpr.TypeSym, elementTypeSym, ref expr, 0)) { Compiler.Error(argExpr.TreeNode, CSCERRID.ERR_NoBestTypeForArray); expr = NewError(treeNode, elementTypeSym); } EXPR constExpr = expr.GetConst(); if (constExpr != null) { if (!constExpr.IsZero(true)) { ++constCount; } if (expr.HasSideEffects(Compiler)) { hasSideEffects = true; } } else { nonConstCount++; } NewList(expr, ref topArgList, ref lastArgList); //exprList.Add(expr); } argListExpr = topArgList; }