Skip to content

Commit 76592dc

Browse files
KvanTTTSpace Team
authored and
Space Team
committed
[Parser] Remove header and impl tokens
They cause deprecation errors since 2.0, and it looks like nobody uses them ^KT-52315 Fixed
1 parent 67088b4 commit 76592dc

File tree

26 files changed

+38
-358
lines changed

26 files changed

+38
-358
lines changed

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeWithLatestLanguageVersionTestGenerated.java

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker(MppChecker
363363
KtFakeSourceElementKind.DataClassGeneratedMembers -> false
364364
KtFakeSourceElementKind.EnumGeneratedDeclaration -> false
365365
KtFakeSourceElementKind.ImplicitConstructor -> false
366-
else -> hasModifier(KtTokens.ACTUAL_KEYWORD) || hasModifier(KtTokens.IMPL_KEYWORD)
366+
else -> hasModifier(KtTokens.ACTUAL_KEYWORD)
367367
}
368368
}
369369

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirModifierChecker.kt

+4-15
Original file line numberDiff line numberDiff line change
@@ -130,23 +130,12 @@ object FirModifierChecker : FirBasicDeclarationChecker(MppCheckerKind.Common) {
130130
return false
131131
}
132132

133-
if (parent is FirRegularClass) {
134-
if (modifierToken == KtTokens.EXPECT_KEYWORD || modifierToken == KtTokens.HEADER_KEYWORD) {
135-
reporter.reportOn(modifierSource, FirErrors.WRONG_MODIFIER_TARGET, modifierToken, "nested class", context)
136-
return false
137-
}
133+
if (parent is FirRegularClass && modifierToken == KtTokens.EXPECT_KEYWORD) {
134+
reporter.reportOn(modifierSource, FirErrors.WRONG_MODIFIER_TARGET, modifierToken, "nested class", context)
135+
return false
138136
}
139137

140-
val deprecatedModifierReplacement = deprecatedKmpModifierMap[modifierToken]
141-
if (deprecatedModifierReplacement != null) {
142-
reporter.reportOn(
143-
modifierSource,
144-
FirErrors.DEPRECATED_MODIFIER,
145-
modifierToken,
146-
deprecatedModifierReplacement,
147-
context
148-
)
149-
} else if (checkModifier(FirErrors.DEPRECATED_MODIFIER_FOR_TARGET)) {
138+
if (checkModifier(FirErrors.DEPRECATED_MODIFIER_FOR_TARGET)) {
150139
checkModifier(FirErrors.REDUNDANT_MODIFIER_FOR_TARGET)
151140
}
152141

compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/Modifier.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ open class Modifier(var modifiers: Long = ModifierFlag.NONE.value) {
108108

109109
fun hasCrossinline(): Boolean = hasFlag(ModifierFlag.PARAMETER_CROSSINLINE)
110110

111-
fun hasExpect(): Boolean = hasFlag(ModifierFlag.PLATFORM_EXPECT) || hasFlag(ModifierFlag.PLATFORM_HEADER)
111+
fun hasExpect(): Boolean = hasFlag(ModifierFlag.PLATFORM_EXPECT)
112112

113-
fun hasActual(): Boolean = hasFlag(ModifierFlag.PLATFORM_ACTUAL) || hasFlag(ModifierFlag.PLATFORM_IMPL)
113+
fun hasActual(): Boolean = hasFlag(ModifierFlag.PLATFORM_ACTUAL)
114114

115115
fun hasConst(): Boolean = hasFlag(ModifierFlag.PARAMETER_CONST)
116116

compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierFlag.kt

+4-8
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,10 @@ enum class ModifierFlag(val value: Long) {
4141
PARAMETER_CONST(1L shl 28),
4242
PLATFORM_EXPECT(1L shl 29),
4343
PLATFORM_ACTUAL(1L shl 30),
44-
PLATFORM_HEADER(1L shl 31),
45-
PLATFORM_IMPL(1L shl 32),
46-
VARIANCE_IN(1L shl 33),
47-
VARIANCE_OUT(1L shl 34),
48-
VARIANCE_INVARIANT(1L shl 35),
49-
REIFICATION_REIFIED(1L shl 36);
44+
VARIANCE_IN(1L shl 31),
45+
VARIANCE_OUT(1L shl 32),
46+
VARIANCE_INVARIANT(1L shl 33),
47+
REIFICATION_REIFIED(1L shl 34);
5048

5149
companion object {
5250
val ElementTypeToModifierFlagMap: Map<IElementType, ModifierFlag> = mutableMapOf(
@@ -89,8 +87,6 @@ enum class ModifierFlag(val value: Long) {
8987
// Platform
9088
KtTokens.EXPECT_KEYWORD to PLATFORM_EXPECT,
9189
KtTokens.ACTUAL_KEYWORD to PLATFORM_ACTUAL,
92-
KtTokens.HEADER_KEYWORD to PLATFORM_HEADER,
93-
KtTokens.IMPL_KEYWORD to PLATFORM_IMPL,
9490

9591
// Variance
9692
KtTokens.IN_KEYWORD to VARIANCE_IN,

compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -246,13 +246,8 @@ public void checkModifiersForDestructuringDeclaration(@NotNull KtDestructuringDe
246246
private void checkIllegalHeader(@NotNull KtModifierListOwner modifierListOwner, @NotNull DeclarationDescriptor descriptor) {
247247
// Most cases are already handled by ModifierCheckerCore, only check nested classes here
248248
KtModifierList modifierList = modifierListOwner.getModifierList();
249-
PsiElement keyword = modifierList != null ? modifierList.getModifier(HEADER_KEYWORD) : null;
250-
if (keyword != null &&
251-
descriptor instanceof ClassDescriptor && descriptor.getContainingDeclaration() instanceof ClassDescriptor) {
252-
trace.report(WRONG_MODIFIER_TARGET.on(keyword, KtTokens.HEADER_KEYWORD, "nested class"));
253-
}
254-
else if (keyword == null && modifierList != null) {
255-
keyword = modifierList.getModifier(EXPECT_KEYWORD);
249+
if (modifierList != null) {
250+
PsiElement keyword = modifierList.getModifier(EXPECT_KEYWORD);
256251
if (keyword != null &&
257252
descriptor instanceof ClassDescriptor && descriptor.getContainingDeclaration() instanceof ClassDescriptor) {
258253
trace.report(WRONG_MODIFIER_TARGET.on(keyword, KtTokens.EXPECT_KEYWORD, "nested class"));

compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt

-3
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,9 @@ object ModifierCheckerCore {
122122
trace.report(Errors.WRONG_MODIFIER_TARGET.on(node.psi, modifier, actualTargets.firstOrNull()?.description ?: "this"))
123123
return false
124124
}
125-
val deprecatedModifierReplacement = deprecatedKmpModifierMap[modifier]
126125
val deprecatedTargets = deprecatedTargetMap[modifier] ?: emptySet()
127126
val redundantTargets = redundantTargetMap[modifier] ?: emptySet()
128127
when {
129-
deprecatedModifierReplacement != null ->
130-
trace.report(Errors.DEPRECATED_MODIFIER.on(node.psi, modifier, deprecatedModifierReplacement))
131128
actualTargets.any { it in deprecatedTargets } ->
132129
trace.report(
133130
Errors.DEPRECATED_MODIFIER_FOR_TARGET.on(

compiler/psi/src/org/jetbrains/kotlin/lexer/KtTokens.java

+5-10
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,9 @@ public interface KtTokens {
171171
int INFIX_KEYWORD_Id = 142;
172172
int CONST_KEYWORD_Id = 143;
173173
int SUSPEND_KEYWORD_Id = 144;
174-
int HEADER_KEYWORD_Id = 145;
175-
int IMPL_KEYWORD_Id = 146;
176-
int EXPECT_KEYWORD_Id = 147;
177-
int ACTUAL_KEYWORD_Id = 148;
178-
int INTERPOLATION_PREFIX_Id = 149;
174+
int EXPECT_KEYWORD_Id = 145;
175+
int ACTUAL_KEYWORD_Id = 146;
176+
int INTERPOLATION_PREFIX_Id = 147;
179177

180178
KtToken EOF = new KtToken("EOF", EOF_Id);
181179

@@ -347,9 +345,6 @@ public interface KtTokens {
347345

348346
KtModifierKeywordToken SUSPEND_KEYWORD = KtModifierKeywordToken.softKeywordModifier("suspend", SUSPEND_KEYWORD_Id);
349347

350-
KtModifierKeywordToken HEADER_KEYWORD = KtModifierKeywordToken.softKeywordModifier("header", HEADER_KEYWORD_Id);
351-
KtModifierKeywordToken IMPL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("impl", IMPL_KEYWORD_Id);
352-
353348
KtModifierKeywordToken EXPECT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("expect", EXPECT_KEYWORD_Id);
354349
KtModifierKeywordToken ACTUAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("actual", ACTUAL_KEYWORD_Id);
355350

@@ -374,7 +369,7 @@ public interface KtTokens {
374369
LATEINIT_KEYWORD,
375370
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD,
376371
ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD,
377-
SUSPEND_KEYWORD, HEADER_KEYWORD, IMPL_KEYWORD, EXPECT_KEYWORD, ACTUAL_KEYWORD,
372+
SUSPEND_KEYWORD, EXPECT_KEYWORD, ACTUAL_KEYWORD,
378373
VALUE_KEYWORD, CONTEXT_KEYWORD
379374
);
380375

@@ -390,7 +385,7 @@ public interface KtTokens {
390385
REIFIED_KEYWORD, COMPANION_KEYWORD, SEALED_KEYWORD, LATEINIT_KEYWORD,
391386
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD,
392387
CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD, SUSPEND_KEYWORD,
393-
HEADER_KEYWORD, IMPL_KEYWORD, EXPECT_KEYWORD, ACTUAL_KEYWORD, FUN_KEYWORD, VALUE_KEYWORD
388+
EXPECT_KEYWORD, ACTUAL_KEYWORD, FUN_KEYWORD, VALUE_KEYWORD
394389
};
395390

396391
TokenSet MODIFIER_KEYWORDS = TokenSet.create(MODIFIER_KEYWORDS_ARRAY);

compiler/psi/src/org/jetbrains/kotlin/psi/addRemoveModifier.kt

+3-5
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,13 @@ private val MODIFIERS_TO_REPLACE = mapOf(
134134
PROTECTED_KEYWORD to listOf(PUBLIC_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD),
135135
PRIVATE_KEYWORD to listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, INTERNAL_KEYWORD),
136136
INTERNAL_KEYWORD to listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD),
137-
HEADER_KEYWORD to listOf(IMPL_KEYWORD, ACTUAL_KEYWORD, EXPECT_KEYWORD),
138-
IMPL_KEYWORD to listOf(HEADER_KEYWORD, EXPECT_KEYWORD, ACTUAL_KEYWORD),
139-
EXPECT_KEYWORD to listOf(IMPL_KEYWORD, ACTUAL_KEYWORD, HEADER_KEYWORD),
140-
ACTUAL_KEYWORD to listOf(HEADER_KEYWORD, EXPECT_KEYWORD, IMPL_KEYWORD)
137+
EXPECT_KEYWORD to listOf(ACTUAL_KEYWORD),
138+
ACTUAL_KEYWORD to listOf(EXPECT_KEYWORD),
141139
)
142140

143141
val MODIFIERS_ORDER = listOf(
144142
PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD,
145-
HEADER_KEYWORD, IMPL_KEYWORD, EXPECT_KEYWORD, ACTUAL_KEYWORD,
143+
EXPECT_KEYWORD, ACTUAL_KEYWORD,
146144
FINAL_KEYWORD, OPEN_KEYWORD, ABSTRACT_KEYWORD, SEALED_KEYWORD,
147145
CONST_KEYWORD,
148146
EXTERNAL_KEYWORD,

compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/psiUtils.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -457,11 +457,11 @@ inline fun <reified T : PsiElement> PsiElement.getLastParentOfTypeInRow() = pare
457457
inline fun <reified T : PsiElement> PsiElement.getLastParentOfTypeInRowWithSelf() = parentsWithSelf
458458
.takeWhile { it is T }.lastOrNull() as? T
459459

460-
fun KtModifierListOwner.hasExpectModifier() = hasModifier(KtTokens.HEADER_KEYWORD) || hasModifier(KtTokens.EXPECT_KEYWORD)
461-
fun KtModifierList.hasExpectModifier() = hasModifier(KtTokens.HEADER_KEYWORD) || hasModifier(KtTokens.EXPECT_KEYWORD)
460+
fun KtModifierListOwner.hasExpectModifier() = hasModifier(KtTokens.EXPECT_KEYWORD)
461+
fun KtModifierList.hasExpectModifier() = hasModifier(KtTokens.EXPECT_KEYWORD)
462462

463-
fun KtModifierListOwner.hasActualModifier() = hasModifier(KtTokens.IMPL_KEYWORD) || hasModifier(KtTokens.ACTUAL_KEYWORD)
464-
fun KtModifierList.hasActualModifier() = hasModifier(KtTokens.IMPL_KEYWORD) || hasModifier(KtTokens.ACTUAL_KEYWORD)
463+
fun KtModifierListOwner.hasActualModifier() = hasModifier(KtTokens.ACTUAL_KEYWORD)
464+
fun KtModifierList.hasActualModifier() = hasModifier(KtTokens.ACTUAL_KEYWORD)
465465
fun KtModifierList.hasSuspendModifier() = hasModifier(KtTokens.SUSPEND_KEYWORD)
466466

467467
fun KtModifierList.hasFunModifier() = hasModifier(KtTokens.FUN_KEYWORD)

compiler/psi/src/org/jetbrains/kotlin/psi/stubs/KotlinStubVersions.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ object KotlinStubVersions {
1212
// Though only kotlin declarations (no code in the bodies) are stubbed, please do increase this version
1313
// if you are not 100% sure it can be avoided.
1414
// Increasing this version will lead to reindexing of all kotlin source files on the first IDE startup with the new version.
15-
const val SOURCE_STUB_VERSION = 162
15+
const val SOURCE_STUB_VERSION = 163
1616

1717
// Binary stub version should be increased if stub format (org.jetbrains.kotlin.psi.stubs.impl) is changed
1818
// or changes are made to the core stub building code (org.jetbrains.kotlin.idea.decompiler.stubBuilder).

compiler/psi/src/org/jetbrains/kotlin/resolve/ModifierCheckerHelpers.kt

+2-31
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ private fun buildCompatibilityMap(): Map<Pair<KtKeywordToken, KtKeywordToken>, C
8888
// (see the KEEP https://github.com/Kotlin/KEEP/blob/master/proposals/sealed-class-inheritance.md)
8989
result += incompatibilityRegister(SEALED_KEYWORD, INNER_KEYWORD)
9090

91-
// header / expect / impl / actual are all incompatible
92-
result += incompatibilityRegister(HEADER_KEYWORD, EXPECT_KEYWORD, IMPL_KEYWORD, ACTUAL_KEYWORD)
91+
// expect / actual are all incompatible
92+
result += incompatibilityRegister(EXPECT_KEYWORD, ACTUAL_KEYWORD)
9393

9494
return result
9595
}
@@ -128,8 +128,6 @@ private fun compatibilityRegister(
128128
val featureDependencies = mapOf(
129129
SUSPEND_KEYWORD to listOf(LanguageFeature.Coroutines),
130130
INLINE_KEYWORD to listOf(LanguageFeature.InlineProperties, LanguageFeature.InlineClasses),
131-
HEADER_KEYWORD to listOf(LanguageFeature.MultiPlatformProjects),
132-
IMPL_KEYWORD to listOf(LanguageFeature.MultiPlatformProjects),
133131
EXPECT_KEYWORD to listOf(LanguageFeature.MultiPlatformProjects),
134132
ACTUAL_KEYWORD to listOf(LanguageFeature.MultiPlatformProjects),
135133
LATEINIT_KEYWORD to listOf(LanguageFeature.LateinitTopLevelProperties, LanguageFeature.LateinitLocalVariables),
@@ -235,28 +233,6 @@ val possibleTargetMap = mapOf(
235233
CONST_KEYWORD to EnumSet.of(KotlinTarget.MEMBER_PROPERTY, KotlinTarget.TOP_LEVEL_PROPERTY),
236234
OPERATOR_KEYWORD to EnumSet.of(KotlinTarget.FUNCTION),
237235
INFIX_KEYWORD to EnumSet.of(KotlinTarget.FUNCTION),
238-
HEADER_KEYWORD to EnumSet.of(
239-
KotlinTarget.TOP_LEVEL_FUNCTION,
240-
KotlinTarget.TOP_LEVEL_PROPERTY,
241-
KotlinTarget.CLASS_ONLY,
242-
KotlinTarget.OBJECT,
243-
KotlinTarget.INTERFACE,
244-
KotlinTarget.ENUM_CLASS,
245-
KotlinTarget.ANNOTATION_CLASS
246-
),
247-
IMPL_KEYWORD to EnumSet.of(
248-
KotlinTarget.TOP_LEVEL_FUNCTION,
249-
KotlinTarget.MEMBER_FUNCTION,
250-
KotlinTarget.TOP_LEVEL_PROPERTY,
251-
KotlinTarget.MEMBER_PROPERTY,
252-
KotlinTarget.CONSTRUCTOR,
253-
KotlinTarget.CLASS_ONLY,
254-
KotlinTarget.OBJECT,
255-
KotlinTarget.INTERFACE,
256-
KotlinTarget.ENUM_CLASS,
257-
KotlinTarget.ANNOTATION_CLASS,
258-
KotlinTarget.TYPEALIAS
259-
),
260236
EXPECT_KEYWORD to EnumSet.of(
261237
KotlinTarget.TOP_LEVEL_FUNCTION,
262238
KotlinTarget.TOP_LEVEL_PROPERTY,
@@ -288,11 +264,6 @@ val deprecatedTargetMap = mapOf<KtKeywordToken, Set<KotlinTarget>>()
288264

289265
val deprecatedParentTargetMap = mapOf<KtKeywordToken, Set<KotlinTarget>>()
290266

291-
val deprecatedKmpModifierMap = mapOf(
292-
HEADER_KEYWORD to EXPECT_KEYWORD,
293-
IMPL_KEYWORD to ACTUAL_KEYWORD
294-
)
295-
296267
// NOTE: redundant targets must be possible!
297268
val redundantTargetMap = mapOf<KtKeywordToken, Set<KotlinTarget>>(
298269
OPEN_KEYWORD to EnumSet.of(KotlinTarget.INTERFACE)

compiler/testData/diagnostics/tests/multiplatform/deprecated/header.fir.kt

-29
This file was deleted.

0 commit comments

Comments
 (0)