Browse Source

LibJS: CallExpression shouldn't throw TypeError or non-constructor call

This unbreaks the entire test suite. :^)
Andreas Kling 5 years ago
parent
commit
b251091a6a
1 changed files with 1 additions and 1 deletions
  1. 1 1
      Libraries/LibJS/AST.cpp

+ 1 - 1
Libraries/LibJS/AST.cpp

@@ -94,7 +94,7 @@ Value CallExpression::execute(Interpreter& interpreter) const
 
 
     if (!callee.is_object()
     if (!callee.is_object()
         || !callee.as_object().is_function()
         || !callee.as_object().is_function()
-        || (callee.as_object().is_native_function() && !static_cast<NativeFunction&>(callee.as_object()).has_constructor())) {
+        || (is_new_expression() && (callee.as_object().is_native_function() && !static_cast<NativeFunction&>(callee.as_object()).has_constructor()))) {
         String error_message;
         String error_message;
         auto call_type = is_new_expression() ? "constructor" : "function";
         auto call_type = is_new_expression() ? "constructor" : "function";
         if (m_callee->is_identifier() || m_callee->is_member_expression()) {
         if (m_callee->is_identifier() || m_callee->is_member_expression()) {