private static void GeneratePropertyExpression(ScriptGenerator generator, MemberSymbol symbol, PropertyExpression expression) { Debug.Assert(expression.Type == ExpressionType.PropertyGet); ScriptTextWriter writer = generator.Writer; if (expression.ObjectReference is BaseExpression) { Debug.Assert(symbol.Parent is ClassSymbol); writer.Write(((ClassSymbol)symbol.Parent).FullGeneratedName); writer.Write(".callBaseMethod(this, 'get_"); writer.Write(expression.Property.GeneratedName); writer.Write("')"); } else { ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference); writer.Write(".get_"); writer.Write(expression.Property.GeneratedName); writer.Write("()"); } }
private static void GeneratePropertyExpression(ScriptGenerator generator, MemberSymbol symbol, PropertyExpression expression) { Debug.Assert(expression.Type == ExpressionType.PropertyGet); ScriptTextWriter writer = generator.Writer; if (expression.ObjectReference is BaseExpression) { Debug.Assert(symbol.Parent is ClassSymbol); ClassSymbol baseClass = ((ClassSymbol)symbol.Parent).BaseClass; Debug.Assert(baseClass != null); writer.Write(baseClass.FullGeneratedName); if (baseClass.IsApplicationType) { writer.Write("$."); } else { writer.Write(".prototype."); } writer.Write("get_"); writer.Write(expression.Property.GeneratedName); writer.Write(".call("); writer.Write(generator.CurrentImplementation.ThisIdentifier); writer.Write(")"); } else { ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference); writer.Write(".get_"); writer.Write(expression.Property.GeneratedName); writer.Write("()"); } }