[flang] issue#134
authorpeter klausler <pklausler@nvidia.com>
Fri, 20 Jul 2018 20:06:23 +0000 (13:06 -0700)
committerpeter klausler <pklausler@nvidia.com>
Tue, 24 Jul 2018 21:33:42 +0000 (14:33 -0700)
Original-commit: flang-compiler/f18@a40c38bdb532e7f9258e71f9d68935d79e767e38
Reviewed-on: https://github.com/flang-compiler/f18/pull/144
Tree-same-pre-rewrite: false

flang/lib/parser/provenance.cc

index 4f39d3a..0da5ad6 100644 (file)
@@ -303,11 +303,12 @@ const AllSources::Origin &AllSources::MapToOrigin(Provenance at) const {
 }
 
 ProvenanceRange CookedSource::GetProvenanceRange(CharBlock cookedRange) const {
-  ProvenanceRange range{provenanceMap_.Map(cookedRange.begin() - &data_[0])};
-  if (cookedRange.size() < range.size()) {
-    return {range.start(), cookedRange.size()};
+  ProvenanceRange first{provenanceMap_.Map(cookedRange.begin() - &data_[0])};
+  if (cookedRange.size() <= first.size()) {
+    return first.Prefix(cookedRange.size());
   }
-  return range;
+  ProvenanceRange last{provenanceMap_.Map(cookedRange.end() - &data_[0])};
+  return {first.start(), last.start() - first.start()};
 }
 
 void CookedSource::Marshal() {