Преглед изворни кода

Fixed failing tests due to regexp modifiers being handled differently

Matthew D. Miller пре 6 година
родитељ
комит
3928208ab4
2 измењених фајлова са 17 додато и 4 уклоњено
  1. 11 2
      src/perl/perl.test.ts
  2. 6 2
      src/perl/perl.ts

+ 11 - 2
src/perl/perl.test.ts

@@ -310,14 +310,23 @@ testTokenization('perl', [
 	[
 		{
 			line: 'm/abc/',
-			tokens: [{ startIndex: 0, type: 'regexp.perl' }],
+			tokens: [
+				{ startIndex: 0, type: 'regexp.delim.perl' },
+				{ startIndex: 2, type: 'regexp.perl' },
+				{ startIndex: 5, type: 'regexp.delim.perl' },
+			],
 		},
 	],
 
 	[
 		{
 			line: 'm/[abc]+/e',
-			tokens: [{ startIndex: 0, type: 'regexp.perl' }],
+			tokens: [
+				{ startIndex: 0, type: 'regexp.delim.perl' },
+				{ startIndex: 2, type: 'regexp.perl' },
+				{ startIndex: 8, type: 'regexp.delim.perl' },
+        { startIndex: 9, type: 'regexp.modifier.perl' },
+			],
 		},
 	],
 

+ 6 - 2
src/perl/perl.ts

@@ -601,13 +601,17 @@ export const language = <ILanguage>{
 			[/\\./, 'regexp.escape'],
 			[/./, {
 				cases: {
-					'$#==$S3': { token: 'regexp.delim', next: '@pop' },
+					'$#==$S3': { token: 'regexp.delim', next: '@regexpModifiers' },
 					'$#==$S2': { token: 'regexp.delim', next: '@push' }, // nested delimiters
 					'@default': 'regexp'
 				}
 			}],
 		],
-		
+
+    regexpModifiers: [
+			[/[msixpodualngcer]+/, { token: 'regexp.modifier', next: '@popall' }],
+		],
+
 		// Expanded quoted string
 		// qqstring.<open>.<close>
 		//  open = open delimiter