[Analysis API] add isNoinline/isCrossinline to the KtValueParameterSymbol
This commit is contained in:
+6
@@ -94,6 +94,12 @@ class KtFe10DescDefaultPropertySetterSymbol(
|
||||
override val isImplicitLambdaParameter: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isCrossinline: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isNoinline: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val name: Name
|
||||
get() = withValidityAssertion { Name.identifier("value") }
|
||||
|
||||
|
||||
+6
@@ -42,6 +42,12 @@ internal class KtFe10DescValueParameterSymbol(
|
||||
override val isVararg: Boolean
|
||||
get() = withValidityAssertion { descriptor.isVararg }
|
||||
|
||||
override val isCrossinline: Boolean
|
||||
get() = withValidityAssertion { descriptor.isCrossinline }
|
||||
|
||||
override val isNoinline: Boolean
|
||||
get() = withValidityAssertion { descriptor.isNoinline }
|
||||
|
||||
override val isImplicitLambdaParameter: Boolean
|
||||
get() = withValidityAssertion {
|
||||
descriptor.containingDeclaration is AnonymousFunctionDescriptor &&
|
||||
|
||||
+6
@@ -118,6 +118,12 @@ class KtFe10PsiDefaultPropertySetterSymbol(
|
||||
override val isImplicitLambdaParameter: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isCrossinline: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isNoinline: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val name: Name
|
||||
get() = withValidityAssertion { Name.identifier("value") }
|
||||
|
||||
|
||||
+6
@@ -43,6 +43,12 @@ internal class KtFe10PsiDefaultSetterParameterSymbol(
|
||||
override val isVararg: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isCrossinline: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isNoinline: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
override val isImplicitLambdaParameter: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
|
||||
+7
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
@@ -48,6 +49,12 @@ internal class KtFe10PsiValueParameterSymbol(
|
||||
override val isVararg: Boolean
|
||||
get() = withValidityAssertion { psi.isVarArg }
|
||||
|
||||
override val isCrossinline: Boolean
|
||||
get() = withValidityAssertion { psi.hasModifier(KtTokens.CROSSINLINE_KEYWORD) }
|
||||
|
||||
override val isNoinline: Boolean
|
||||
get() = withValidityAssertion { psi.hasModifier(KtTokens.NOINLINE_KEYWORD) }
|
||||
|
||||
override val isImplicitLambdaParameter: Boolean
|
||||
get() = withValidityAssertion { false }
|
||||
|
||||
|
||||
+16
@@ -271,4 +271,20 @@ public class Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends A
|
||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnProperty.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ValueParameters {
|
||||
@Test
|
||||
public void testAllFilesPresentInValueParameters() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterInlining.kt")
|
||||
public void testParameterInlining() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/parameterInlining.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -41,6 +41,10 @@ internal class KtFirValueParameterSymbol(
|
||||
firSymbol.source?.kind == KtFakeSourceElementKind.ItLambdaParameter
|
||||
}
|
||||
|
||||
override val isCrossinline: Boolean get() = withValidityAssertion { firSymbol.isCrossinline}
|
||||
|
||||
override val isNoinline: Boolean get() = withValidityAssertion { firSymbol.isNoinline}
|
||||
|
||||
override val returnType by cached {
|
||||
val returnType = firSymbol.resolvedReturnType
|
||||
return@cached if (firSymbol.isVararg) {
|
||||
|
||||
+16
@@ -271,4 +271,20 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends Ab
|
||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnProperty.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ValueParameters {
|
||||
@Test
|
||||
public void testAllFilesPresentInValueParameters() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterInlining.kt")
|
||||
public void testParameterInlining() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/parameterInlining.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
@@ -271,4 +271,20 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated ext
|
||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnProperty.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ValueParameters {
|
||||
@Test
|
||||
public void testAllFilesPresentInValueParameters() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("parameterInlining.kt")
|
||||
public void testParameterInlining() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/parameterInlining.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+14
-2
@@ -6,13 +6,15 @@
|
||||
package org.jetbrains.kotlin.analysis.api.symbols
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.analysis.api.*
|
||||
import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue
|
||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||
import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
|
||||
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -171,6 +173,16 @@ public abstract class KtValueParameterSymbol : KtVariableLikeSymbol(), KtSymbolW
|
||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||
|
||||
/**
|
||||
* Returns true if the function parameter is marked with `noinline` modifier
|
||||
*/
|
||||
public abstract val isNoinline: Boolean
|
||||
|
||||
/**
|
||||
* Returns true if the function parameter is marked with `crossinline` modifier
|
||||
*/
|
||||
public abstract val isCrossinline: Boolean
|
||||
|
||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||
get() = withValidityAssertion { emptyList() }
|
||||
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
inline fun foo(
|
||||
inlineParameter: () -> Int,
|
||||
crossinline crossinlineParameter: () -> Int,
|
||||
noinline noinlineParameter: () -> Int,
|
||||
) {}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun foo(inlineParameter: () -> kotlin.Int, crossinline crossinlineParameter: () -> kotlin.Int, noinline noinlineParameter: () -> kotlin.Int)
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
KtValueParameterSymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: null
|
||||
contextReceivers: []
|
||||
generatedPrimaryConstructorProperty: null
|
||||
hasDefaultValue: false
|
||||
isCrossinline: false
|
||||
isExtension: false
|
||||
isImplicitLambdaParameter: false
|
||||
isNoinline: false
|
||||
isVararg: false
|
||||
name: inlineParameter
|
||||
origin: SOURCE
|
||||
receiverType: null
|
||||
returnType: kotlin/Function0<kotlin/Int>
|
||||
symbolKind: LOCAL
|
||||
typeParameters: []
|
||||
getContainingModule: KtSourceModule "Sources of main"
|
||||
deprecationStatus: null
|
||||
|
||||
KtValueParameterSymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: null
|
||||
contextReceivers: []
|
||||
generatedPrimaryConstructorProperty: null
|
||||
hasDefaultValue: false
|
||||
isCrossinline: true
|
||||
isExtension: false
|
||||
isImplicitLambdaParameter: false
|
||||
isNoinline: false
|
||||
isVararg: false
|
||||
name: crossinlineParameter
|
||||
origin: SOURCE
|
||||
receiverType: null
|
||||
returnType: kotlin/Function0<kotlin/Int>
|
||||
symbolKind: LOCAL
|
||||
typeParameters: []
|
||||
getContainingModule: KtSourceModule "Sources of main"
|
||||
deprecationStatus: null
|
||||
|
||||
KtValueParameterSymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: null
|
||||
contextReceivers: []
|
||||
generatedPrimaryConstructorProperty: null
|
||||
hasDefaultValue: false
|
||||
isCrossinline: false
|
||||
isExtension: false
|
||||
isImplicitLambdaParameter: false
|
||||
isNoinline: true
|
||||
isVararg: false
|
||||
name: noinlineParameter
|
||||
origin: SOURCE
|
||||
receiverType: null
|
||||
returnType: kotlin/Function0<kotlin/Int>
|
||||
symbolKind: LOCAL
|
||||
typeParameters: []
|
||||
getContainingModule: KtSourceModule "Sources of main"
|
||||
deprecationStatus: null
|
||||
|
||||
KtFunctionSymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: /foo
|
||||
contextReceivers: []
|
||||
hasStableParameterNames: true
|
||||
isBuiltinFunctionInvoke: false
|
||||
isExtension: false
|
||||
isExternal: false
|
||||
isInfix: false
|
||||
isInline: true
|
||||
isOperator: false
|
||||
isOverride: false
|
||||
isStatic: false
|
||||
isSuspend: false
|
||||
modality: FINAL
|
||||
name: foo
|
||||
origin: SOURCE
|
||||
receiverType: null
|
||||
returnType: kotlin/Unit
|
||||
symbolKind: TOP_LEVEL
|
||||
typeParameters: []
|
||||
valueParameters: [
|
||||
KtValueParameterSymbol(inlineParameter)
|
||||
KtValueParameterSymbol(crossinlineParameter)
|
||||
KtValueParameterSymbol(noinlineParameter)
|
||||
]
|
||||
visibility: Public
|
||||
getContainingModule: KtSourceModule "Sources of main"
|
||||
deprecationStatus: null
|
||||
Reference in New Issue
Block a user