We're updating the issue view to help you get more done. 

LispReader allows no-ops macros to sneak in certain other forms (namespaced maps, tagged literals and anonymous arguments)

Description

No-op macros are line comments (starting with #! or ;), #_, reader conditional (splicing or not) with no matching feature.
Furthermore once a no-op macro has been read regular whitespace are allowed anew.

Examples:
Namespaced map #foo{:bar :baz}

1 2 3 4 5 #:#_()#! bang bang #?(:whatever 42); now a blank line #?@(:default ())foo {:bar :baz}

Tagged literal #inst "2017-04-24T09:11:29.878-00:00"

1 2 3 4 ##_()#! bang bang #?(:whatever 42); now a blank line inst "2017-04-24T09:11:29.878-00:00"

Anonymous argument: #(do %1)

1 2 3 4 #(do %#_()#! bang bang #?(:whatever 42); now a blank line #?@(:default ())1)

In addition anonymous arguments implementation is leaky (any %n is accepted as long as n is (-2.0 -1.0] (mapping to %&) and [1.0 Infinity) and any representation can be used (bigdec or bigint or float or integers in any basis).

1 #(list %#_(first arg)1.00000001 %#_(secong arg)2r10 %#_(rest arg)-1.5)

Environment

None

Status

Assignee

Unassigned

Reporter

Christophe Grand

Labels

Approval

Triaged

Patch

Code

Affects versions

Release 1.9

Priority

Minor