aboutsummaryrefslogtreecommitdiff
path: root/unit-tests/function
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-07-14 18:30:28 +0200
committerKaren Arutyunov <karen@codesynthesis.com>2018-07-16 16:49:58 +0300
commit55e858010b9ba53c27475d9ce6f864a84d28fa81 (patch)
treeddbbcc909abc23310117afee2225f6197f475f18 /unit-tests/function
parent3f2b42c3c01ecfee6a63653172d437aa0e915b68 (diff)
Resolve function overload via the argument reversal to untyped
Diffstat (limited to 'unit-tests/function')
-rw-r--r--unit-tests/function/call.test19
-rw-r--r--unit-tests/function/driver.cxx2
2 files changed, 20 insertions, 1 deletions
diff --git a/unit-tests/function/call.test b/unit-tests/function/call.test
index 127af24..3dd9a85 100644
--- a/unit-tests/function/call.test
+++ b/unit-tests/function/call.test
@@ -74,6 +74,23 @@ buildfile:1:2: error: ambiguous call to ambig(<untyped>)
/))
EOE
+: unmatched
+:
+$* <'$ambig(abc, def)' 2>>~/EOE/ != 0
+buildfile:1:2: error: unmatched call to ambig(<untyped>, <untyped>)
+/((
+ info: candidate: ambig(<untyped> [, uint64]), qualified name dummy.ambig
+ info: candidate: ambig(<untyped> [, string]), qualified name dummy.ambig
+/)|(
+ info: candidate: ambig(<untyped> [, string]), qualified name dummy.ambig
+ info: candidate: ambig(<untyped> [, uint64]), qualified name dummy.ambig
+/))
+EOE
+
+: reverse
+:
+$* <'print $reverse([string] abc)' >'abc'
+
: optional-absent
:
$* <'print $optional()' >'true'
@@ -118,7 +135,7 @@ EOE
: print-fovl
:
$* <'$ambig([bool] true)' 2>>~/EOE/ != 0
-buildfile:1:2: error: unmatched call to ambig(bool)
+buildfile:1:2: error: ambiguous call to ambig(bool)
/((
info: candidate: ambig(<untyped> [, uint64]), qualified name dummy.ambig
info: candidate: ambig(<untyped> [, string]), qualified name dummy.ambig
diff --git a/unit-tests/function/driver.cxx b/unit-tests/function/driver.cxx
index e97596a..393b456 100644
--- a/unit-tests/function/driver.cxx
+++ b/unit-tests/function/driver.cxx
@@ -54,6 +54,8 @@ namespace build2
f["ambig"] = [](names a, optional<string>) {return a;};
f["ambig"] = [](names a, optional<uint64_t>) {return a;};
+ f["reverse"] = [](names a) {return a;};
+
f["scoped"] = [](const scope*, names a) {return a;};
f["scoped_void"] = [](const scope*, names) {};
f["scoped"] = &scoped;