summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-09-13 14:07:28 +0200
committerAndreas Rumpf <rumpf_a@web.de>2016-09-13 16:33:43 +0200
commit3a5edd2c6c61ce06cd780de2b53d6839fac71d7c (patch)
tree2c0b36d0be92252d92301c8105fb7b9805ff894e
parent03768e7da08c5f37a56b738c61c33b6ed7121a05 (diff)
downloadNim-3a5edd2c6c61ce06cd780de2b53d6839fac71d7c.tar.gz
fixes #4671
-rw-r--r--compiler/semcall.nim1
-rw-r--r--tests/overload/tselfderef.nim17
2 files changed, 18 insertions, 0 deletions
diff --git a/compiler/semcall.nim b/compiler/semcall.nim
index 5f7e5084b..3037a6ecc 100644
--- a/compiler/semcall.nim
+++ b/compiler/semcall.nim
@@ -215,6 +215,7 @@ proc resolveOverloads(c: PContext, n, orig: PNode,
       if result.state != csMatch:
         n.sons.delete(1)
         orig.sons.delete(1)
+        excl n.flags, nfExprCall
       else: return
 
     if nfDotField in n.flags:
diff --git a/tests/overload/tselfderef.nim b/tests/overload/tselfderef.nim
new file mode 100644
index 000000000..708e4043b
--- /dev/null
+++ b/tests/overload/tselfderef.nim
@@ -0,0 +1,17 @@
+# bug #4671
+{.experimental.}
+{.this: self.}
+
+type
+  SomeObj = object
+    f: int
+
+proc f(num: int) =
+  discard
+
+var intptr: ptr int
+intptr.f() # compiles fine
+
+proc doSomething(self: var SomeObj) =
+  var pint: ptr int
+  pint.f() # Error: expression '.(pint, "f")' cannot be called