| 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;	}}
 |