public override JSVariableField CreateInnerField(JSVariableField outerField) { return(outerField.IfNotNull(o => { // blindly create an inner reference field for with scopes, no matter what it // is. globals and predefined values can be hijacked by object properties in // this scope. var withField = AddField(CreateField(outerField)); // and we need to make sure that any field that may be referenced from inside // a with-statement does not get automatically renamed outerField.CanCrunch = false; // if the outer field is an undefined global, then we want to flag it with a // special attribute that tells us that it might not actually be an undefined global, // because it might just be a property reference on the with-object. if (outerField.FieldType == FieldType.UndefinedGlobal) { do { outerField.Attributes |= FieldAttributes.RTSpecialName; } while ((outerField = outerField.OuterField) != null); } return withField; })); }
public override JSVariableField CreateInnerField(JSVariableField outerField) { return(outerField.IfNotNull(o => { // blindly create an inner reference field for with scopes, no matter what it // is. globals and predefined values can be hijacked by object properties in // this scope. var withField = AddField(CreateField(outerField)); return withField; })); }