Support reified extension properties

This commit is contained in:
Mikhael Bogdanov
2016-06-21 16:16:55 +03:00
parent 7c67a3315a
commit 7baf70e8fa
6 changed files with 83 additions and 1 deletions
@@ -39,10 +39,28 @@ public class InlineUtil {
FunctionTypesKt.isFunctionType(valueParameterOrReceiver.getOriginal().getType());
}
public static boolean isInlineFunctionOrProperty(@Nullable DeclarationDescriptor descriptor) {
return isInline(descriptor) || isInlineProperty(descriptor);
}
public static boolean isInline(@Nullable DeclarationDescriptor descriptor) {
return descriptor instanceof FunctionDescriptor && getInlineStrategy((FunctionDescriptor) descriptor).isInline();
}
public static boolean isInlineProperty(@Nullable DeclarationDescriptor descriptor) {
if (!(descriptor instanceof PropertyDescriptor)) return false;
PropertyGetterDescriptor getter = ((PropertyDescriptor) descriptor).getGetter();
if (getter == null || !getter.isInline()) return false;
if (((PropertyDescriptor) descriptor).isVar()) {
PropertySetterDescriptor setter = ((PropertyDescriptor) descriptor).getSetter();
return setter != null && setter.isInline();
}
return true;
}
public static boolean isInlineOrContainingInline(@Nullable DeclarationDescriptor descriptor) {
if (isInline(descriptor)) return true;
if (descriptor == null) return false;