Skip to content

Commit 8b2f882

Browse files
committed
Fix parsing trailing comma in comma-separated list
w3c/csswg-drafts#11254
1 parent f5b0499 commit 8b2f882

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

__tests__/value.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4249,8 +4249,8 @@ describe('<media-query-list>', () => {
42494249
expect(parse('<media-query-list>', 'all', false, mediaQueryContext)).toMatchObject(mediaQueryList)
42504250
})
42514251
test('valid', () => {
4252-
expect(parse('<media-query-list>', ';, 1, (condition)', true, mediaQueryContext))
4253-
.toBe('not all, not all, (condition)')
4252+
expect(parse('<media-query-list>', ';, 1, (condition),', true, mediaQueryContext))
4253+
.toBe('not all, not all, (condition), not all')
42544254
expect(parse('<media-query-list>', 'all and (condition)', true, mediaQueryContext))
42554255
.toBe('(condition)')
42564256
})

lib/parse/parser.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
const { createContext, getDeclarationValueDefinition, getRuleDefinition, getRuleType } = require('../utils/context.js')
3-
const { isCloseCurlyBrace, isColon, isDelimiter, isOpenCurlyBrace, isSemicolon, isSimpleBlock, isWhitespace } = require('../utils/value.js')
3+
const { isCloseCurlyBrace, isColon, isComma, isDelimiter, isOpenCurlyBrace, isSemicolon, isSimpleBlock, isWhitespace } = require('../utils/value.js')
44
const Stream = require('./stream.js')
55
const blocks = require('../values/blocks.js')
66
const error = require('../error.js')
@@ -384,10 +384,12 @@ function parseComponentValue(input) {
384384
*/
385385
function parseCommaSeparatedComponentValuesList(input) {
386386
input = normalizeIntoTokens(input)
387-
const value = list([], ',')
388-
while (!input.atEnd()) {
387+
if (input.atEnd()) {
388+
return list([], ',')
389+
}
390+
const value = list([consumeComponentValuesList(input, [','])], ',')
391+
while (input.consume(isComma)) {
389392
value.push(consumeComponentValuesList(input, [',']))
390-
input.consume()
391393
}
392394
return value
393395
}

0 commit comments

Comments
 (0)