Added test checking names highlighting.
This commit is contained in:
@@ -31,6 +31,7 @@ import com.intellij.psi.PsiElement;
|
|||||||
import com.intellij.psi.PsiReference;
|
import com.intellij.psi.PsiReference;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.annotations.TestOnly;
|
||||||
import org.jetbrains.jet.lang.diagnostics.*;
|
import org.jetbrains.jet.lang.diagnostics.*;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
|
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
|
||||||
@@ -48,6 +49,7 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public class JetPsiChecker implements Annotator {
|
public class JetPsiChecker implements Annotator {
|
||||||
private static volatile boolean errorReportingEnabled = true;
|
private static volatile boolean errorReportingEnabled = true;
|
||||||
|
private static boolean namesHighlightingTest;
|
||||||
|
|
||||||
public static void setErrorReportingEnabled(boolean value) {
|
public static void setErrorReportingEnabled(boolean value) {
|
||||||
errorReportingEnabled = value;
|
errorReportingEnabled = value;
|
||||||
@@ -57,8 +59,13 @@ public class JetPsiChecker implements Annotator {
|
|||||||
return errorReportingEnabled;
|
return errorReportingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestOnly
|
||||||
|
public static void setNamesHighlightingTest(boolean namesHighlightingTest) {
|
||||||
|
JetPsiChecker.namesHighlightingTest = namesHighlightingTest;
|
||||||
|
}
|
||||||
|
|
||||||
static boolean isNamesHighlightingEnabled() {
|
static boolean isNamesHighlightingEnabled() {
|
||||||
return !ApplicationManager.getApplication().isUnitTestMode();
|
return !ApplicationManager.getApplication().isUnitTestMode() || namesHighlightingTest;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void highlightName(@NotNull AnnotationHolder holder,
|
static void highlightName(@NotNull AnnotationHolder holder,
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
fun <info textAttributesKey="KOTLIN_FUNCTION_DECLARATION">global</info>() {
|
||||||
|
fun <info textAttributesKey="KOTLIN_FUNCTION_DECLARATION">inner</info>() {
|
||||||
|
|
||||||
|
}
|
||||||
|
<info textAttributesKey="KOTLIN_FUNCTION_CALL">inner</info>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Int.<info textAttributesKey="KOTLIN_FUNCTION_DECLARATION">ext</info>() {
|
||||||
|
}
|
||||||
|
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">open</info> class <info textAttributesKey="KOTLIN_CLASS">Container</info> {
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">open</info> fun <info textAttributesKey="KOTLIN_FUNCTION_DECLARATION">member</info>() {
|
||||||
|
<info textAttributesKey="KOTLIN_NAMESPACE_FUNCTION_CALL">global</info>()
|
||||||
|
5.<info textAttributesKey="KOTLIN_EXTENSION_FUNCTION_CALL">ext</info>()
|
||||||
|
<info textAttributesKey="KOTLIN_FUNCTION_CALL">member</info>()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
trait <info textAttributesKey="KOTLIN_TRAIT">TheTrait</info> {
|
||||||
|
}
|
||||||
|
|
||||||
|
class <info textAttributesKey="KOTLIN_CLASS">TheClass</info> : <info textAttributesKey="KOTLIN_TRAIT">TheTrait</info> {
|
||||||
|
}
|
||||||
|
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">annotation</info> class <info textAttributesKey="KOTLIN_ANNOTATION">magnificent</info>
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">annotation</info> class <info textAttributesKey="KOTLIN_ANNOTATION">deprecated</info>
|
||||||
|
|
||||||
|
[<info textAttributesKey="KOTLIN_ANNOTATION">deprecated</info>]
|
||||||
|
<info textAttributesKey="KOTLIN_ANNOTATION">magnificent</info> <info textAttributesKey="KOTLIN_KEYWORD">abstract</info> class <info textAttributesKey="KOTLIN_ABSTRACT_CLASS">AbstractClass</info><<info textAttributesKey="KOTLIN_TYPE_PARAMETER">T</info>> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
var <info textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><info textAttributesKey="KOTLIN_PROPERTY_WITH_BACKING_FIELD"><info textAttributesKey="KOTLIN_NAMESPACE_PROPERTY">x</info></info></info> = 5
|
||||||
|
|
||||||
|
val Int.<info textAttributesKey="KOTLIN_EXTENSION_PROPERTY">sq</info> : Int
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">get</info>() {
|
||||||
|
return this * this
|
||||||
|
}
|
||||||
|
|
||||||
|
val <info textAttributesKey="KOTLIN_NAMESPACE_PROPERTY"><info textAttributesKey="KOTLIN_PROPERTY_WITH_BACKING_FIELD">y</info></info> : Int = 1
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">get</info>() {
|
||||||
|
return 5.<info textAttributesKey="KOTLIN_EXTENSION_PROPERTY">sq</info> + <info textAttributesKey="KOTLIN_NAMESPACE_PROPERTY"><info textAttributesKey="KOTLIN_BACKING_FIELD_ACCESS">$y</info></info> + <info textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><info textAttributesKey="KOTLIN_NAMESPACE_PROPERTY">x</info></info>
|
||||||
|
}
|
||||||
|
|
||||||
|
class <info textAttributesKey="KOTLIN_CLASS">Foo</info>(val <info textAttributesKey="KOTLIN_PARAMETER"><info textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><info textAttributesKey="KOTLIN_PROPERTY_WITH_BACKING_FIELD">a</info></info></info> : Int, <info textAttributesKey="KOTLIN_PARAMETER">b</info> : String) {
|
||||||
|
{
|
||||||
|
<info textAttributesKey="KOTLIN_PARAMETER">b</info>
|
||||||
|
}
|
||||||
|
|
||||||
|
var <info textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><info textAttributesKey="KOTLIN_INSTANCE_PROPERTY">v</info></info> : Int
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">get</info>() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">set</info>(<info textAttributesKey="KOTLIN_PARAMETER">value</info>) {
|
||||||
|
<info textAttributesKey="KOTLIN_PARAMETER">value</info>
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
var <info textAttributesKey="KOTLIN_NAMESPACE_PROPERTY"><info textAttributesKey="KOTLIN_PROPERTY_WITH_BACKING_FIELD"><info textAttributesKey="KOTLIN_MUTABLE_VARIABLE">global</info></info></info> : () -> Unit = {}
|
||||||
|
|
||||||
|
val Int.<info textAttributesKey="KOTLIN_EXTENSION_PROPERTY">ext</info> : () -> Unit
|
||||||
|
<info textAttributesKey="KOTLIN_KEYWORD">get</info>() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <info textAttributesKey="KOTLIN_FUNCTION_DECLARATION">foo</info>(<info textAttributesKey="KOTLIN_PARAMETER">a</info> : () -> Unit) {
|
||||||
|
<info textAttributesKey="KOTLIN_PARAMETER">a</info>()
|
||||||
|
<info textAttributesKey="KOTLIN_NAMESPACE_PROPERTY"><info textAttributesKey="KOTLIN_MUTABLE_VARIABLE">global</info></info>()
|
||||||
|
// TODO uncomment next line and replace "[" with "<" when KT-1728 is fixed
|
||||||
|
// 1.[info textAttributesKey="KOTLIN_EXTENSION_PROPERTY">ext</info>()
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2012 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.jet.plugin;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.daemon.LightDaemonAnalyzerTestCase;
|
||||||
|
import org.jetbrains.jet.plugin.highlighter.JetPsiChecker;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Evgeny Gerashchenko
|
||||||
|
* @since 4/4/12
|
||||||
|
*/
|
||||||
|
public class JetNamesHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||||
|
public void testTypesAndAnnotations() throws Exception {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testVariables() throws Exception {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFunctions() throws Exception {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testVariablesAsFunctions() throws Exception {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doTest() throws Exception {
|
||||||
|
JetPsiChecker.setNamesHighlightingTest(true);
|
||||||
|
doTest(getTestName(false) + ".kt", false, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTestDataPath() {
|
||||||
|
return PluginTestCaseBase.getTestDataPathBase() + "/highlighter/";
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user