[Openmcl-devel] CCL Win32 confuses equally named functions
Wimpie Nortje
wimpie at selectiveshare.com
Mon Jun 8 05:09:19 PDT 2015
Thanks, I will do that.
--
Wimpie Nortje
Strongroom - Host-proof notepad
Selective Share - Encryption-as-a-Service
https://www.selectiveshare.com[1]
On Mon, Jun 8, 2015, at 02:05 PM, Hans Hübner wrote:
> Wimpie,
>
> the problem is caused by:
>
> (defpackage #:director
> (:use #:cl
> #:encryption)
> (:export #:generate-key))
>
> I would recommend not :USEing the #:encryption package and instead qualify all external symbols.
>
> -Hans
>
> 2015-06-08 8:00 GMT-04:00 Wimpie Nortje <wimpie at selectiveshare.com>:
>> __
>> Hans,
>>
>> The example is below. I put all of it in a single file. When I load the file I get
>>
>> ;Compiler warnings for "bug.lisp" :
>> ; In GENERATE-KEY: In the call to GENERATE-KEY with arguments (NEW-USER NEW-PASSWD *LIBRARY-KEYS-DIR*),
>> ; 3 arguments were provided, but at most 2 are accepted
>> ; by the lexically visible definition of GENERATE-KEY
>>
>> In the real project this was hidden by Quicklisp. It also fails on both CCL linux 64b and SBCL linux 64b with the same warning. So this was my mistake. I will have to read up on scoping rules again.
>>
>> Thanks for your time.
>>
>>
>> #|****************************************************************************|#
>> (in-package #:cl-user)
>>
>> (defpackage #:encryption
>> (:use #:cl)
>> (:export #:generate-key))
>>
>> (in-package #:encryption)
>>
>> (defun generate-key (new-user new-passwd home-dir
>> &optional (out *standard-output*))
>> (declare (ignore new-user new-passwd home-dir out))
>> (print "Correct function called."))
>>
>> #|****************************************************************************|#
>> (in-package #:cl-user)
>>
>> (defpackage #:director
>> (:use #:cl
>> #:encryption)
>> (:export #:generate-key))
>>
>> (in-package #:director)
>>
>> (defparameter *library-keys-dir* #P"C:/tmp/keys")
>>
>> (defun generate-key (new-user new-passwd)
>> (encryption:generate-key new-user new-passwd *library-keys-dir*))
>>
>> #|****************************************************************************|#
>> (in-package :cl-user)
>>
>> (defpackage #:main
>> (:use #:cl))
>>
>> (in-package #:main)
>>
>> (director:generate-key "username" "gpg-passphrase")
>>
>>
>>
>>
>>
>> --
>> Wimpie Nortje
>> Strongroom - Host-proof notepad
>> Selective Share - Encryption-as-a-Service
>> https://www.selectiveshare.com[2]
>>
>>
>>
>> On Mon, Jun 8, 2015, at 01:16 PM, Hans Hübner wrote:
>>> Wimpie,
>>>
>>> can you please supply us with a complete, working example of code that demonstrates the problem, in particular including the defpackage forms?
>>>
>>> Thanks,
>>> Hans
>>>
>>> 2015-06-08 7:03 GMT-04:00 Wimpie Nortje <wimpie at selectiveshare.com>:
>>>> Hi everyone,
>>>>
>>>>
I am porting my application from linux 64b to windows 32b. On windows
>>>>
CCL calls the wrong function while it works fine in linux.
>>>>
>>>>
In principle the code looks like this
>>>>
>>>>
(in-package :b)
>>>>
(defun fn (par1 par2 &optional (out *standard-output*)) [3]
>>>>
(do-stuff))
>>>>
>>>>
(in-package :a)
>>>>
(defun fn (par1 par2) [2]
>>>>
(b:fn par1 par2 *some-global*)) [1]
>>>>
>>>>
(in-package :main)
>>>>
(a:fn Val1 Val2)
>>>>
>>>>
>>>>
When I run this I get the following error:
>>>>
Too many arguments in call to #<Compiled-function B:FN #xE0A390E>:
>>>>
3 arguments provided, at most 2 accepted.
>>>>
[Condition of type CCL::TOO-MANY-ARGUMENTS]
>>>>
>>>>
It seems that the function call at [1] is calling the definition at [2]
>>>>
instead of the one at [3]. Also, when I do M-. (slime-edit-definition)
>>>>
at [1] it jumps to [2].
>>>>
>>>>
If I rename b:fn to something else without any other code changes, it
>>>>
works.
>>>>
>>>>
This code works unmodified on linux 64b. I have not yet tried on windows
>>>>
64b
>>>>
>>>>
Is this a bug or am I doing something wrong?
>>>>
>>>>
I am running CCL Version 1.10-r16196 (WindowsX8632) on Windows XP SP3.
>>>>
>>>>
>>>>
--
>>>>
Wimpie Nortje
>>>>
Strongroom - Host-proof notepad
>>>>
Selective Share - Encryption-as-a-Service
>>>> https://www.selectiveshare.com
>>>>
_______________________________________________
>>>>
Openmcl-devel mailing list
>>>> Openmcl-devel at clozure.com
>>>> https://lists.clozure.com/mailman/listinfo/openmcl-devel
>>>
>>
>
Links:
1. https://www.selectiveshare.com/?pk_campaign=email-sig
2. https://www.selectiveshare.com/?pk_campaign=email-sig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20150608/fd5ea8b5/attachment.htm>
More information about the Openmcl-devel
mailing list