Number: 658

Date: 11-Apr-84 18':05':27

Submitter: masinter.PA

Source: JonL

Subject: COPYWHEN fails to compile FNS underneath

Assigned To: 

Attn: Masinter

Status: Open

In/By: 

Problem Type: Bug

Impact: Annoying

Difficulty: Moderate

Frequency: Everytime

Priority: Hopefully

System: Programming Environment

Subsystem: File Package

Machine: 

Disk: 

Lisp Version: 11-Apr-84

Source Files: 

Microcode Version: 

Memory Size: 

File Server: 

Server Software Version: 

Disposition: '
["Masinter.pa" "26-Aug-84 16':38':15" Impact':(Serious->Annoying) Machine':(1100->) Microcode% Version': Memory% Size': Workaround':]

Description: Date': 11 Apr 84 17':14 PST'
From': JonL.pa'
Subject': Lisp': DECLARE': COPYWHEN fails to compile FNS underneath'
To': LispSupport.pa'
cc': JonL.pa'
'
Lisp System Date': 11-Apr-84 00':53':49'
Machine': Dolphin (R0D0)'
Microcode version': 24,1'
Memory size': 6000'
Frequency': Always'
Impact': Serious'
'
In a filepkg com like'
   (DECLARE': COPYWHEN (NEQ COMPILEMODE ''D) (FNS \REMINDER.PROCESS))'
the function will be an expr in the compiled file rather than a subr.'
'
A work-around is to flush the DECLARE': and simply put the body of the function underneath some compile-time conditional; but the fool litatom (and definition cell!) are still consumed.'
'
-----'
'
Date': 13 Apr 84 00':48 PST'
From': JonL.pa'
...'
'
AR 658': -- the Type of this AR should be Bug.  The manual clearly implies similar behaviour for the COPY,DOCOPY,COPYWHEN forms, and uses similar language for DONTCOPY.  Also the Impact is indeed Serious for the luser who encounters it, since there are situations where (1) you can''t run the code interpretively, and (2) you can''t load it in the non-WHEN environment.'
'


Workaround: another workaround is to leave it as FNS but conditionally add the function to DONTCOMPILEFNS. Unsatisfactory, I agree.

Test Case: 

Edit-By: Masinter.pa

Edit-Date: 26-Aug-84 16':38':24