Skip to content

Vague thoughts about handling the various Syntax:: extension modules #7

Description

@leonerd

There's many CPAN modules (most of them mine ;) ) that add extra syntax, which currently hugely confuses the parser. A few of these have even been ported to becoming core syntax, enabled with various use feature flags.

It may be worth looking into what extent some features can be made optional somehow. Ideally it'd be great if we could handle all of:

# Future::AsyncAwait
async sub f { await g() }
# Syntax::Keyword::Dynamically
dynamically $x = 123;
# Syntax::Keyword::Try or Feature::Compat::Try or use feature 'try';
try { A() }
catch($e) { B() }
finally { C() }
# Syntax::Keyword::Defer or Feature::Compat::Defer or use feature 'defer';
defer { D() }
# Object::Pad
class Thing v1.23 :isa(OtherThing) {
  has $var :reader :writer :param;
  method m($x) { }
}
# List::Keywords
any { $x > 10 } @numbers;
# Syntax::Keyword::Match
match($var : eq) {
  case("one") { ... }
  case("two") { ... }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions