tweaking SourceManager, better solution than llvm
implemented location stuff in SourceManager