@@ -5865,7 +5865,7 @@ describe("Grammar Tests", function() {
58655865 expect(tokens[0][10].value).toBe(" ");
58665866 expect(tokens[0][10].scopes).toEqual(["source.python"]);
58675867 expect(tokens[0][11].value).toBe("in");
5868- expect(tokens[0][11].scopes).toEqual(["source.python","keyword.operator.logical .python"]);
5868+ expect(tokens[0][11].scopes).toEqual(["source.python","keyword.control.flow .python"]);
58695869 expect(tokens[0][12].value).toBe(" ");
58705870 expect(tokens[0][12].scopes).toEqual(["source.python"]);
58715871 expect(tokens[0][13].value).toBe("range");
@@ -6147,7 +6147,7 @@ describe("Grammar Tests", function() {
61476147
61486148 it("test/expressions/keywords.py",
61496149 function() {
6150- tokens = grammar.tokenizeLines("as async await continue del assert break finally for \nfrom elif else if import except pass raise\nreturn try while with\n\nnonlocal global class def")
6150+ tokens = grammar.tokenizeLines("as async await continue del assert break finally\nfrom elif else if import except pass raise\nreturn try while with\n\nnonlocal global class def\n\nfor ")
61516151 expect(tokens[0][0].value).toBe("as");
61526152 expect(tokens[0][0].scopes).toEqual(["source.python","keyword.control.import.python"]);
61536153 expect(tokens[0][1].value).toBe(" ");
@@ -6178,10 +6178,6 @@ describe("Grammar Tests", function() {
61786178 expect(tokens[0][13].scopes).toEqual(["source.python"]);
61796179 expect(tokens[0][14].value).toBe("finally");
61806180 expect(tokens[0][14].scopes).toEqual(["source.python","keyword.control.flow.python"]);
6181- expect(tokens[0][15].value).toBe(" ");
6182- expect(tokens[0][15].scopes).toEqual(["source.python"]);
6183- expect(tokens[0][16].value).toBe("for");
6184- expect(tokens[0][16].scopes).toEqual(["source.python","keyword.control.flow.python"]);
61856181 expect(tokens[1][0].value).toBe("from");
61866182 expect(tokens[1][0].scopes).toEqual(["source.python","keyword.control.import.python"]);
61876183 expect(tokens[1][1].value).toBe(" ");
@@ -6240,6 +6236,10 @@ describe("Grammar Tests", function() {
62406236 expect(tokens[4][4].scopes).toEqual(["source.python","storage.type.class.python"]);
62416237 expect(tokens[4][5].value).toBe(" def");
62426238 expect(tokens[4][5].scopes).toEqual(["source.python","storage.type.function.python"]);
6239+ expect(tokens[5][0].value).toBe("");
6240+ expect(tokens[5][0].scopes).toEqual(["source.python"]);
6241+ expect(tokens[6][0].value).toBe("for");
6242+ expect(tokens[6][0].scopes).toEqual(["source.python","keyword.control.flow.python"]);
62436243 });
62446244
62456245 it("test/expressions/special1.py",
@@ -7988,7 +7988,7 @@ describe("Grammar Tests", function() {
79887988 expect(tokens[3][12].value).toBe(" ");
79897989 expect(tokens[3][12].scopes).toEqual(["source.python"]);
79907990 expect(tokens[3][13].value).toBe("in");
7991- expect(tokens[3][13].scopes).toEqual(["source.python","keyword.operator.logical .python"]);
7991+ expect(tokens[3][13].scopes).toEqual(["source.python","keyword.control.flow .python"]);
79927992 expect(tokens[3][14].value).toBe(" ");
79937993 expect(tokens[3][14].scopes).toEqual(["source.python"]);
79947994 expect(tokens[3][15].value).toBe("b");
@@ -8735,7 +8735,7 @@ describe("Grammar Tests", function() {
87358735 expect(tokens[4][7].value).toBe(" ");
87368736 expect(tokens[4][7].scopes).toEqual(["source.python","meta.function.python","meta.function.parameters.python"]);
87378737 expect(tokens[4][8].value).toBe("in");
8738- expect(tokens[4][8].scopes).toEqual(["source.python","meta.function.python","meta.function.parameters.python","keyword.operator.logical .python"]);
8738+ expect(tokens[4][8].scopes).toEqual(["source.python","meta.function.python","meta.function.parameters.python","keyword.control.flow .python"]);
87398739 expect(tokens[5][0].value).toBe(" ");
87408740 expect(tokens[5][0].scopes).toEqual(["source.python","meta.function.python","meta.function.parameters.python"]);
87418741 expect(tokens[5][1].value).toBe("(");
@@ -12165,7 +12165,7 @@ describe("Grammar Tests", function() {
1216512165 expect(tokens[0][9].value).toBe(" ");
1216612166 expect(tokens[0][9].scopes).toEqual(["source.python"]);
1216712167 expect(tokens[0][10].value).toBe("in");
12168- expect(tokens[0][10].scopes).toEqual(["source.python","keyword.operator.logical .python"]);
12168+ expect(tokens[0][10].scopes).toEqual(["source.python","keyword.control.flow .python"]);
1216912169 expect(tokens[0][11].value).toBe(" ");
1217012170 expect(tokens[0][11].scopes).toEqual(["source.python"]);
1217112171 expect(tokens[0][12].value).toBe("b");
@@ -12190,6 +12190,69 @@ describe("Grammar Tests", function() {
1219012190 expect(tokens[3][3].scopes).toEqual(["source.python","constant.numeric.dec.python"]);
1219112191 });
1219212192
12193+ it("test/statements/for2.py",
12194+ function() {
12195+ tokens = grammar.tokenizeLines("for a, b, c in [2 in q, 2 in w]:\n pass")
12196+ expect(tokens[0][0].value).toBe("for");
12197+ expect(tokens[0][0].scopes).toEqual(["source.python","keyword.control.flow.python"]);
12198+ expect(tokens[0][1].value).toBe(" ");
12199+ expect(tokens[0][1].scopes).toEqual(["source.python"]);
12200+ expect(tokens[0][2].value).toBe("a");
12201+ expect(tokens[0][2].scopes).toEqual(["source.python"]);
12202+ expect(tokens[0][3].value).toBe(",");
12203+ expect(tokens[0][3].scopes).toEqual(["source.python","punctuation.separator.element.python"]);
12204+ expect(tokens[0][4].value).toBe(" ");
12205+ expect(tokens[0][4].scopes).toEqual(["source.python"]);
12206+ expect(tokens[0][5].value).toBe("b");
12207+ expect(tokens[0][5].scopes).toEqual(["source.python"]);
12208+ expect(tokens[0][6].value).toBe(",");
12209+ expect(tokens[0][6].scopes).toEqual(["source.python","punctuation.separator.element.python"]);
12210+ expect(tokens[0][7].value).toBe(" ");
12211+ expect(tokens[0][7].scopes).toEqual(["source.python"]);
12212+ expect(tokens[0][8].value).toBe("c");
12213+ expect(tokens[0][8].scopes).toEqual(["source.python"]);
12214+ expect(tokens[0][9].value).toBe(" ");
12215+ expect(tokens[0][9].scopes).toEqual(["source.python"]);
12216+ expect(tokens[0][10].value).toBe("in");
12217+ expect(tokens[0][10].scopes).toEqual(["source.python","keyword.control.flow.python"]);
12218+ expect(tokens[0][11].value).toBe(" ");
12219+ expect(tokens[0][11].scopes).toEqual(["source.python"]);
12220+ expect(tokens[0][12].value).toBe("[");
12221+ expect(tokens[0][12].scopes).toEqual(["source.python","punctuation.definition.list.begin.python"]);
12222+ expect(tokens[0][13].value).toBe("2");
12223+ expect(tokens[0][13].scopes).toEqual(["source.python","constant.numeric.dec.python"]);
12224+ expect(tokens[0][14].value).toBe(" ");
12225+ expect(tokens[0][14].scopes).toEqual(["source.python"]);
12226+ expect(tokens[0][15].value).toBe("in");
12227+ expect(tokens[0][15].scopes).toEqual(["source.python","keyword.operator.logical.python"]);
12228+ expect(tokens[0][16].value).toBe(" ");
12229+ expect(tokens[0][16].scopes).toEqual(["source.python"]);
12230+ expect(tokens[0][17].value).toBe("q");
12231+ expect(tokens[0][17].scopes).toEqual(["source.python"]);
12232+ expect(tokens[0][18].value).toBe(",");
12233+ expect(tokens[0][18].scopes).toEqual(["source.python","punctuation.separator.element.python"]);
12234+ expect(tokens[0][19].value).toBe(" ");
12235+ expect(tokens[0][19].scopes).toEqual(["source.python"]);
12236+ expect(tokens[0][20].value).toBe("2");
12237+ expect(tokens[0][20].scopes).toEqual(["source.python","constant.numeric.dec.python"]);
12238+ expect(tokens[0][21].value).toBe(" ");
12239+ expect(tokens[0][21].scopes).toEqual(["source.python"]);
12240+ expect(tokens[0][22].value).toBe("in");
12241+ expect(tokens[0][22].scopes).toEqual(["source.python","keyword.operator.logical.python"]);
12242+ expect(tokens[0][23].value).toBe(" ");
12243+ expect(tokens[0][23].scopes).toEqual(["source.python"]);
12244+ expect(tokens[0][24].value).toBe("w");
12245+ expect(tokens[0][24].scopes).toEqual(["source.python"]);
12246+ expect(tokens[0][25].value).toBe("]");
12247+ expect(tokens[0][25].scopes).toEqual(["source.python","punctuation.definition.list.end.python"]);
12248+ expect(tokens[0][26].value).toBe(":");
12249+ expect(tokens[0][26].scopes).toEqual(["source.python","punctuation.separator.colon.python"]);
12250+ expect(tokens[1][0].value).toBe(" ");
12251+ expect(tokens[1][0].scopes).toEqual(["source.python"]);
12252+ expect(tokens[1][1].value).toBe("pass");
12253+ expect(tokens[1][1].scopes).toEqual(["source.python","keyword.control.flow.python"]);
12254+ });
12255+
1219312256 it("test/statements/from1.py",
1219412257 function() {
1219512258 tokens = grammar.tokenizeLines("from ... import foo as bar\nraise Exception('done') from exc\nyield from foo")
@@ -13271,7 +13334,7 @@ describe("Grammar Tests", function() {
1327113334 expect(tokens[2][21].value).toBe(" ");
1327213335 expect(tokens[2][21].scopes).toEqual(["source.python"]);
1327313336 expect(tokens[2][22].value).toBe("in");
13274- expect(tokens[2][22].scopes).toEqual(["source.python","keyword.operator.logical .python"]);
13337+ expect(tokens[2][22].scopes).toEqual(["source.python","keyword.control.flow .python"]);
1327513338 expect(tokens[2][23].value).toBe(" ");
1327613339 expect(tokens[2][23].scopes).toEqual(["source.python"]);
1327713340 expect(tokens[2][24].value).toBe("foo");
0 commit comments