FIR: avoid resolve loop between accessor and other members

#KT-48634 Fixed
This commit is contained in:
Mikhail Glukhikh
2021-08-23 18:08:31 +03:00
committed by teamcityserver
parent 72fa330576
commit 19a75b31f9
16 changed files with 186 additions and 29 deletions
@@ -60,7 +60,7 @@ internal object DeclarationCopyBuilder {
setter = copySetter
if (propertyResolvePhase < FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
initializerAndAccessorsAreResolved = false
bodyResolveState = FirPropertyBodyResolveState.NOTHING_RESOLVED
}
initDeclaration(this@withBodyFrom, propertyWithBody)
@@ -200,7 +200,7 @@ internal class ReanalyzablePropertyStructureElement(
getter?.replaceResolvePhase(upgradedPhase)
setter?.replaceResolvePhase(upgradedPhase)
replaceResolvePhase(upgradedPhase)
replaceInitializerAndAccessorsAreResolved(false)
replaceBodyResolveState(FirPropertyBodyResolveState.NOTHING_RESOLVED)
}
val resolvedDeclaration = firLazyDeclarationResolver.lazyResolveDeclaration(
@@ -5034,6 +5034,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis
@TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij")
@TestDataPath("$PROJECT_ROOT")
public class Intellij {
@Test
@TestMetadata("accessInSetter.kt")
public void testAccessInSetter() throws Exception {
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/accessInSetter.kt");
}
@Test
public void testAllFilesPresentInIntellij() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij"), Pattern.compile("^([^.]+)\\.kt$"), null, true);