mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
highlight converted literal braces
This commit is contained in:
@@ -84,6 +84,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatem
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.packaging.GrPackageDefinition;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.*;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrVariableDeclarationOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.expectedTypes.GroovyExpectedTypesProvider;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GrClosureType;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass;
|
||||
@@ -441,6 +442,21 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator {
|
||||
|
||||
@Override
|
||||
public void visitListOrMap(GrListOrMap listOrMap) {
|
||||
for (PsiType type : GroovyExpectedTypesProvider.getDefaultExpectedTypes(listOrMap)) {
|
||||
if (type instanceof PsiClassType &&
|
||||
!InheritanceUtil.isInheritor(type, CommonClassNames.JAVA_LANG_ITERABLE) &&
|
||||
!InheritanceUtil.isInheritor(type, CommonClassNames.JAVA_UTIL_MAP)) {
|
||||
final PsiElement startToken = listOrMap.getFirstChild();
|
||||
if (startToken != null && startToken.getNode().getElementType() == GroovyTokenTypes.mLBRACK) {
|
||||
myHolder.createInfoAnnotation(startToken, null).setTextAttributes(DefaultHighlighter.LITERAL_CONVERSION);
|
||||
}
|
||||
final PsiElement endToken = listOrMap.getLastChild();
|
||||
if (endToken != null && endToken.getNode().getElementType() == GroovyTokenTypes.mRBRACK) {
|
||||
myHolder.createInfoAnnotation(endToken, null).setTextAttributes(DefaultHighlighter.LITERAL_CONVERSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MultiMap<String, GrNamedArgument> map = new MultiMap<String, GrNamedArgument>();
|
||||
|
||||
for (GrNamedArgument element : listOrMap.getNamedArguments()) {
|
||||
|
||||
@@ -76,6 +76,7 @@ public class DefaultHighlighter {
|
||||
|
||||
@NonNls
|
||||
static final String UNRESOLVED_ACCESS_ID = "Unresolved reference access";
|
||||
static final String LITERAL_CONVERSION_ID = "List/map to object conversion";
|
||||
|
||||
|
||||
public static TextAttributesKey LINE_COMMENT = TextAttributesKey.createTextAttributesKey(LINE_COMMENT_ID,
|
||||
@@ -148,7 +149,13 @@ public class DefaultHighlighter {
|
||||
UNRESOLVED_ACCESS_ATTRIBUTES.setEffectColor(Color.GRAY);
|
||||
UNRESOLVED_ACCESS_ATTRIBUTES.setEffectType(EffectType.LINE_UNDERSCORE);
|
||||
}
|
||||
public static final TextAttributes LITERAL_CONVERSION_ATTRIBUTES = HighlighterColors.TEXT.getDefaultAttributes().clone();
|
||||
static{
|
||||
LITERAL_CONVERSION_ATTRIBUTES.setForegroundColor(Color.BLUE);
|
||||
LITERAL_CONVERSION_ATTRIBUTES.setFontType(Font.BOLD);
|
||||
}
|
||||
public static TextAttributesKey UNRESOLVED_ACCESS = TextAttributesKey.createTextAttributesKey(UNRESOLVED_ACCESS_ID, UNRESOLVED_ACCESS_ATTRIBUTES);
|
||||
public static TextAttributesKey LITERAL_CONVERSION = TextAttributesKey.createTextAttributesKey(LITERAL_CONVERSION_ID, LITERAL_CONVERSION_ATTRIBUTES);
|
||||
|
||||
private DefaultHighlighter() {
|
||||
}
|
||||
|
||||
+5
-1
@@ -64,6 +64,7 @@ public class GroovyColorsAndFontsPage implements ColorSettingsPage {
|
||||
new AttributesDescriptor(DefaultHighlighter.BAD_CHARACTER_ID, DefaultHighlighter.BAD_CHARACTER),
|
||||
new AttributesDescriptor(DefaultHighlighter.WRONG_STRING_ID, DefaultHighlighter.WRONG_STRING),
|
||||
new AttributesDescriptor(DefaultHighlighter.UNRESOLVED_ACCESS_ID, DefaultHighlighter.UNRESOLVED_ACCESS),
|
||||
new AttributesDescriptor(DefaultHighlighter.LITERAL_CONVERSION_ID, DefaultHighlighter.LITERAL_CONVERSION),
|
||||
new AttributesDescriptor(DefaultHighlighter.ANNOTATION_ID, DefaultHighlighter.ANNOTATION),
|
||||
new AttributesDescriptor(DefaultHighlighter.STATIC_FIELD_ID, DefaultHighlighter.STATIC_FIELD),
|
||||
new AttributesDescriptor(DefaultHighlighter.STATIC_FIELD_ID, DefaultHighlighter.INSTANCE_FIELD),
|
||||
@@ -101,7 +102,9 @@ public class GroovyColorsAndFontsPage implements ColorSettingsPage {
|
||||
"<classref>Demo</classref>.<statfield>panel</statfield>.size = " +
|
||||
"<classref>Demo</classref>.<statmet>foo</statmet>(\"123${456}789\".toInteger()) \n" +
|
||||
"'JetBrains'.matches(/Jw+Bw+/) \n" +
|
||||
"def x=1 + <unresolved>unresolved</unresolved>"
|
||||
"def x=1 + <unresolved>unresolved</unresolved>\n" +
|
||||
"def f1 = []\n" +
|
||||
"<classref>File</classref> f=<literal>[</literal>'path'<literal>]</literal>"
|
||||
;
|
||||
}
|
||||
|
||||
@@ -116,6 +119,7 @@ public class GroovyColorsAndFontsPage implements ColorSettingsPage {
|
||||
map.put("doctag", DefaultHighlighter.DOC_COMMENT_TAG);
|
||||
map.put("unresolved", DefaultHighlighter.UNRESOLVED_ACCESS);
|
||||
map.put("classref", DefaultHighlighter.CLASS_REFERENCE);
|
||||
map.put("literal", DefaultHighlighter.LITERAL_CONVERSION);
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user