[squeak-dev] Should UndeclaredVariableWarning be a Notification?
christoph.thiede at student.hpi.uni-potsdam.de
christoph.thiede at student.hpi.uni-potsdam.de
Sun Jan 30 20:56:59 UTC 2022
Alright, please take a short look at the attached changeset. :-)
Note: In the *long* term, we probably should unify this exception with UndeclaredVariable, which is a subclass of ParserNotification. But after the release. :-)
Provided no objections, I will merge this in a few days ...
Best,
Christoph
=============== Diff ===============
Encoder>>undeclared: {encoding} · ct 1/30/2022 21:40 (changed)
undeclared: name
| sym |
(requestor notNil and: [requestor interactive]) ifTrue:
[ requestor requestor == #error: ifTrue: [ requestor error: 'Undeclared' ].
^ self notify: 'Undeclared' ].
"Allow knowlegeable clients to squash the undeclared warning if they want (e.g.
Diffing pretty printers that are simply formatting text). As this breaks
compilation it should only be used by clients that want to discard the result
of the compilation. To squash the warning use e.g.
[Compiler format: code in: class notifying: nil decorated: false]
- on: UndeclaredVariableWarning
+ on: UndeclaredVariableNotification
do: [:ex| ex resume: false]"
sym := name asSymbol.
- ^ (UndeclaredVariableWarning new
+ ^ (UndeclaredVariableNotification new
name: name
selector: selector
class: cue getClass) signal
ifTrue:
[ | undeclared |
undeclared := cue environment undeclared.
[ undeclared
at: sym
put: nil ]
on: AttemptToWriteReadOnlyGlobal
do: [ : noti | noti resume: true ].
self
global: (undeclared associationAt: sym)
name: sym ]
ifFalse:
[ self
global: (Association key: sym)
name: sym ]
UndeclaredVariableNotification
+ Notification subclass: #UndeclaredVariableNotification
+ instanceVariableNames: 'name selector class'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Compiler-Support'
+
+ UndeclaredVariableNotification class
+ instanceVariableNames: ''
+
+ ""
UndeclaredVariableNotification
+ Notification subclass: #UndeclaredVariableNotification
+ instanceVariableNames: 'name selector class'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Compiler-Support'
+
+ UndeclaredVariableNotification class
+ instanceVariableNames: ''
+
+ ""
UndeclaredVariableWarning (changed)
- Warning subclass: #UndeclaredVariableWarning
- instanceVariableNames: 'name selector class'
+ UndeclaredVariableNotification subclass: #UndeclaredVariableWarning
+ instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
- category: 'Compiler-Support'
+ category: '60Deprecated-Compiler-Support'
UndeclaredVariableWarning class
instanceVariableNames: ''
""
UndeclaredVariableWarning class>>handles: {exceptionSelector} · ct 1/30/2022 21:46
+ handles: exception
+
+ self deprecated: 'ct: Use UndeclaredVariableNotification instead'.
+
+ ^ super handles: exception
UndeclaredVariableWarning>>initialize {initialize-release} · ct 1/30/2022 21:46
+ initialize
+
+ self deprecated: 'ct: Use UndeclaredVariableNotification instead'.
+
+ ^ super initialize
---
Sent from Squeak Inbox Talk
On 2022-01-30T00:44:33+01:00, christoph.thiede at student.hpi.uni-potsdam.de wrote:
> Thank you for the feedback! Now I'm wondering whether we should also rename it when making it a simple notification. An exception that ends in Warning but does not inherit from Warning might be very confusing. On other hand, compatibility matters ... What do you think? :-)
>
> Best,
> Christoph
>
> ---
> Sent from Squeak Inbox Talk
>
> On 2022-01-20T09:22:08+01:00, marcel.taeumel at hpi.de wrote:
>
> > Hi Christoph --
> >
> > Looking at?UndeclaredVariableWarning >> #defaultAction, that warning should actually be a simple notification (that also writes to the Transcript).
> >
> > Best,
> > Marcel
> > Am 20.01.2022 01:31:50 schrieb christoph.thiede at student.hpi.uni-potsdam.de <christoph.thiede at student.hpi.uni-potsdam.de>:
> > Hi all,
> >
> > since SUnit-ct.129 (treat warnings in tests as test error), we have plenty failing compiler tests. I have also noticed similar effects in some third-party packages because no one would have assumed that a simple compilation request that has no visible side effect to the user (except for a Transcript send, but who is having a transcript open all the time? me not!) could be raising a Warning. UndeclaredVariableWarning is an untypical subclass of Warning because in its default action, it does not do anything interruptive.
> >
> > So my question is: Do you assure that UndeclaredVariableWarning should be Warning? In this case I will move on and handle this exception in all affected tests.
> >
> > Best,
> > Christoph
> >
> > ---
> > Sent from Squeak Inbox Talk [https://github.com/hpi-swa-lab/squeak-inbox-talk]
> > -------------- next part --------------
> > An HTML attachment was scrubbed...
> > URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220120/4a4ee785/attachment.html>
> >
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220130/ada64a21/attachment.html>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220130/ef6643c9/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: UndeclaredVariableNotification.1.cs
Type: application/octet-stream
Size: 2457 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220130/ef6643c9/attachment-0001.obj>
More information about the Squeak-dev
mailing list
|