Potential fix for KT-16673

See also:
http://stackoverflow.com/questions/42571812/unsupportedoperationexception-while-building-a-kotlin-project-in-idea

'original' for SamAdapterFunctionScope.MyFunctionDescriptor#doSubstitute should exactly match 'this.original',
so we can just provide it by default in SamAdapterFunctionScope.MyFunctionDescriptor#newCopyBuilder.
This commit is contained in:
Dmitry Petrov
2017-03-06 15:59:06 +03:00
committed by Mikhail Zarechenskiy
parent 268f7b715c
commit 18fb70b32f
4 changed files with 120 additions and 1 deletions
@@ -167,10 +167,13 @@ class SamAdapterFunctionsScope(
}
}
override fun newCopyBuilder(substitutor: TypeSubstitutor): CopyConfiguration =
super.newCopyBuilder(substitutor).setOriginal(this.original)
override fun doSubstitute(configuration: CopyConfiguration): FunctionDescriptor? {
val descriptor = super.doSubstitute(configuration) as MyFunctionDescriptor? ?: return null
val original = configuration.original
?: throw UnsupportedOperationException("doSubstitute with no original should not be called for synthetic extension")
?: throw UnsupportedOperationException("doSubstitute with no original should not be called for synthetic extension $this")
original as MyFunctionDescriptor
assert(original.original == original) { "original in doSubstitute should have no other original" }