static ResolveResult MapToNewContext(ResolveResult rr, MapTypeIntoNewContext mapping) { if (rr is TypeOfResolveResult) { return(new TypeOfResolveResult( rr.Type.AcceptVisitor(mapping), ((TypeOfResolveResult)rr).ReferencedType.AcceptVisitor(mapping))); } else if (rr is ArrayCreateResolveResult) { ArrayCreateResolveResult acrr = (ArrayCreateResolveResult)rr; return(new ArrayCreateResolveResult( acrr.Type.AcceptVisitor(mapping), MapToNewContext(acrr.SizeArguments, mapping), MapToNewContext(acrr.InitializerElements, mapping))); } else if (rr.IsCompileTimeConstant) { return(new ConstantResolveResult( rr.Type.AcceptVisitor(mapping), rr.ConstantValue )); } else { return(new ErrorResolveResult(rr.Type.AcceptVisitor(mapping))); } }
static ResolveResult[] MapToNewContext(ResolveResult[] input, MapTypeIntoNewContext mapping) { if (input == null) { return(null); } ResolveResult[] output = new ResolveResult[input.Length]; for (int i = 0; i < input.Length; i++) { output[i] = MapToNewContext(input[i], mapping); } return(output); }
static ResolveResult MapToNewContext(ResolveResult rr, MapTypeIntoNewContext mapping) { if (rr is TypeOfResolveResult) { return new TypeOfResolveResult( rr.Type.AcceptVisitor(mapping), ((TypeOfResolveResult)rr).ReferencedType.AcceptVisitor(mapping)); } else if (rr is ArrayCreateResolveResult) { ArrayCreateResolveResult acrr = (ArrayCreateResolveResult)rr; return new ArrayCreateResolveResult( acrr.Type.AcceptVisitor(mapping), MapToNewContext(acrr.SizeArguments, mapping), MapToNewContext(acrr.InitializerElements, mapping)); } else if (rr.IsCompileTimeConstant) { return new ConstantResolveResult( rr.Type.AcceptVisitor(mapping), rr.ConstantValue ); } else { return new ErrorResolveResult(rr.Type.AcceptVisitor(mapping)); } }
static ResolveResult[] MapToNewContext(ResolveResult[] input, MapTypeIntoNewContext mapping) { if (input == null) return null; ResolveResult[] output = new ResolveResult[input.Length]; for (int i = 0; i < input.Length; i++) { output[i] = MapToNewContext(input[i], mapping); } return output; }