InlineOnly annotation suppresses NOTHING_TO_INLINE diagnostics.
This commit is contained in:
+2
-1
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.lexer.KtTokens;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension;
|
||||
import org.jetbrains.kotlin.resolve.annotations.AnnotationUtilKt;
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
|
||||
|
||||
import java.util.List;
|
||||
@@ -125,7 +126,7 @@ public class InlineAnalyzerExtension implements FunctionAnalyzerExtension.Analyz
|
||||
|
||||
hasInlinable |= InlineUtil.containsReifiedTypeParameters(functionDescriptor);
|
||||
|
||||
if (!hasInlinable) {
|
||||
if (!hasInlinable && !AnnotationUtilKt.isInlineOnly(functionDescriptor)) {
|
||||
KtModifierList modifierList = function.getModifierList();
|
||||
PsiElement inlineModifier = modifierList == null ? null : modifierList.getModifier(KtTokens.INLINE_KEYWORD);
|
||||
PsiElement reportOn = inlineModifier == null ? function : inlineModifier;
|
||||
|
||||
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
// !DIAGNOSTICS: -INVISIBLE_MEMBER -INVISIBLE_REFERENCE -UNUSED_PARAMETER -NULLABLE_INLINE_PARAMETER
|
||||
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun test() {
|
||||
|
||||
}
|
||||
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun test3(noinline s : (Int) -> Int) {
|
||||
|
||||
}
|
||||
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun test4(noinline s : Int.() -> Int) {
|
||||
|
||||
}
|
||||
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun Function1<Int, Int>?.test5() {
|
||||
|
||||
}
|
||||
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun Function1<Int, Int>?.test6() {
|
||||
|
||||
}
|
||||
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun test2(s : ((Int) -> Int)?) {
|
||||
|
||||
}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
package
|
||||
|
||||
@kotlin.internal.InlineOnly() public inline fun test(): kotlin.Unit
|
||||
@kotlin.internal.InlineOnly() public inline fun test2(/*0*/ s: ((kotlin.Int) -> kotlin.Int)?): kotlin.Unit
|
||||
@kotlin.internal.InlineOnly() public inline fun test3(/*0*/ noinline s: (kotlin.Int) -> kotlin.Int): kotlin.Unit
|
||||
@kotlin.internal.InlineOnly() public inline fun test4(/*0*/ noinline s: kotlin.Int.() -> kotlin.Int): kotlin.Unit
|
||||
@kotlin.internal.InlineOnly() public inline fun ((kotlin.Int) -> kotlin.Int)?.test5(): kotlin.Unit
|
||||
@kotlin.internal.InlineOnly() public inline fun ((kotlin.Int) -> kotlin.Int)?.test6(): kotlin.Unit
|
||||
@@ -824,6 +824,21 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithStdLib/inline")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Inline extends AbstractDiagnosticsTestWithStdLib {
|
||||
public void testAllFilesPresentInInline() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithStdLib/inline"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("inlineOnlySuppressesNothingToInline.kt")
|
||||
public void testInlineOnlySuppressesNothingToInline() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/inline/inlineOnlySuppressesNothingToInline.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithStdLib/kt7585")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Reference in New Issue
Block a user