www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 3642] New: Poor error message when using shared: function ___ not callable with argument types ___

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3642

           Summary: Poor error message when using shared: function ___ not
                    callable with argument types ___
           Product: D
           Version: 2.036
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: jason.james.house gmail.com


--- Comment #0 from Jason House <jason.james.house gmail.com> 2009-12-23
17:41:40 PST ---
Sample code

==================
struct foo{
  void unsharedfunc(){}
    void sharedfunc() shared {}
}
void main(){
    foo unsharedvar;
    shared(foo) sharedvar;
    unsharedvar.sharedfunc();
    sharedvar.unsharedfunc();
}
==================

Output with dmd 2.037
(Bug report lists dmd 2.036 because 2.037 was not an option at the time)

$ dmd test.d
test.d(8): Error: function test.foo.sharedfunc () shared is not callable using
argument types ()
test.d(9): Error: function test.foo.unsharedfunc () is not callable using
argument types () shared


Here's the kind of error message I would expect to see
test.d(8): Error: Only shared types can call shared functions
test.d(9): Error: Shared types can only call shared functions

Maybe the function or variable name could be worked into the message, but
that's the essence of what should be displayed.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 23 2009
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3642


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla digitalmars.com


--- Comment #1 from Walter Bright <bugzilla digitalmars.com> 2009-12-25
13:22:46 PST ---
The function name is in the message already.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 25 2009
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3642



--- Comment #2 from Jason House <jason.james.house gmail.com> 2009-12-25
14:29:23 PST ---
(In reply to comment #1)
 The function name is in the message already.

The function name isn't particularly important. The error message isn't particularly clear about the misuse of shared. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 25 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3642


Jason House <jason.james.house gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Poor error message when     |Poor error message:
                   |using shared: function ___  |function ___ not callable
                   |not callable with argument  |with argument types ___
                   |types ___                   |


--- Comment #3 from Jason House <jason.james.house gmail.com> 2009-12-28
21:02:22 PST ---
I just came across another example where this is poor.  No test case this time
;)

Here's the error message:
hb/search/factory.d(58): Error: function libego.adapter.move.compressedHash ()
is not callable using argument types ()

Any guesses what is wrong?  Calling a no argument function is not callable
using no arguments?  In this particular case, the instance of
libego.adapter.move is immutable and the compressedHash function is neither
marked as const nor immuatable.  The error message really should be better.

Example alternate error message:
hb/search/factory.d(58): Error: Can't call mutating function on an immutable
object.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 28 2009