123456789101112131415161718192021222324252627282930313233343536 |
- import haxe.display.Position;
- import haxe.macro.Context;
- import haxe.macro.PositionTools;
- class Main {
- static function main() {
- var s = "待到来年九月八";
- posChecking("我花开后百花杀");
- }
- macro static function posChecking(expr) {
- var info = PositionTools.getInfos(expr.pos);
- var txtPos = PositionTools.make({
- min: info.min,
- max: info.max,
- file: info.file + '.txt'
- });
- var hxLoc = PositionTools.toLocation(expr.pos);
- var txtLoc = PositionTools.toLocation(txtPos);
- if(!equalRanges(hxLoc.range, txtLoc.range)) {
- var msg = 'position numbers should be the same';
- Context.warning(msg, expr.pos);
- Context.error(msg, txtPos);
- }
- return expr;
- }
- static function equalRanges(r1:Range, r2:Range):Bool {
- return equalPositions(r1.start, r2.start) && equalPositions(r1.end, r2.end);
- }
- static function equalPositions(p1:Position, p2:Position) {
- return p1.line == p2.line && p1.character == p2.character;
- }
- }
|