We've talked about this on TC39. We'll probably do something, but exactly what is hard to say at this point. Designing future-proof pragma syntax requires a bit of gazing into the crystal ball...
Dave On Apr 17, 2011, at 2:13 AM, Claus Reinke wrote: > Pragmas (ignorable source hints to an implementation) have > become fairly wide-spread in Javascript, but their look and > usage differs widely, and with an increasing number of tools > defining their own pragma conventions, it is only a matter of > time before they start stepping on each others toes. > > This seems to call for some guidelines from the language > standard (not to define individual pragmas, but to define a > framework and namespacing for using and defining > pragmas). There is a strawman for this > > http://wiki.ecmascript.org/doku.php?id=strawman:pragmas > > but it doesn't seem to be part of Harmony yet, and it doesn't > mention that pragmas are alread used in the wild, not just in > ES5. > > Some examples: > > 1. ES5 "use strict" > ignoreable expression statement > > 2. IE conditional compilation > @-prefixed, suggested in, but not limited to comments > > 3. jslint options (partial overlaps with forks like jshint) > in-comment > /*jslint > /*members > .. > > 4. google for javascript pragma for more examples > (sometimes pragmas for embedded javascript in > applications, sometimes options in comments for > JS processors) > > Apart from standardizing pragma syntax for options, it > would be nice to annotate code with language extensions > in use (rather than language versions): this is similar to > feature- versus browser-version-testing. > > There are also some standard pragmas I would like to > see, to warn me when I am using features I do not like > to use, something like > > //OPTIONS: warn-asi > // trace ASI semicolons, to simplify verification > //OPTIONS: warn-hoisting > // warn if bindings are lifted out of their block > //OPTIONS: warn-non-standard > // warn if browser-specific features are used > > Below I add some references to examples from another > language, Haskell. > > Claus > > Haskell has pragmas both for declarative optimization > hints and for language extensions > > http://www.haskell.org/onlinereport/haskell2010/haskellch12.html#x19-18800012 > > on top of this, Haskell packages specify the language > extensions they use > > http://haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr > > The currently known language extensions are listed here, > for Cabal (package manager) and GHC (compiler) > > http://haskell.org/cabal/release/cabal-latest/doc/API/Cabal/Language-Haskell-Extension.html#t:Extension > > http://www.haskell.org/ghc/docs/7.0-latest/html/users_guide/flag-reference.html#id568865 > > In addition to language pragmas, there is an inofficial standard > for compiler options, eg, GHC understands OPTIONS_GHC > pragmas, which make most of GHC's options available in > source files (those that make sense on a per-module basis): > > http://www.haskell.org/ghc/docs/7.0-latest/html/users_guide/pragmas.html > > The list of options useable in source pragmas includes many > warning options > > http://www.haskell.org/ghc/docs/7.0-latest/html/users_guide/flag-reference.html#id570580 > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss