Stub support for varargs
This commit is contained in:
@@ -353,7 +353,7 @@ public interface Errors {
|
|||||||
|
|
||||||
ParameterizedDiagnosticFactory1<Collection<? extends CallableDescriptor>> OVERLOAD_RESOLUTION_AMBIGUITY = new AmbiguousDescriptorDiagnosticFactory("Overload resolution ambiguity: {0}");
|
ParameterizedDiagnosticFactory1<Collection<? extends CallableDescriptor>> OVERLOAD_RESOLUTION_AMBIGUITY = new AmbiguousDescriptorDiagnosticFactory("Overload resolution ambiguity: {0}");
|
||||||
ParameterizedDiagnosticFactory1<Collection<? extends CallableDescriptor>> NONE_APPLICABLE = new AmbiguousDescriptorDiagnosticFactory("None of the following functions can be called with the arguments supplied: {0}");
|
ParameterizedDiagnosticFactory1<Collection<? extends CallableDescriptor>> NONE_APPLICABLE = new AmbiguousDescriptorDiagnosticFactory("None of the following functions can be called with the arguments supplied: {0}");
|
||||||
ParameterizedDiagnosticFactory1<ValueParameterDescriptor> NO_VALUE_FOR_PARAMETER = ParameterizedDiagnosticFactory1.create(ERROR, "No value passed for parameter {0}");
|
ParameterizedDiagnosticFactory1<ValueParameterDescriptor> NO_VALUE_FOR_PARAMETER = ParameterizedDiagnosticFactory1.create(ERROR, "No value passed for parameter {0}", DescriptorRenderer.TEXT);
|
||||||
ParameterizedDiagnosticFactory1<JetType> MISSING_RECEIVER = ParameterizedDiagnosticFactory1.create(ERROR, "A receiver of type {0} is required");
|
ParameterizedDiagnosticFactory1<JetType> MISSING_RECEIVER = ParameterizedDiagnosticFactory1.create(ERROR, "A receiver of type {0} is required");
|
||||||
SimpleDiagnosticFactory NO_RECEIVER_ADMITTED = SimpleDiagnosticFactory.create(ERROR, "No receiver can be passed to this function or property");
|
SimpleDiagnosticFactory NO_RECEIVER_ADMITTED = SimpleDiagnosticFactory.create(ERROR, "No receiver can be passed to this function or property");
|
||||||
|
|
||||||
|
|||||||
@@ -258,9 +258,8 @@ public class ClassDescriptorResolver {
|
|||||||
valueParameter.isMutable() ? type : null,
|
valueParameter.isMutable() ? type : null,
|
||||||
type,
|
type,
|
||||||
valueParameter.getDefaultValue() != null,
|
valueParameter.getDefaultValue() != null,
|
||||||
false // TODO : varargs
|
valueParameter.hasModifier(JetTokens.VARARG_KEYWORD)
|
||||||
);
|
);
|
||||||
// TODO : Default values???
|
|
||||||
|
|
||||||
trace.record(BindingContext.VALUE_PARAMETER, valueParameter, valueParameterDescriptor);
|
trace.record(BindingContext.VALUE_PARAMETER, valueParameter, valueParameterDescriptor);
|
||||||
return valueParameterDescriptor;
|
return valueParameterDescriptor;
|
||||||
|
|||||||
+1
-1
@@ -148,7 +148,7 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET;
|
|||||||
|
|
||||||
for (ValueParameterDescriptor valueParameter : valueParameters) {
|
for (ValueParameterDescriptor valueParameter : valueParameters) {
|
||||||
if (!usedParameters.contains(valueParameter)) {
|
if (!usedParameters.contains(valueParameter)) {
|
||||||
if (!valueParameter.hasDefaultValue()) {
|
if (!valueParameter.hasDefaultValue() && !valueParameter.isVararg()) {
|
||||||
// tracing.reportWrongValueArguments(temporaryTrace, "No value passed for parameter " + valueParameter.getName());
|
// tracing.reportWrongValueArguments(temporaryTrace, "No value passed for parameter " + valueParameter.getName());
|
||||||
tracing.noValueForParameter(temporaryTrace, valueParameter);
|
tracing.noValueForParameter(temporaryTrace, valueParameter);
|
||||||
error = true;
|
error = true;
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ public interface JetTokens {
|
|||||||
JetKeywordToken PROTECTED_KEYWORD = JetKeywordToken.softKeyword("protected");
|
JetKeywordToken PROTECTED_KEYWORD = JetKeywordToken.softKeyword("protected");
|
||||||
JetKeywordToken CATCH_KEYWORD = JetKeywordToken.softKeyword("catch");
|
JetKeywordToken CATCH_KEYWORD = JetKeywordToken.softKeyword("catch");
|
||||||
JetKeywordToken OUT_KEYWORD = JetKeywordToken.softKeyword("out");
|
JetKeywordToken OUT_KEYWORD = JetKeywordToken.softKeyword("out");
|
||||||
|
JetKeywordToken VARARG_KEYWORD = JetKeywordToken.softKeyword("vararg");
|
||||||
|
|
||||||
JetKeywordToken FINALLY_KEYWORD = JetKeywordToken.softKeyword("finally");
|
JetKeywordToken FINALLY_KEYWORD = JetKeywordToken.softKeyword("finally");
|
||||||
JetKeywordToken FINAL_KEYWORD = JetKeywordToken.softKeyword("final");
|
JetKeywordToken FINAL_KEYWORD = JetKeywordToken.softKeyword("final");
|
||||||
@@ -154,12 +155,12 @@ public interface JetTokens {
|
|||||||
TokenSet SOFT_KEYWORDS = TokenSet.create(IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD,
|
TokenSet SOFT_KEYWORDS = TokenSet.create(IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD,
|
||||||
SET_KEYWORD, ABSTRACT_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ANNOTATION_KEYWORD,
|
SET_KEYWORD, ABSTRACT_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ANNOTATION_KEYWORD,
|
||||||
OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD,
|
OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD,
|
||||||
CATCH_KEYWORD, FINALLY_KEYWORD, REF_KEYWORD, OUT_KEYWORD, FINAL_KEYWORD
|
CATCH_KEYWORD, FINALLY_KEYWORD, REF_KEYWORD, OUT_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD
|
||||||
);
|
);
|
||||||
|
|
||||||
TokenSet MODIFIER_KEYWORDS = TokenSet.create(ABSTRACT_KEYWORD, ENUM_KEYWORD,
|
TokenSet MODIFIER_KEYWORDS = TokenSet.create(ABSTRACT_KEYWORD, ENUM_KEYWORD,
|
||||||
OPEN_KEYWORD, ANNOTATION_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD,
|
OPEN_KEYWORD, ANNOTATION_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD,
|
||||||
PROTECTED_KEYWORD, REF_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD
|
PROTECTED_KEYWORD, REF_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD
|
||||||
);
|
);
|
||||||
TokenSet WHITE_SPACE_OR_COMMENT_BIT_SET = TokenSet.create(WHITE_SPACE, BLOCK_COMMENT, EOL_COMMENT, DOC_COMMENT);
|
TokenSet WHITE_SPACE_OR_COMMENT_BIT_SET = TokenSet.create(WHITE_SPACE, BLOCK_COMMENT, EOL_COMMENT, DOC_COMMENT);
|
||||||
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);
|
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);
|
||||||
|
|||||||
@@ -133,6 +133,9 @@ public class DescriptorRenderer implements Renderer {
|
|||||||
@Override
|
@Override
|
||||||
public Void visitValueParameterDescriptor(ValueParameterDescriptor descriptor, StringBuilder builder) {
|
public Void visitValueParameterDescriptor(ValueParameterDescriptor descriptor, StringBuilder builder) {
|
||||||
builder.append(renderKeyword("value-parameter")).append(" ");
|
builder.append(renderKeyword("value-parameter")).append(" ");
|
||||||
|
if (descriptor.isVararg()) {
|
||||||
|
builder.append(renderKeyword("vararg")).append(" ");
|
||||||
|
}
|
||||||
return super.visitValueParameterDescriptor(descriptor, builder);
|
return super.visitValueParameterDescriptor(descriptor, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
fun foo(a : Int = 1, b : String = "abc") {
|
fun foo(a : Int = 1, b : String = "abc") {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun bar(x : Int = "", y : Int = 1, z : String) {
|
||||||
|
}
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
foo()
|
foo()
|
||||||
foo(2)
|
foo(2)
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
fun v(x : Int, y : String, vararg f : Long) {}
|
||||||
|
fun v1(vararg f : fun (Int) : Unit) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
v(1, "")
|
||||||
|
v(1, "", 1)
|
||||||
|
v(1, "", 1, 1, 1)
|
||||||
|
v(1, "", 1, 1, 1)
|
||||||
|
|
||||||
|
v1()
|
||||||
|
v1({})
|
||||||
|
v1({}, {})
|
||||||
|
v1({}, <!ERROR_COMPILE_TIME_VALUE!>1<!>, {})
|
||||||
|
v1({}, {}, {it})
|
||||||
|
v1({}) <!VARARG_OUTSIDE_PARENTHESES!>{}<!>
|
||||||
|
v1 <!VARARG_OUTSIDE_PARENTHESES!>{}<!>
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user