Project

General

Profile

Actions

Misc #13283

closed

Disable `&' interpreted as argument prefix warning when passing symbol to Enumerable#map

Added by mojavelinux (Dan Allen) about 7 years ago. Updated about 7 years ago.

Status:
Closed
Assignee:
-
[ruby-core:79926]

Description

A common idiom in Ruby is to pass a symbol reference to Enumerable#map, which in turn invokes the corresponding method on each entry.

Case in point:

%(a b c).map &:upcase

Yet, when warnings are enabled, this line produces the following warning:

warning: `&' interpreted as argument prefix

Perhaps we can all agree that's what this statement should do, and in fact Ruby does it. So there's really no reason for this warning. The alternative, a bitwise operation on a symbol, makes little sense. That's especially when the bitwise operator is directly adjacent to the symbol.

The workaround to squelch the warning is to add parentheses:

%(a b c).map(&:upcase)

However, it's one of the few cases in Ruby where parentheses are mandatory (for an isolated statement). For those of us who prefer to drop parentheses for code style, this is an irritation. It's also one of the most common warnings I've seen Ruby report when warnings are enabled, so it's also just noisy.

Can this warning be removed?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0