diff --git a/cmpl_evaluate_expression.go b/cmpl_evaluate_expression.go index 2769ba1..8586a48 100644 --- a/cmpl_evaluate_expression.go +++ b/cmpl_evaluate_expression.go @@ -173,7 +173,11 @@ func (self *_runtime) cmpl_evaluate_nodeBracketExpression(node *_nodeBracketExpr memberValue := member.resolve() // TODO Pass in base value as-is, and defer toObject till later? - return toValue(newPropertyReference(self, self.toObject(targetValue), memberValue.string(), false, _at(node.idx))) + object, err := self.objectCoerce(targetValue) + if err != nil { + panic(self.panicTypeError("Cannot access member '%s' of %s", memberValue.string(), err.Error(), _at(node.idx))) + } + return toValue(newPropertyReference(self, object, memberValue.string(), false, _at(node.idx))) } func (self *_runtime) cmpl_evaluate_nodeCallExpression(node *_nodeCallExpression, withArgumentList []interface{}) Value {