// Copyright 2008 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. 'use strict'; // The type of a regular expression should be 'object', including in // the context of string equality comparisons. { const r = new RegExp; assertEquals('object', typeof r); assertTrue(typeof r == 'object'); assertFalse(typeof r == 'function'); function equals(x, y) { return x == y; } assertTrue(equals('object', typeof r)); } assertFalse(typeof null == "undefined"); assertEquals('undefined', typeof undefined); assertEquals('object', typeof null); assertEquals('boolean', typeof true); assertEquals('boolean', typeof false); assertEquals('number', typeof 42.42); assertEquals('number', typeof 42); assertEquals('bigint', typeof 42n); assertEquals('string', typeof '42'); assertEquals('symbol', typeof Symbol(42)); assertEquals('object', typeof {}); assertEquals('object', typeof []); assertEquals('object', typeof new Proxy({}, {})); assertEquals('object', typeof new Proxy([], {})); assertEquals('function', typeof (_ => 42)); assertEquals('function', typeof function() {}); assertEquals('function', typeof function*() {}); assertEquals('function', typeof async function() {}); assertEquals('function', typeof async function*() {}); assertEquals('function', typeof new Proxy(_ => 42, {})); assertEquals('function', typeof class {}); assertEquals('function', typeof Object);