mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-101503 Bad code green: a single-line GString with multiline injection
This commit is contained in:
@@ -352,3 +352,4 @@ enums.may.not.have.extends.clause=Enums may not have 'extends' clause
|
||||
method.0.cannot.override.method.1.in.2.overridden.method.is.final=Method ''{0}'' cannot override method ''{1}'' in ''{2}''; overridden method is final
|
||||
method.0.cannot.have.weaker.access.privileges.1.than.2.in.3.4=Method ''{0}'' cannot have weaker access privileges (''{1}'') than ''{2}'' in ''{3}'' (''{4}'')
|
||||
tuple.declaration.should.end.with.def.modifier=Tuple declaration should end with 'def' modifier
|
||||
injection.should.not.contain.line.feeds=GString injection must not contain line feeds
|
||||
|
||||
@@ -77,6 +77,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.*;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrRegex;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrString;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrStringInjection;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.*;
|
||||
@@ -1256,6 +1257,16 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitGStringInjection(GrStringInjection injection) {
|
||||
if (((GrString)injection.getParent()).isPlainString()) {
|
||||
if (StringUtil.indexOf(injection.getText(), '\n') != -1) {
|
||||
myHolder.createErrorAnnotation(injection, GroovyBundle.message("injection.should.not.contain.line.feeds"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkStringLiteral(PsiElement literal, String text) {
|
||||
|
||||
+13
@@ -1098,4 +1098,17 @@ print testConfig.list[0]
|
||||
print testConfig.<warning descr="Cannot resolve symbol 'foo'">foo</warning>()
|
||||
''', true, false, false, GrUnresolvedAccessInspection)
|
||||
}
|
||||
|
||||
void testGStringInjectionLFs() {
|
||||
testHighlighting('''\
|
||||
print "<error descr="GString injection must not contain line feeds">${
|
||||
}</error>"
|
||||
|
||||
print """${
|
||||
}"""
|
||||
|
||||
print "<error descr="GString injection must not contain line feeds">${ """
|
||||
"""}</error>"
|
||||
''')
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user