MCPcopy Create free account
hub / github.com/dop251/goja / compileBracketExpression

Method compileBracketExpression

compiler_expr.go:871–907  ·  view source on GitHub ↗
(v *ast.BracketExpression)

Source from the content-addressed store, hash-verified

869}
870
871func (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
909func (e *compiledDotExpr) emitGetter(putOnStack bool) {
910 e.left.emitGetter(true)

Callers 1

compileExpressionMethod · 0.95

Calls 4

checkSuperBaseMethod · 0.95
compileExpressionMethod · 0.95
checkConstantStringMethod · 0.95
initMethod · 0.65

Tested by

no test coverage detected