Make single decompiler be responsible for compiled Kotlin files
IDEA caches link between a virtual file and correspondent FileViewProvider. This breaks navigation to decompiled sources for the library that has been just updated because of outdated ABI version. Also IDEA don't allow to change language for decompiled files. #KT-6016 Fixed
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.utils.concurrent.block
|
||||
|
||||
public class LockedClearableLazyValue<T: Any>(val lock: Any, val init: () -> T) {
|
||||
private volatile var value: T? = null
|
||||
|
||||
public fun get(): T {
|
||||
val _v1 = value
|
||||
if (_v1 != null) {
|
||||
return _v1
|
||||
}
|
||||
|
||||
return synchronized(lock) {
|
||||
val _v2 = value
|
||||
// Suppress because of https://youtrack.jetbrains.com/issue/KT-6176
|
||||
[suppress("UNNECESSARY_NOT_NULL_ASSERTION")]
|
||||
if (_v2 != null) {
|
||||
_v2!!
|
||||
}
|
||||
else {
|
||||
val _v3 = init()
|
||||
this.value = _v3
|
||||
_v3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun drop() {
|
||||
synchronized (lock) {
|
||||
value = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user