Le numéro introducing -Yrangepos
à l'époque où makro était orthographié Burmak (r) o est motivé par votre cas d'utilisation.
Une option -X
suggère la permanence, alors qu'un -Y
peut disparaître à tout moment, ce qui signifie qu'il pourrait devenir le comportement par défaut.
Peut-être qu'il n'a pas à cause de bugs and crashes.
A a team meeting written up by Moors:
positions Range [martin]
Le respect des positions de gamme - la carie dans le ide qui a à voir avec le fait que les transformations dans le typer ou analyseur ne respectent pas gamme positions
- tous vérifiés dans le changement - vérifier automatiquement les positions de gamme
- positions de gamme = pas seulement un point de position, mais début et de fin, contenues dans les nœuds d'arbres (RangePosition est une sous-classe de la position)
- il y a carte de RangePositions dans CompilationUnit
invariants:
- positions de la gamme des noeuds enfants sont contenues dans la gamme pos de noeuds parents
- pas de chevauchement (sauf pour les positions de gamme transparentes)
- rangepos couvrent ensemble du programme
problèmes:
fichiers de contrôle contiennent des positions
rangeposition (début, point final) .focus == offsetposition (point)// s'échappe de l'invariant sans chevauchement
En 2012, la validation PR avec -Yrangepos
a échoué fréquemment; il a été corrigé, mais turned into a nightly validation pour réduire les ressources.
Hubert offered these notes:
Quelques choses sur rangepos:
- si vous essayez d'exécuter un code avec 'scalac -Ybrowse: typer -Yrangepos FILE.scala' vous verrez que la plupart des arbres ont des positions de gamme.
- certains ne le font pas, oui, c'est un peu dommage, mais nous essayons d'améliorer cela - en fait, chaque fois que vous trouvez un tel mode en Yrangepos est possible que ce soit un bug. La situation s'est considérablement améliorée de 2.9 à 2.10.0-snapshots.
- arbres syntaxiques sont souvent affectés des positions décalées (ce qui est quelque chose que vous pourriez éprouver, mais je dois voir un exemple )
- pour le compilateur nous soucions que si les positions de gamme sont valables jusqu'à (et y compris) typer. après ça, on s'en fout.Vous exécutez votre outil après des vérifications de ce que je peux voir, cela peut interférer avec un couple de transformations qui se produisent dans les refchecks qui peuvent manipuler/attribuer des positions de distance ou de décalage.
Il peut sembler facile de passer à des positions de gamme, parce que les mathématiques de base, mais il y a encore des bugs like this one qui démontrent the extra labor involved dans des positions assignant lors de la synthèse ou la restructuration d'un arbre.
Bien que les positions de plage soient nécessaires pour le compilateur de présentation, elles ne figurent pas dans le chemin critique de la compilation par lots. Avec plus de ressources pour améliorer la robustesse, peut-être qu'ils pourraient basculer le commutateur.