099cb420b9
This updates the following set of console builtins in V8 to match the Console Standard (https://console.spec.whatwg.org) with respect to (potentially side effecting) type conversions: - console.debug - console.error - console.info - console.log - console.trace - console.warn - console.group - console.groupCollapsed - console.assert The V8 implementation only performs the type conversions and updates the arguments in-place with the results from the %String% constructor, %parseInt%, or %parseFloat% invocations. The actual formatting is still left completely to the debugger front-end. To give a concrete example, the following code ```js const msgFmt = { toString() { return 'Message %i' } }; console.log('LOG: %s`, msgFmt, 42); ``` sends the following parameters to the debugger front-end ```js ["LOG: %s", "Message %i", 42] ``` and it's then the job of the front-end to perform the actual string substitutions. It's also worth calling out that the console builtins are only concerned with %s, %f, %d, and %i formatting specifiers, since these are the only ones that trigger type conversions, and %o, %O, and %c can only be implemented in a meaningful way at a higher level. Fixed: chromium:1277944 Bug: chromium:1282076 Doc: https://bit.ly/v8-proper-console-type-conversions Spec: https://console.spec.whatwg.org Change-Id: I0996680811aa96236bd0d879e4a11101629ef1a7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3352118 Reviewed-by: Kim-Anh Tran <kimanh@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#78432}
83 lines
1.3 KiB
Plaintext
83 lines
1.3 KiB
Plaintext
Tests console.context
|
|
|
|
Running test: testConsoleContextMethod
|
|
console.context description:
|
|
{
|
|
className : Function
|
|
description : function context() { [native code] }
|
|
objectId : <objectId>
|
|
type : function
|
|
}
|
|
console.context() methods:
|
|
[
|
|
[0] : assert
|
|
[1] : clear
|
|
[2] : count
|
|
[3] : countReset
|
|
[4] : debug
|
|
[5] : dir
|
|
[6] : dirXml
|
|
[7] : error
|
|
[8] : group
|
|
[9] : groupCollapsed
|
|
[10] : groupEnd
|
|
[11] : info
|
|
[12] : log
|
|
[13] : profile
|
|
[14] : profileEnd
|
|
[15] : table
|
|
[16] : time
|
|
[17] : timeEnd
|
|
[18] : timeLog
|
|
[19] : timeStamp
|
|
[20] : trace
|
|
[21] : warn
|
|
]
|
|
|
|
Running test: testDefaultConsoleContext
|
|
undefined
|
|
undefined
|
|
undefined
|
|
|
|
Running test: testAnonymousConsoleContext
|
|
anonymous#2
|
|
anonymous#3
|
|
anonymous#4
|
|
|
|
Running test: testNamedConsoleContext
|
|
named-context#6
|
|
named-context#6
|
|
named-context#6
|
|
|
|
Running test: testTwoConsoleContextsWithTheSameName
|
|
named-context#7
|
|
named-context#8
|
|
|
|
Running test: testConsoleCountInDifferentConsoleContexts
|
|
[
|
|
[0] : {
|
|
type : string
|
|
value : 239: 1
|
|
}
|
|
]
|
|
[
|
|
[0] : {
|
|
type : string
|
|
value : 239: 1
|
|
}
|
|
]
|
|
|
|
Running test: testConsoleCountForNamedConsoleContext
|
|
[
|
|
[0] : {
|
|
type : string
|
|
value : 239: 1
|
|
}
|
|
]
|
|
[
|
|
[0] : {
|
|
type : string
|
|
value : 239: 2
|
|
}
|
|
]
|