set LOCAL visibility for local functions
(it can't be INHERIT)
This commit is contained in:
@@ -265,6 +265,9 @@ public class DeclarationsChecker {
|
||||
if (function.getBodyExpression() == null && !hasAbstractModifier) {
|
||||
trace.report(NON_MEMBER_FUNCTION_NO_BODY.on(function, functionDescriptor));
|
||||
}
|
||||
if (function.hasModifier(JetTokens.OVERRIDE_KEYWORD)) {
|
||||
trace.report(ILLEGAL_MODIFIER.on(function.getModifierList().getModifierNode(JetTokens.OVERRIDE_KEYWORD).getPsi(), JetTokens.OVERRIDE_KEYWORD));
|
||||
}
|
||||
}
|
||||
|
||||
private void checkAccessors(@NotNull JetProperty property, @NotNull PropertyDescriptor propertyDescriptor) {
|
||||
|
||||
@@ -49,6 +49,7 @@ import java.util.*;
|
||||
|
||||
import static org.jetbrains.jet.lang.diagnostics.Errors.*;
|
||||
import static org.jetbrains.jet.lang.resolve.BindingContext.CONSTRUCTOR;
|
||||
import static org.jetbrains.jet.lexer.JetTokens.OVERRIDE_KEYWORD;
|
||||
|
||||
/**
|
||||
* @author abreslav
|
||||
@@ -273,7 +274,7 @@ public class DescriptorResolver {
|
||||
}
|
||||
boolean hasBody = function.getBodyExpression() != null;
|
||||
Modality modality = ModifiersChecker.resolveModalityFromModifiers(function, getDefaultModality(containingDescriptor, hasBody));
|
||||
Visibility visibility = ModifiersChecker.resolveVisibilityFromModifiers(function);
|
||||
Visibility visibility = ModifiersChecker.resolveVisibilityFromModifiers(function, getDefaultVisibility(function, containingDescriptor));
|
||||
JetModifierList modifierList = function.getModifierList();
|
||||
boolean isInline = (modifierList != null) && modifierList.hasModifier(JetTokens.INLINE_KEYWORD);
|
||||
functionDescriptor.initialize(
|
||||
@@ -290,6 +291,23 @@ public class DescriptorResolver {
|
||||
return functionDescriptor;
|
||||
}
|
||||
|
||||
public static Visibility getDefaultVisibility(JetModifierListOwner modifierListOwner, DeclarationDescriptor containingDescriptor) {
|
||||
Visibility defaultVisibility;
|
||||
if (containingDescriptor instanceof ClassDescriptor) {
|
||||
JetModifierList modifierList = modifierListOwner.getModifierList();
|
||||
defaultVisibility = modifierList != null && modifierList.hasModifier(OVERRIDE_KEYWORD)
|
||||
? Visibilities.INHERITED
|
||||
: Visibilities.INTERNAL;
|
||||
}
|
||||
else if (containingDescriptor instanceof FunctionDescriptor) {
|
||||
defaultVisibility = Visibilities.LOCAL;
|
||||
}
|
||||
else {
|
||||
defaultVisibility = Visibilities.INTERNAL;
|
||||
}
|
||||
return defaultVisibility;
|
||||
}
|
||||
|
||||
public static Modality getDefaultModality(DeclarationDescriptor containingDescriptor, boolean isBodyPresent) {
|
||||
Modality defaultModality;
|
||||
if (containingDescriptor instanceof ClassDescriptor) {
|
||||
|
||||
Reference in New Issue
Block a user