@@ -3450,6 +3450,74 @@ describe 'PHP grammar', ->
3450
3450
expect(lines[2][0]).toEqual value: 'SQL', scopes: ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.end.php', 'keyword.operator.nowdoc.php']
3451
3451
expect(lines[2][1]).toEqual value: ';', scopes: ['source.php', 'punctuation.terminator.expression.php']
3452
3452
3453
+ it 'should tokenize a heredoc with embedded DQL correctly', ->
3454
+ waitsForPromise ->
3455
+ atom.packages.activatePackage('language-sql')
3456
+
3457
+ runs ->
3458
+ lines = grammar.tokenizeLines '''
3459
+ $a = <<<DQL
3460
+ SELECT * FROM table
3461
+ DQL;
3462
+ '''
3463
+
3464
+ expect(lines[0][0]).toEqual value: '$', scopes: ['source.php', 'variable.other.php', 'punctuation.definition.variable.php']
3465
+ expect(lines[0][1]).toEqual value: 'a', scopes: ['source.php', 'variable.other.php']
3466
+ expect(lines[0][2]).toEqual value: ' ', scopes: ['source.php']
3467
+ expect(lines[0][3]).toEqual value: '=', scopes: ['source.php', 'keyword.operator.assignment.php']
3468
+ expect(lines[0][4]).toEqual value: ' ', scopes: ['source.php']
3469
+ expect(lines[0][5]).toEqual value: '<<<', scopes: ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.begin.php', 'punctuation.definition.string.php']
3470
+ expect(lines[0][6]).toEqual value: 'DQL', scopes: ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.begin.php', 'keyword.operator.heredoc.php']
3471
+ expect(lines[1][0].value).toEqual 'SELECT'
3472
+ expect(lines[1][0].scopes).toContainAll ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'source.sql']
3473
+ expect(lines[1][1].value).toEqual ' '
3474
+ expect(lines[1][1].scopes).toContainAll ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'source.sql']
3475
+ expect(lines[1][2].value).toEqual '*'
3476
+ expect(lines[1][2].scopes).toContainAll ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'source.sql']
3477
+ expect(lines[1][3].value).toEqual ' '
3478
+ expect(lines[1][3].scopes).toContainAll ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'source.sql']
3479
+ expect(lines[1][4].value).toEqual 'FROM'
3480
+ expect(lines[1][4].scopes).toContainAll ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'source.sql']
3481
+ expect(lines[1][5].value).toEqual ' table'
3482
+ expect(lines[1][5].scopes).toContainAll ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'source.sql']
3483
+ expect(lines[2][0]).toEqual value: 'DQL', scopes: ['source.php', 'string.unquoted.heredoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.end.php', 'keyword.operator.heredoc.php']
3484
+ expect(lines[2][1]).toEqual value: ';', scopes: ['source.php', 'punctuation.terminator.expression.php']
3485
+
3486
+ it 'should tokenize a nowdoc with embedded DQL correctly', ->
3487
+ waitsForPromise ->
3488
+ atom.packages.activatePackage('language-sql')
3489
+
3490
+ runs ->
3491
+ lines = grammar.tokenizeLines '''
3492
+ $a = <<<'DQL'
3493
+ SELECT * FROM table
3494
+ DQL;
3495
+ '''
3496
+
3497
+ expect(lines[0][0]).toEqual value: '$', scopes: ['source.php', 'variable.other.php', 'punctuation.definition.variable.php']
3498
+ expect(lines[0][1]).toEqual value: 'a', scopes: ['source.php', 'variable.other.php']
3499
+ expect(lines[0][2]).toEqual value: ' ', scopes: ['source.php']
3500
+ expect(lines[0][3]).toEqual value: '=', scopes: ['source.php', 'keyword.operator.assignment.php']
3501
+ expect(lines[0][4]).toEqual value: ' ', scopes: ['source.php']
3502
+ expect(lines[0][5]).toEqual value: '<<<', scopes: ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.begin.php', 'punctuation.definition.string.php']
3503
+ expect(lines[0][6]).toEqual value: '\'', scopes: ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.begin.php']
3504
+ expect(lines[0][7]).toEqual value: 'DQL', scopes: ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.begin.php', 'keyword.operator.nowdoc.php']
3505
+ expect(lines[0][8]).toEqual value: '\'', scopes: ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.begin.php']
3506
+ expect(lines[1][0].value).toEqual 'SELECT'
3507
+ expect(lines[1][0].scopes).toContainAll ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'source.sql']
3508
+ expect(lines[1][1].value).toEqual ' '
3509
+ expect(lines[1][1].scopes).toContainAll ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'source.sql']
3510
+ expect(lines[1][2].value).toEqual '*'
3511
+ expect(lines[1][2].scopes).toContainAll ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'source.sql']
3512
+ expect(lines[1][3].value).toEqual ' '
3513
+ expect(lines[1][3].scopes).toContainAll ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'source.sql']
3514
+ expect(lines[1][4].value).toEqual 'FROM'
3515
+ expect(lines[1][4].scopes).toContainAll ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'source.sql']
3516
+ expect(lines[1][5].value).toEqual ' table'
3517
+ expect(lines[1][5].scopes).toContainAll ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'source.sql']
3518
+ expect(lines[2][0]).toEqual value: 'DQL', scopes: ['source.php', 'string.unquoted.nowdoc.php', 'meta.embedded.sql', 'punctuation.section.embedded.end.php', 'keyword.operator.nowdoc.php']
3519
+ expect(lines[2][1]).toEqual value: ';', scopes: ['source.php', 'punctuation.terminator.expression.php']
3520
+
3453
3521
it 'should tokenize a heredoc with embedded javascript correctly', ->
3454
3522
waitsForPromise ->
3455
3523
atom.packages.activatePackage('language-javascript')
0 commit comments