Project

General

Profile

Actions

Bug #21027

closed

`not()` receiver should be `nil`

Added by kddnewton (Kevin Newton) 3 months ago. Updated 13 days ago.

Status:
Closed
Assignee:
Target version:
-
[ruby-core:120613]

Description

not has a 0-argument mode, and the behavior differs from that of parse.y:

% RBENV_VERSION=3.4.0 ruby --parser=parse.y -e 'p not()'
true
% RBENV_VERSION=3.4.0 ruby --parser=prism -e 'p not()'
false

This is because Prism interprets not() as self.! where parse.y interprets it as nil.!.

Actions #1

Updated by kddnewton (Kevin Newton) 3 months ago

  • Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED
Actions #2

Updated by kddnewton (Kevin Newton) 3 months ago

  • Status changed from Open to Closed

Applied in changeset git|117d6e145a0270ab8fc9134403519ef13b9ebb24.


[ruby/prism] Fix not receiver

not foo should be !foo
not() should be !nil

Fixes [Bug #21027]

https://github.com/ruby/prism/commit/871ed4b462

Updated by k0kubun (Takashi Kokubun) 2 months ago

  • Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED to 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: DONE
Actions #4

Updated by nagachika (Tomoyuki Chikanaga) 20 days ago

  • Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: DONE to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: REQUIRED, 3.4: DONE

Updated by nagachika (Tomoyuki Chikanaga) 13 days ago

  • Backport changed from 3.1: DONTNEED, 3.2: DONTNEED, 3.3: REQUIRED, 3.4: DONE to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONE, 3.4: DONE

Updated by nagachika (Tomoyuki Chikanaga) 13 days ago

Fixed prism tests with updated snapshots at 5640fea8aada2380145375a7f9eac2b979fe1258.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0