www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - utils.toBulkString is not accesible from utils

reply Andre <andre s-e-a-p.de> writes:
Hi,

for following coding there is an error during compilation:

   module utils;

   package string toBulkString(string s)
   {
	  import std.string: format;
	  return "$%s\r\n%s\r\n".format(s.length, s);
   }

   unittest
   {
	  string actual = "foobar".toBulkString();
	  //...
   }

 source\utils.d(11,39): Error: function utils.toBulkString is 
 not accessible from module utils
The error disappears if I change the visibility attribute from package to private. This seems to be a bug, is it? Version: DMD v2.069.0-b2 Kind regards André
Dec 01 2015
next sibling parent reply Marc =?UTF-8?B?U2Now7x0eg==?= <schuetzm gmx.net> writes:
On Wednesday, 2 December 2015 at 06:33:36 UTC, Andre wrote:
 Hi,

 for following coding there is an error during compilation:

   module utils;

   package string toBulkString(string s)
   {
 	  import std.string: format;
 	  return "$%s\r\n%s\r\n".format(s.length, s);
   }

   unittest
   {
 	  string actual = "foobar".toBulkString();
 	  //...
   }

 source\utils.d(11,39): Error: function utils.toBulkString is 
 not accessible from module utils
The error disappears if I change the visibility attribute from package to private. This seems to be a bug, is it? Version: DMD v2.069.0-b2
I think so, yes. But according to digger, the current behaviour goes back to at least DMD 2.052. Please file a bug report anyway.
Dec 02 2015
parent Andre <andre s-e-a-p.de> writes:
On Wednesday, 2 December 2015 at 12:37:29 UTC, Marc Schütz wrote:

 I think so, yes. But according to digger, the current behaviour 
 goes back to at least DMD 2.052. Please file a bug report 
 anyway.
Bug report filed https://issues.dlang.org/show_bug.cgi?id=15395
Dec 02 2015
prev sibling parent Jonathan M Davis via Digitalmars-d-learn writes:
On Wednesday, December 02, 2015 06:33:32 Andre via Digitalmars-d-learn wrote:
 Hi,

 for following coding there is an error during compilation:

    module utils;

    package string toBulkString(string s)
    {
     import std.string: format;
     return "$%s\r\n%s\r\n".format(s.length, s);
    }

    unittest
    {
     string actual = "foobar".toBulkString();
     //...
    }

 source\utils.d(11,39): Error: function utils.toBulkString is
 not accessible from module utils
The error disappears if I change the visibility attribute from package to private. This seems to be a bug, is it? Version: DMD v2.069.0-b2 Kind regards André
I believe that the problem is that there is no package for toBulkString to be in. utils is a top-level module and is not in a package. Now, arguably it should be an error to use the package attribute in such a module rather than giving an error when you try and use it, but I'm pretty sure that that's the source of your problem. If utils were actually in a package, then it should work. - Jonathan M Davis
Dec 03 2015