[squeak-dev] Review Request: UnassignedVariable.1.cs
Eliot Miranda
eliot.miranda at gmail.com
Fri Nov 25 19:25:24 UTC 2022
On Fri, Nov 25, 2022 at 9:43 AM <christoph.thiede at student.hpi.uni-potsdam.de>
wrote:
> *=============== Summary ===============*
>
> Change Set: UnassignedVariable
> Date: 25 November 2022
> Author: Christoph Thiede
>
> Renames 'undeclared variable' warning to 'unassigned variable' as proposed
> by Eliot (emm) in [1]. Note that for now, I'd stick with the vocabulary
> #hasDef in ParseNodes as it a) aligns with #hasRef and b) has more than a
> few senders. Please report back whether you'd like to see that renamed, too.
>
Since it's my proposal I shouldn't vote. But thankyou very much for the
code!!
>
> [1]
> https://lists.squeakfoundation.org/pipermail/squeak-dev/2022-November/222668.html#:~:text=the%20language%20used%20in%20parser%3E%3E%23queryundefined
>
> *=============== Postscript ===============*
>
> CompilerExceptionsTest removeSelector: #testUndefinedVariable
>
> *=============== Diff ===============*
>
> *CompilerExceptionsTest>>testUnassignedVariable {tests} · ct 11/25/2022
> 18:31*
> + testUnassignedVariable
> +
> + self
> + compiling: 'griffle | goo | ^ goo'
> + shouldRaise: UnassignedVariable
> + andSelect: [(text allRangesOfRegexMatches: '(?<=\^ )goo') first]
> + testing: {
> + true -> [self assertSucceeded].
> + false -> [self assertCanceled] }.
> + self
> + compiling: 'griffle [ | goo | ^ goo ] value'
> + shouldRaise: UnassignedVariable
> + andSelect: [(text allRangesOfRegexMatches: '(?<=\^ )goo') first]
> + testing: {
> + true -> [self assertSucceeded].
> + false -> [self assertCanceled] }.
>
> *Parser>>primaryExpression {expression types} · ct 11/25/2022 18:30
> (changed)*
> primaryExpression
> hereType == #word
> ifTrue:
> [parseNode := self variable.
> (parseNode isUndefTemp
> and: [(#(ifNil: ifNotNil: isNil notNil) includes: here) not
> and: [self interactive]])
> ifTrue:
> - [self queryUndefined].
> + [self queryUnassigned].
> parseNode nowHasRef.
> ^ true].
> hereType == #leftBracket
> ifTrue:
> [self advance.
> self blockExpression.
> ^true].
> hereType == #leftBrace
> ifTrue:
> [self braceExpression.
> ^true].
> hereType == #leftParenthesis
> ifTrue:
> [self advance.
> self expression ifFalse: [^self expected: 'expression'].
> (self match: #rightParenthesis)
> ifFalse: [^self expected: 'right parenthesis'].
> ^true].
> (hereType == #string or: [hereType == #number or: [hereType ==
> #literal or: [hereType == #character]]])
> ifTrue:
> [parseNode := encoder encodeLiteral: self advance.
> ^true].
> (here == #- and: [tokenType == #number and: [1 + hereEnd = mark]])
> ifTrue:
> [self advance.
> parseNode := encoder encodeLiteral: self advance negated.
> ^true].
> ^false
>
> *Parser>>queryUnassigned {error correction} · ct 11/25/2022 18:31*
> + queryUnassigned
> + | varStart varName |
> + varName := parseNode key.
> + varStart := self endOfLastToken + requestorOffset - varName size + 1.
> + self selectFrom: varStart to: varStart + varName size - 1 during: [
> + (UnassignedVariable name: varName) ifFalse: [^ self fail]].
>
> *UnassignedVariable>>openMenuIn: {handling} · ct 11/25/2022 18:31*
> + openMenuIn: aBlock
> +
> + self resume: (Project uiManager
> + confirm: ('{1} appears to be unassigned at this point.\Proceed
> anyway?' translated withCRs asText
> + format: {name asText allBold})
> + orCancel: [false]
> + title: 'Unassigned Variable' translated).
>
> ---
> *Sent from **Squeak Inbox Talk
> <https://github.com/hpi-swa-lab/squeak-inbox-talk>*
> ["UnassignedVariable.1.cs"]
>
--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20221125/fb1fca01/attachment.html>
More information about the Squeak-dev
mailing list
|