(v *ast.BracketExpression)
| 869 | } |
| 870 | |
| 871 | func (c *compiler) compileBracketExpression(v *ast.BracketExpression) compiledExpr { |
| 872 | if sup, ok := v.Left.(*ast.SuperExpression); ok { |
| 873 | c.checkSuperBase(sup.Idx) |
| 874 | member := c.compileExpression(v.Member) |
| 875 | if name, ok := c.checkConstantString(member); ok { |
| 876 | r := &compiledSuperDotExpr{ |
| 877 | name: name, |
| 878 | } |
| 879 | r.init(c, v.LeftBracket) |
| 880 | return r |
| 881 | } |
| 882 | |
| 883 | r := &compiledSuperBracketExpr{ |
| 884 | member: member, |
| 885 | } |
| 886 | r.init(c, v.LeftBracket) |
| 887 | return r |
| 888 | } |
| 889 | |
| 890 | left := c.compileExpression(v.Left) |
| 891 | member := c.compileExpression(v.Member) |
| 892 | if name, ok := c.checkConstantString(member); ok { |
| 893 | r := &compiledDotExpr{ |
| 894 | left: left, |
| 895 | name: name, |
| 896 | } |
| 897 | r.init(c, v.LeftBracket) |
| 898 | return r |
| 899 | } |
| 900 | |
| 901 | r := &compiledBracketExpr{ |
| 902 | left: left, |
| 903 | member: member, |
| 904 | } |
| 905 | r.init(c, v.LeftBracket) |
| 906 | return r |
| 907 | } |
| 908 | |
| 909 | func (e *compiledDotExpr) emitGetter(putOnStack bool) { |
| 910 | e.left.emitGetter(true) |
no test coverage detected