mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] parse slashy literals as reference expressions (IDEA-194880)
This commit is contained in:
+4
-3
@@ -7566,7 +7566,7 @@ public class GroovyGeneratedParser implements PsiParser, LightPsiParser {
|
||||
// | 'this'
|
||||
// | 'super'
|
||||
// | code_reference_identifiers_soft &(reference_dot | '.&')
|
||||
// | (STR_SQ | STR_DQ) &string_literal_as_reference
|
||||
// | (STR_SQ | STR_DQ | regex_literal) &string_literal_as_reference
|
||||
public static boolean unqualified_reference_expression(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "unqualified_reference_expression")) return false;
|
||||
boolean r;
|
||||
@@ -7630,7 +7630,7 @@ public class GroovyGeneratedParser implements PsiParser, LightPsiParser {
|
||||
return r;
|
||||
}
|
||||
|
||||
// (STR_SQ | STR_DQ) &string_literal_as_reference
|
||||
// (STR_SQ | STR_DQ | regex_literal) &string_literal_as_reference
|
||||
private static boolean unqualified_reference_expression_4(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "unqualified_reference_expression_4")) return false;
|
||||
boolean r;
|
||||
@@ -7641,12 +7641,13 @@ public class GroovyGeneratedParser implements PsiParser, LightPsiParser {
|
||||
return r;
|
||||
}
|
||||
|
||||
// STR_SQ | STR_DQ
|
||||
// STR_SQ | STR_DQ | regex_literal
|
||||
private static boolean unqualified_reference_expression_4_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "unqualified_reference_expression_4_0")) return false;
|
||||
boolean r;
|
||||
r = consumeTokenSmart(b, STR_SQ);
|
||||
if (!r) r = consumeTokenSmart(b, STR_DQ);
|
||||
if (!r) r = regex_literal(b, l + 1);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
@@ -839,7 +839,7 @@ unqualified_reference_expression ::= IDENTIFIER soft_type_argument_list?
|
||||
| 'this'
|
||||
| 'super'
|
||||
| code_reference_identifiers_soft &(reference_dot | '.&')
|
||||
| (STR_SQ | STR_DQ) &string_literal_as_reference
|
||||
| (STR_SQ | STR_DQ | regex_literal) &string_literal_as_reference
|
||||
{
|
||||
elementType = reference_expression
|
||||
}
|
||||
|
||||
+2
@@ -636,6 +636,8 @@ class ExpressionsParsingTest extends GroovyParsingTestCase {
|
||||
|
||||
void testcommandExpr$literalInvoked() { doTest() }
|
||||
|
||||
void testcommandExpr$slashyInvoked() { doTest() }
|
||||
|
||||
void testcommandExpr$safeIndex() { doTest() }
|
||||
|
||||
void testcommandExpr$safeIndexEmpty() { doTest() }
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
/a/ b
|
||||
$/a/$ b
|
||||
-----
|
||||
Groovy script
|
||||
Call expression
|
||||
Reference expression
|
||||
GroovyASTPsiElementImpl(SLASHY_LITERAL)
|
||||
PsiElement(regex begin)('/')
|
||||
PsiElement(regex content)('a')
|
||||
PsiElement(regex end)('/')
|
||||
PsiWhiteSpace(' ')
|
||||
Command arguments
|
||||
Reference expression
|
||||
PsiElement(identifier)('b')
|
||||
PsiElement(new line)('\n')
|
||||
Call expression
|
||||
Reference expression
|
||||
GroovyASTPsiElementImpl(DOLLAR_SLASHY_LITERAL)
|
||||
PsiElement($/ regex begin)('$/')
|
||||
PsiElement($/ regex content)('a')
|
||||
PsiElement($/ regex end)('/$')
|
||||
PsiWhiteSpace(' ')
|
||||
Command arguments
|
||||
Reference expression
|
||||
PsiElement(identifier)('b')
|
||||
@@ -3,7 +3,7 @@
|
||||
-----
|
||||
Groovy script
|
||||
Call expression
|
||||
Literal
|
||||
Reference expression
|
||||
GroovyASTPsiElementImpl(SLASHY_LITERAL)
|
||||
PsiElement(regex begin)('/')
|
||||
PsiElement(regex content)('asd\n')
|
||||
|
||||
Reference in New Issue
Block a user