the brag parser puts symbols in head position, not identifiers,
so ~literal (which compares free-identifier=?) isn't right
and ~datum is better,
so students can define a sig Name {} or whatever
without breaking the expander
after the fix, Tim's program from the other day compiles and runs:
#lang forge
sig Name {}
pred foo {}
// before: error in PredDecl macro, expected QualName or Name identifier
// after: no error
the brag parser puts symbols in head position, not identifiers, so ~literal (which compares free-identifier=?) isn't right and ~datum is better, so students can define a sig Name {} or whatever without breaking the expander
after the fix, Tim's program from the other day compiles and runs: