The Inbox: Compiler-nice.187.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Compiler-nice.187.mcz

commits-2
A new version of Compiler was added to project The Inbox:
http://source.squeak.org/inbox/Compiler-nice.187.mcz

==================== Summary ====================

Name: Compiler-nice.187
Author: nice
Time: 4 February 2011, 10:17:14.337 pm
UUID: 71dd94ed-3fc7-49e0-b180-fb04be82bc29
Ancestors: Compiler-nice.184

In case nil is the doItReceiver of an interactive evaluation, avoid proposing a menu that would add an inst var to UndefinedObject.

=============== Diff against Compiler-nice.184 ===============

Item was added:
+ ----- Method: Parser>>canDeclareInstanceVariable (in category 'error correction') -----
+ canDeclareInstanceVariable
+ ^encoder classEncoding ~~ UndefinedObject!

Item was changed:
  ----- Method: UndeclaredVariable>>openMenuIn: (in category 'as yet unclassified') -----
  openMenuIn: aBlock
  | alternatives labels actions lines caption choice |
  alternatives := parser possibleVariablesFor: name.
  labels := OrderedCollection new.
  actions := OrderedCollection new.
  lines := OrderedCollection new.
  name first isLowercase
  ifTrue:
  [labels add: 'declare method temp'.
  actions add: [parser declareTemp: name at: #method].
  labels add: 'declare block-local temp'.
  actions add: [parser declareTemp: name at: #block].
+ parser canDeclareClassVariable
+ ifTrue:
+ [labels add: 'declare instance'.
+ actions add: [parser declareInstVar: name]]]
- labels add: 'declare instance'.
- actions add: [parser declareInstVar: name]]
  ifFalse:
  [labels add: 'define new class'.
  actions add: [parser defineClass: name].
  labels add: 'declare global'.
  actions add: [parser declareGlobal: name].
  parser canDeclareClassVariable
  ifTrue:
  [labels add: 'declare class variable'.
  actions add: [parser declareClassVar: name]]].
  lines add: labels size.
  alternatives do:
  [:each |
  labels add: each.
  actions add: [parser substituteVariable: each atInterval: interval]].
  lines add: labels size.
  labels add: 'cancel'.
  caption := 'Unknown variable: ' , name , ' please correct, or cancel:'.
  choice := aBlock value: labels value: lines value: caption.
  self resume: (actions at: choice ifAbsent: [nil])!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Compiler-nice.187.mcz

Nicolas Cellier
2011/2/4  <[hidden email]>:

> A new version of Compiler was added to project The Inbox:
> http://source.squeak.org/inbox/Compiler-nice.187.mcz
>
> ==================== Summary ====================
>
> Name: Compiler-nice.187
> Author: nice
> Time: 4 February 2011, 10:17:14.337 pm
> UUID: 71dd94ed-3fc7-49e0-b180-fb04be82bc29
> Ancestors: Compiler-nice.184
>
> In case nil is the doItReceiver of an interactive evaluation, avoid proposing a menu that would add an inst var to UndefinedObject.
>
> =============== Diff against Compiler-nice.184 ===============
>
> Item was added:
> + ----- Method: Parser>>canDeclareInstanceVariable (in category 'error correction') -----
> + canDeclareInstanceVariable
> +       ^encoder classEncoding ~~ UndefinedObject!
>
> Item was changed:
>  ----- Method: UndeclaredVariable>>openMenuIn: (in category 'as yet unclassified') -----
>  openMenuIn: aBlock
>        | alternatives labels actions lines caption choice |
>        alternatives := parser possibleVariablesFor: name.
>        labels := OrderedCollection new.
>        actions := OrderedCollection new.
>        lines := OrderedCollection new.
>        name first isLowercase
>                ifTrue:
>                        [labels add: 'declare method temp'.
>                        actions add: [parser declareTemp: name at: #method].
>                        labels add: 'declare block-local temp'.
>                        actions add: [parser declareTemp: name at: #block].
> +                       parser canDeclareClassVariable
> +                               ifTrue:
> +                                       [labels add: 'declare instance'.
> +                                       actions add: [parser declareInstVar: name]]]

Oops, it passed my tests, but it's wrong, my intention was
canDeclareInstanceVariable.
These diffs are great !

Nicolas


> -                       labels add: 'declare instance'.
> -                       actions add: [parser declareInstVar: name]]
>                ifFalse:
>                        [labels add: 'define new class'.
>                        actions add: [parser defineClass: name].
>                        labels add: 'declare global'.
>                        actions add: [parser declareGlobal: name].
>                        parser canDeclareClassVariable
>                                ifTrue:
>                                        [labels add: 'declare class variable'.
>                                        actions add: [parser declareClassVar: name]]].
>        lines add: labels size.
>        alternatives do:
>                [:each |
>                labels add: each.
>                actions add: [parser substituteVariable: each atInterval: interval]].
>        lines add: labels size.
>        labels add: 'cancel'.
>        caption := 'Unknown variable: ' , name , ' please correct, or cancel:'.
>        choice := aBlock value: labels value: lines value: caption.
>        self resume: (actions at: choice ifAbsent: [nil])!
>
>
>