Skip to content

Commit 76caebf

Browse files
committed
make sure the visibiltiy is passed around
1 parent 33f8293 commit 76caebf

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/validation/RMethodFunctionWrapper.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616

1717
import org.eclipse.dltk.compiler.problem.IProblemCategory;
1818
import org.eclipse.dltk.compiler.problem.IProblemIdentifier;
19+
import org.eclipse.dltk.internal.javascript.ti.IReferenceAttributes;
20+
import org.eclipse.dltk.javascript.typeinference.IValueReference;
21+
import org.eclipse.dltk.javascript.typeinfo.IModelBuilder.IMethod;
1922
import org.eclipse.dltk.javascript.typeinfo.IRFunctionType;
23+
import org.eclipse.dltk.javascript.typeinfo.IRMember;
2024
import org.eclipse.dltk.javascript.typeinfo.IRMethod;
2125
import org.eclipse.dltk.javascript.typeinfo.IRParameter;
2226
import org.eclipse.dltk.javascript.typeinfo.IRType;
@@ -28,17 +32,31 @@
2832
public class RMethodFunctionWrapper implements IRMethod {
2933

3034
private final IRFunctionType functionType;
35+
private final Visibility visibility;
3136

32-
public RMethodFunctionWrapper(IRFunctionType functionType) {
37+
public RMethodFunctionWrapper(IRFunctionType functionType,
38+
IValueReference reference) {
3339
this.functionType = functionType;
40+
IMethod method = (IMethod) reference.getAttribute(
41+
IReferenceAttributes.METHOD, true);
42+
if (method != null)
43+
visibility = method.getVisibility();
44+
else {
45+
IRMember member = (IRMember) reference.getAttribute(
46+
IReferenceAttributes.ELEMENT, true);
47+
if (member != null)
48+
visibility = member.getVisibility();
49+
else
50+
visibility = Visibility.PUBLIC;
51+
}
3452
}
3553

3654
public boolean isDeprecated() {
3755
return false;
3856
}
3957

4058
public Visibility getVisibility() {
41-
return Visibility.PUBLIC;
59+
return visibility;
4260
}
4361

4462
public String getName() {

plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/validation/TypeInfoValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1082,7 +1082,7 @@ protected void validateCallExpression(FunctionScope scope,
10821082
if (expressionType instanceof IRFunctionType) {
10831083
validateCallExpressionRMethod(reference, arguments,
10841084
methodNode, new RMethodFunctionWrapper(
1085-
(IRFunctionType) expressionType));
1085+
(IRFunctionType) expressionType, reference));
10861086
return;
10871087
} else if (expressionType instanceof IRClassType) {
10881088
final IRTypeDeclaration target = ((IRClassType) expressionType)

plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/javascript/internal/core/RRecordMember.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ public boolean equals(Object obj) {
6969
}
7070

7171
public Visibility getVisibility() {
72+
if (source instanceof IMember)
73+
return ((IMember) source).getVisibility();
7274
return Visibility.PUBLIC;
7375
}
7476

0 commit comments

Comments
 (0)