FIR IDE: Begin implementing semantic highlighting via FIR

* Introduce frontend api module & implement api for FIR
* Implement some basic declaration highlighting for FIR
This commit is contained in:
Ilya Kirillov
2020-05-18 11:37:09 +03:00
parent 507fc34c22
commit f37e313705
23 changed files with 1055 additions and 16 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -10,6 +10,7 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.rt.execution.junit.FileComparisonFailure;
import com.intellij.testFramework.ExpectedHighlightingData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase;
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.TagsTestDataUtil;
@@ -24,18 +25,23 @@ public abstract class AbstractHighlightingTest extends KotlinLightCodeInsightFix
public static final String NO_CHECK_WARNINGS_PREFIX = "// NO_CHECK_WARNINGS";
public static final String EXPECTED_DUPLICATED_HIGHLIGHTING_PREFIX = "// EXPECTED_DUPLICATED_HIGHLIGHTING";
protected void doTest(String unused) throws Exception {
String fileText = FileUtil.loadFile(new File(testPath()), true);
protected void checkHighlighting(@NotNull String fileText) {
boolean checkInfos = !InTextDirectivesUtils.isDirectiveDefined(fileText, NO_CHECK_INFOS_PREFIX);
boolean checkWeakWarnings = !InTextDirectivesUtils.isDirectiveDefined(fileText, NO_CHECK_WEAK_WARNINGS_PREFIX);
boolean checkWarnings = !InTextDirectivesUtils.isDirectiveDefined(fileText, NO_CHECK_WARNINGS_PREFIX);
myFixture.checkHighlighting(checkWarnings, checkInfos, checkWeakWarnings);
}
protected void doTest(String unused) throws Exception {
String fileText = FileUtil.loadFile(new File(testPath()), true);
boolean expectedDuplicatedHighlighting = InTextDirectivesUtils.isDirectiveDefined(fileText, EXPECTED_DUPLICATED_HIGHLIGHTING_PREFIX);
myFixture.configureByFile(fileName());
withExpectedDuplicatedHighlighting(expectedDuplicatedHighlighting, () -> {
try {
myFixture.checkHighlighting(checkWarnings, checkInfos, checkWeakWarnings);
checkHighlighting(fileText);
}
catch (FileComparisonFailure e) {
List<HighlightInfo> highlights =