From fbb9934d03cb7fddfcbb6e86eeb29a0d87270a19 Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Tue, 25 Jul 2023 17:08:08 +0200
Subject: [PATCH 1/9] add the range of the caret to SynMeasure.Power

---
 src/Compiler/Checking/CheckExpressions.fs              |  2 +-
 src/Compiler/Service/ServiceParsedInputOps.fs          |  2 +-
 src/Compiler/SyntaxTree/SyntaxTree.fs                  |  2 +-
 src/Compiler/SyntaxTree/SyntaxTree.fsi                 |  2 +-
 src/Compiler/pars.fsy                                  | 10 ++++++----
 .../data/SyntaxTree/Measure/Constant - 06.fs.bsl       |  9 +++++----
 .../data/SyntaxTree/Measure/Constant - 07.fs.bsl       |  2 +-
 .../data/SyntaxTree/Measure/Constant - 08.fs.bsl       |  2 +-
 .../data/SyntaxTree/Measure/Constant - 09.fs.bsl       |  2 +-
 .../data/SyntaxTree/Measure/Constant - 10.fs.bsl       |  2 +-
 10 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/Compiler/Checking/CheckExpressions.fs b/src/Compiler/Checking/CheckExpressions.fs
index 489456fe026..16344ff7fc4 100644
--- a/src/Compiler/Checking/CheckExpressions.fs
+++ b/src/Compiler/Checking/CheckExpressions.fs
@@ -771,7 +771,7 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst =
             | TyparKind.Type -> error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m))
             | TyparKind.Measure -> Measure.Const tcref
 
-        | SynMeasure.Power(ms, exponent, _) -> Measure.RationalPower (tcMeasure ms, TcSynRationalConst exponent)
+        | SynMeasure.Power(measure = ms; power = exponent) -> Measure.RationalPower (tcMeasure ms, TcSynRationalConst exponent)
         | SynMeasure.Product(ms1, ms2, _) -> Measure.Prod(tcMeasure ms1, tcMeasure ms2)
         | SynMeasure.Divide(ms1, (SynMeasure.Seq (_ :: _ :: _, _) as ms2), m) ->
             warning(Error(FSComp.SR.tcImplicitMeasureFollowingSlash(), m))
diff --git a/src/Compiler/Service/ServiceParsedInputOps.fs b/src/Compiler/Service/ServiceParsedInputOps.fs
index 77e29d3cbc5..4577c092136 100644
--- a/src/Compiler/Service/ServiceParsedInputOps.fs
+++ b/src/Compiler/Service/ServiceParsedInputOps.fs
@@ -1927,7 +1927,7 @@ module ParsedInput =
             | SynMeasure.Named (longIdent, _) -> addLongIdent longIdent
             | SynMeasure.Seq (ms, _) -> List.iter walkMeasure ms
             | SynMeasure.Paren (m, _)
-            | SynMeasure.Power (m, _, _) -> walkMeasure m
+            | SynMeasure.Power (measure = m) -> walkMeasure m
             | SynMeasure.Var (ty, _) -> walkTypar ty
             | SynMeasure.One _
             | SynMeasure.Anon _ -> ()
diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs
index 82b07b6edc8..d11fc525fe4 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fs
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fs
@@ -180,7 +180,7 @@ type SynMeasure =
 
     | Divide of measure1: SynMeasure option * measure2: SynMeasure * range: range
 
-    | Power of measure: SynMeasure * power: SynRationalConst * range: range
+    | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range
 
     | One of range: range
 
diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi
index a7bb07fd04b..9d94c71cda1 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fsi
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi
@@ -196,7 +196,7 @@ type SynMeasure =
     | Divide of measure1: SynMeasure option * measure2: SynMeasure * range: range
 
     /// A power of a unit of measure, e.g. 'kg ^ 2'
-    | Power of measure: SynMeasure * power: SynRationalConst * range: range
+    | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range
 
     /// The '1' unit of measure
     | One of range: range
diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy
index f633a853247..b360f050bbd 100644
--- a/src/Compiler/pars.fsy
+++ b/src/Compiler/pars.fsy
@@ -6268,11 +6268,13 @@ measureTypePower:
   | measureTypeAtom INFIX_AT_HAT_OP atomicRationalConstant
      { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
        if $2 = "^-" then
-           let afterMinus = (rhs parseState 2).EndRange
+           let mOp = rhs parseState 2
+           let afterMinus = mOp.EndRange
            let beforeMinus = mkRange afterMinus.FileName (mkPos afterMinus.EndLine (afterMinus.EndColumn - 1)) afterMinus.End
-           let m = unionRanges beforeMinus (rhs parseState 3)  // include MINUS in Negate range
-           SynMeasure.Power($1, SynRationalConst.Negate($3, m), lhs parseState)
-       else SynMeasure.Power($1, $3, lhs parseState) }
+           let mNegate = unionRanges beforeMinus (rhs parseState 3)  // include MINUS in Negate range
+           let mCaret = unionRanges mOp.StartRange mNegate.StartRange
+           SynMeasure.Power($1, mCaret, SynRationalConst.Negate($3, mNegate), lhs parseState)
+       else SynMeasure.Power($1, rhs parseState 2, $3, lhs parseState) }
 
   | INT32
      { if fst $1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure())
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 06.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 06.fs.bsl
index 6496ee9f21a..7d5bac5d2e4 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 06.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 06.fs.bsl	
@@ -9,10 +9,11 @@ ImplFile
                    (Int32 42, (3,0--3,2),
                     Seq
                       ([Power
-                          (Named ([m], (3,3--3,4)), Integer (12345, (3,5--3,10)),
-                           (3,3--3,10))], (3,3--3,10)),
-                    { LessRange = (3,2--3,3)
-                      GreaterRange = (3,10--3,11) }), (3,0--3,11)), (3,0--3,11))],
+                          (Named ([m], (3,3--3,4)), (3,4--3,5),
+                           Integer (12345, (3,5--3,10)), (3,3--3,10))],
+                       (3,3--3,10)), { LessRange = (3,2--3,3)
+                                       GreaterRange = (3,10--3,11) }),
+                 (3,0--3,11)), (3,0--3,11))],
           PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None,
           (1,0--3,11), { LeadingKeyword = Module (1,0--1,6) })], (true, true),
       { ConditionalDirectives = []
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 07.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 07.fs.bsl
index ced6613a288..1485e64fd8c 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 07.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 07.fs.bsl	
@@ -9,7 +9,7 @@ ImplFile
                    (Int32 23, (3,0--3,2),
                     Seq
                       ([Power
-                          (Named ([kg], (3,3--3,5)),
+                          (Named ([kg], (3,3--3,5)), (3,8--3,9),
                            Rational
                              (-12345, (3,21--3,27), 123, (3,28--3,31),
                               (3,21--3,31)), (3,3--3,32))], (3,3--3,32)),
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 08.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 08.fs.bsl
index 18466941b28..cdc20a7bbe4 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 08.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 08.fs.bsl	
@@ -9,7 +9,7 @@ ImplFile
                    (Int32 23, (3,0--3,2),
                     Seq
                       ([Power
-                          (Named ([kg], (3,3--3,5)),
+                          (Named ([kg], (3,3--3,5)), (3,5--3,6),
                            Negate
                              (Rational
                                 (12345, (3,13--3,18), 123, (3,19--3,22),
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 09.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 09.fs.bsl
index 0cd029ea905..83f101df01a 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 09.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 09.fs.bsl	
@@ -9,7 +9,7 @@ ImplFile
                    (Int32 23, (3,0--3,2),
                     Seq
                       ([Power
-                          (Named ([kg], (3,3--3,5)),
+                          (Named ([kg], (3,3--3,5)), (3,5--3,6),
                            Negate
                              (Rational
                                 (12345, (3,10--3,15), 123, (3,16--3,19),
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 10.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 10.fs.bsl
index b9c978dc067..f6e6b3d7fee 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 10.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 10.fs.bsl	
@@ -9,7 +9,7 @@ ImplFile
                    (Int32 23, (3,0--3,2),
                     Seq
                       ([Power
-                          (Named ([kg], (3,3--3,5)),
+                          (Named ([kg], (3,3--3,5)), (3,5--3,6),
                            Negate (Integer (456, (3,7--3,10)), (3,6--3,10)),
                            (3,3--3,10))], (3,3--3,10)),
                     { LessRange = (3,2--3,3)

From 6ca93d6b01352255f517a78c889089aa267bee41 Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Tue, 25 Jul 2023 18:14:38 +0200
Subject: [PATCH 2/9] add opRange to SynMeasure.Product and SynMeasure.Divide

---
 src/Compiler/Checking/CheckExpressions.fs                 | 6 +++---
 src/Compiler/Service/ServiceParsedInputOps.fs             | 4 ++--
 src/Compiler/SyntaxTree/SyntaxTree.fs                     | 4 ++--
 src/Compiler/SyntaxTree/SyntaxTree.fsi                    | 4 ++--
 src/Compiler/pars.fsy                                     | 8 ++++----
 .../service/data/SyntaxTree/Measure/Constant - 04.fs.bsl  | 8 ++++----
 .../service/data/SyntaxTree/Measure/Constant - 05.fs.bsl  | 2 +-
 .../Measure/SynMeasureParenHasCorrectRange.fs.bsl         | 1 +
 8 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/src/Compiler/Checking/CheckExpressions.fs b/src/Compiler/Checking/CheckExpressions.fs
index 16344ff7fc4..94b5067d00a 100644
--- a/src/Compiler/Checking/CheckExpressions.fs
+++ b/src/Compiler/Checking/CheckExpressions.fs
@@ -772,12 +772,12 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst =
             | TyparKind.Measure -> Measure.Const tcref
 
         | SynMeasure.Power(measure = ms; power = exponent) -> Measure.RationalPower (tcMeasure ms, TcSynRationalConst exponent)
-        | SynMeasure.Product(ms1, ms2, _) -> Measure.Prod(tcMeasure ms1, tcMeasure ms2)
-        | SynMeasure.Divide(ms1, (SynMeasure.Seq (_ :: _ :: _, _) as ms2), m) ->
+        | SynMeasure.Product(measure1 = ms1; measure2 = ms2) -> Measure.Prod(tcMeasure ms1, tcMeasure ms2)
+        | SynMeasure.Divide(ms1, _, (SynMeasure.Seq (_ :: _ :: _, _) as ms2), m) ->
             warning(Error(FSComp.SR.tcImplicitMeasureFollowingSlash(), m))
             let factor1 = ms1 |> Option.defaultValue (SynMeasure.One Range.Zero)
             Measure.Prod(tcMeasure factor1, Measure.Inv (tcMeasure ms2))
-        | SynMeasure.Divide(ms1, ms2, _) ->
+        | SynMeasure.Divide(measure1 = ms1; measure2 = ms2) ->
             let factor1 = ms1 |> Option.defaultValue (SynMeasure.One Range.Zero)
             Measure.Prod(tcMeasure factor1, Measure.Inv (tcMeasure ms2))
         | SynMeasure.Seq(mss, _) -> ProdMeasures (List.map tcMeasure mss)
diff --git a/src/Compiler/Service/ServiceParsedInputOps.fs b/src/Compiler/Service/ServiceParsedInputOps.fs
index 4577c092136..148fd70cd08 100644
--- a/src/Compiler/Service/ServiceParsedInputOps.fs
+++ b/src/Compiler/Service/ServiceParsedInputOps.fs
@@ -1918,10 +1918,10 @@ module ParsedInput =
 
         and walkMeasure measure =
             match measure with
-            | SynMeasure.Product (m1, m2, _) ->
+            | SynMeasure.Product (measure1 = m1; measure2 = m2) ->
                 walkMeasure m1
                 walkMeasure m2
-            | SynMeasure.Divide (m1, m2, _) ->
+            | SynMeasure.Divide (measure1 = m1; measure2 = m2) ->
                 m1 |> Option.iter walkMeasure
                 walkMeasure m2
             | SynMeasure.Named (longIdent, _) -> addLongIdent longIdent
diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs
index d11fc525fe4..f05bbf402e8 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fs
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fs
@@ -174,11 +174,11 @@ type SynMeasure =
 
     | Named of longId: LongIdent * range: range
 
-    | Product of measure1: SynMeasure * measure2: SynMeasure * range: range
+    | Product of measure1: SynMeasure * opRange: range * measure2: SynMeasure * range: range
 
     | Seq of measures: SynMeasure list * range: range
 
-    | Divide of measure1: SynMeasure option * measure2: SynMeasure * range: range
+    | Divide of measure1: SynMeasure option * opRange: range * measure2: SynMeasure * range: range
 
     | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range
 
diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi
index 9d94c71cda1..bdf4a353323 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fsi
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi
@@ -187,13 +187,13 @@ type SynMeasure =
     | Named of longId: LongIdent * range: range
 
     /// A product of two units of measure, e.g. 'kg * m'
-    | Product of measure1: SynMeasure * measure2: SynMeasure * range: range
+    | Product of measure1: SynMeasure * opRange: range * measure2: SynMeasure * range: range
 
     /// A sequence of several units of measure, e.g. 'kg m m'
     | Seq of measures: SynMeasure list * range: range
 
     /// A division of two units of measure, e.g. 'kg / m'
-    | Divide of measure1: SynMeasure option * measure2: SynMeasure * range: range
+    | Divide of measure1: SynMeasure option * opRange: range * measure2: SynMeasure * range: range
 
     /// A power of a unit of measure, e.g. 'kg ^ 2'
     | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range
diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy
index b360f050bbd..d22e79fd15d 100644
--- a/src/Compiler/pars.fsy
+++ b/src/Compiler/pars.fsy
@@ -6293,16 +6293,16 @@ measureTypeExpr:
     { SynMeasure.Seq($1, lhs parseState) }
 
   | measureTypeExpr STAR measureTypeExpr
-    { SynMeasure.Product($1, $3, lhs parseState) }
+    { SynMeasure.Product($1, rhs parseState 2, $3, lhs parseState) }
 
   | measureTypeExpr INFIX_STAR_DIV_MOD_OP measureTypeExpr
     { if $2 <> "*" && $2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
-      if $2 = "*" then SynMeasure.Product($1, $3, lhs parseState)
-      else SynMeasure.Divide(Some $1, $3, lhs parseState) }
+      if $2 = "*" then SynMeasure.Product($1, rhs parseState 2, $3, lhs parseState)
+      else SynMeasure.Divide(Some $1, rhs parseState 2, $3, lhs parseState) }
 
   | INFIX_STAR_DIV_MOD_OP measureTypeExpr
      { if $1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
-       SynMeasure.Divide(None, $2, lhs parseState) }
+       SynMeasure.Divide(None, rhs parseState 1, $2, lhs parseState) }
 
 typar:
   | QUOTE ident
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 04.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 04.fs.bsl
index 5e71c013ca3..bf2ab0c3bd3 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 04.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 04.fs.bsl	
@@ -8,10 +8,10 @@ ImplFile
                 (Measure
                    (Int32 23, (3,0--3,2),
                     Divide
-                      (None, Seq ([Named ([cm], (3,4--3,6))], (3,4--3,6)),
-                       (3,3--3,6)), { LessRange = (3,2--3,3)
-                                      GreaterRange = (3,6--3,7) }), (3,0--3,7)),
-              (3,0--3,7))],
+                      (None, (3,3--3,4),
+                       Seq ([Named ([cm], (3,4--3,6))], (3,4--3,6)), (3,3--3,6)),
+                    { LessRange = (3,2--3,3)
+                      GreaterRange = (3,6--3,7) }), (3,0--3,7)), (3,0--3,7))],
           PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None,
           (1,0--3,7), { LeadingKeyword = Module (1,0--1,6) })], (true, true),
       { ConditionalDirectives = []
diff --git a/tests/service/data/SyntaxTree/Measure/Constant - 05.fs.bsl b/tests/service/data/SyntaxTree/Measure/Constant - 05.fs.bsl
index 0ebc88c7f0f..b18f6f4a22f 100644
--- a/tests/service/data/SyntaxTree/Measure/Constant - 05.fs.bsl	
+++ b/tests/service/data/SyntaxTree/Measure/Constant - 05.fs.bsl	
@@ -8,7 +8,7 @@ ImplFile
                 (Measure
                    (Int32 42, (3,0--3,2),
                     Divide
-                      (Some (Seq ([One (3,4--3,7)], (3,4--3,7))),
+                      (Some (Seq ([One (3,4--3,7)], (3,4--3,7))), (3,8--3,9),
                        Seq ([Named ([m], (3,10--3,11))], (3,10--3,11)),
                        (3,4--3,11)), { LessRange = (3,2--3,3)
                                        GreaterRange = (3,11--3,12) }),
diff --git a/tests/service/data/SyntaxTree/Measure/SynMeasureParenHasCorrectRange.fs.bsl b/tests/service/data/SyntaxTree/Measure/SynMeasureParenHasCorrectRange.fs.bsl
index 49a040624a6..84f544b9146 100644
--- a/tests/service/data/SyntaxTree/Measure/SynMeasureParenHasCorrectRange.fs.bsl
+++ b/tests/service/data/SyntaxTree/Measure/SynMeasureParenHasCorrectRange.fs.bsl
@@ -10,6 +10,7 @@ ImplFile
                    (UInt32 40u, (2,0--2,3),
                     Divide
                       (Some (Seq ([Named ([hr], (2,4--2,6))], (2,4--2,6))),
+                       (2,7--2,8),
                        Seq
                          ([Paren
                              (Seq

From 8492c866cf4eedf079845fb3806e1a0f8e74ad5e Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 09:36:46 +0200
Subject: [PATCH 3/9] update surface bsl files

---
 ...piler.Service.SurfaceArea.netstandard20.debug.bsl | 12 +++++++++---
 ...ler.Service.SurfaceArea.netstandard20.release.bsl | 12 +++++++++---
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
index f77c699a161..f73beb7e835 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
@@ -7328,7 +7328,9 @@ FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure measure2
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_opRange()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_range()
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range opRange
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] measure1
@@ -7346,13 +7348,17 @@ FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynMeasure get_m
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynMeasure measure
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynRationalConst get_power()
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynRationalConst power
+FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range caretRange
+FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range get_caretRange()
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure1
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure2
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_opRange()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_range()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range opRange
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range range
@@ -7390,12 +7396,12 @@ FSharp.Compiler.Syntax.SynMeasure: Boolean get_IsProduct()
 FSharp.Compiler.Syntax.SynMeasure: Boolean get_IsSeq()
 FSharp.Compiler.Syntax.SynMeasure: Boolean get_IsVar()
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewAnon(FSharp.Compiler.Text.Range)
-FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewDivide(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure], FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
+FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewDivide(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure], FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewNamed(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident], FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewOne(FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewParen(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
-FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewPower(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Syntax.SynRationalConst, FSharp.Compiler.Text.Range)
-FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewProduct(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
+FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewPower(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynRationalConst, FSharp.Compiler.Text.Range)
+FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewProduct(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewSeq(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMeasure], FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewVar(FSharp.Compiler.Syntax.SynTypar, FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure+Anon
diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
index f77c699a161..f73beb7e835 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
@@ -7328,7 +7328,9 @@ FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure measure2
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_opRange()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_range()
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range opRange
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] measure1
@@ -7346,13 +7348,17 @@ FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynMeasure get_m
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynMeasure measure
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynRationalConst get_power()
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Syntax.SynRationalConst power
+FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range caretRange
+FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range get_caretRange()
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Power: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure1
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure2
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_opRange()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_range()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range opRange
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range range
@@ -7390,12 +7396,12 @@ FSharp.Compiler.Syntax.SynMeasure: Boolean get_IsProduct()
 FSharp.Compiler.Syntax.SynMeasure: Boolean get_IsSeq()
 FSharp.Compiler.Syntax.SynMeasure: Boolean get_IsVar()
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewAnon(FSharp.Compiler.Text.Range)
-FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewDivide(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure], FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
+FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewDivide(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure], FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewNamed(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident], FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewOne(FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewParen(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
-FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewPower(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Syntax.SynRationalConst, FSharp.Compiler.Text.Range)
-FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewProduct(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
+FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewPower(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynRationalConst, FSharp.Compiler.Text.Range)
+FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewProduct(FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMeasure, FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewSeq(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMeasure], FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure NewVar(FSharp.Compiler.Syntax.SynTypar, FSharp.Compiler.Text.Range)
 FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure+Anon

From c397e029f9df450cb182e4387e23ad377d98be8e Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 09:58:19 +0200
Subject: [PATCH 4/9] Update src/Compiler/SyntaxTree/SyntaxTree.fsi

Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
---
 src/Compiler/SyntaxTree/SyntaxTree.fsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi
index bdf4a353323..f4a896ca174 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fsi
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi
@@ -187,7 +187,7 @@ type SynMeasure =
     | Named of longId: LongIdent * range: range
 
     /// A product of two units of measure, e.g. 'kg * m'
-    | Product of measure1: SynMeasure * opRange: range * measure2: SynMeasure * range: range
+    | Product of measure1: SynMeasure * asteriskRange: range * measure2: SynMeasure * range: range
 
     /// A sequence of several units of measure, e.g. 'kg m m'
     | Seq of measures: SynMeasure list * range: range

From 7b6f18e0339f34b30a06b9acd388953fc5ae5952 Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 09:58:29 +0200
Subject: [PATCH 5/9] Update src/Compiler/SyntaxTree/SyntaxTree.fsi

Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
---
 src/Compiler/SyntaxTree/SyntaxTree.fsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi
index f4a896ca174..ce4af9b4c83 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fsi
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi
@@ -193,7 +193,7 @@ type SynMeasure =
     | Seq of measures: SynMeasure list * range: range
 
     /// A division of two units of measure, e.g. 'kg / m'
-    | Divide of measure1: SynMeasure option * opRange: range * measure2: SynMeasure * range: range
+    | Divide of measure1: SynMeasure option * slashRange: range * measure2: SynMeasure * range: range
 
     /// A power of a unit of measure, e.g. 'kg ^ 2'
     | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range

From 793cc572058584b2cd51a2ab2f790fc8f9bb09d3 Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 10:00:53 +0200
Subject: [PATCH 6/9] keep names in sync with fsi

---
 src/Compiler/SyntaxTree/SyntaxTree.fs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs
index f05bbf402e8..6dee9854e9c 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fs
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fs
@@ -174,11 +174,11 @@ type SynMeasure =
 
     | Named of longId: LongIdent * range: range
 
-    | Product of measure1: SynMeasure * opRange: range * measure2: SynMeasure * range: range
+    | Product of measure1: SynMeasure * asteriskRange: range * measure2: SynMeasure * range: range
 
     | Seq of measures: SynMeasure list * range: range
 
-    | Divide of measure1: SynMeasure option * opRange: range * measure2: SynMeasure * range: range
+    | Divide of measure1: SynMeasure option * slashRange: range * measure2: SynMeasure * range: range
 
     | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range
 

From 8fe579c85de774c8cb87ac4b3914530b2038958e Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 10:30:36 +0200
Subject: [PATCH 7/9] update surface bsl files

---
 ...p.Compiler.Service.SurfaceArea.netstandard20.debug.bsl | 8 ++++----
 ...Compiler.Service.SurfaceArea.netstandard20.release.bsl | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
index f73beb7e835..8811e0e5e90 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
@@ -7328,10 +7328,10 @@ FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure measure2
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_opRange()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_range()
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range opRange
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_slashRange()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range range
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range slashRange
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] measure1
 FSharp.Compiler.Syntax.SynMeasure+Named: FSharp.Compiler.Text.Range get_range()
@@ -7356,9 +7356,9 @@ FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure1
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure2
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_opRange()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range asteriskRange
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_asteriskRange()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_range()
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range opRange
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range range
diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
index f73beb7e835..8811e0e5e90 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
@@ -7328,10 +7328,10 @@ FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure measure2
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_opRange()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_range()
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range opRange
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_slashRange()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range range
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range slashRange
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] measure1
 FSharp.Compiler.Syntax.SynMeasure+Named: FSharp.Compiler.Text.Range get_range()
@@ -7356,9 +7356,9 @@ FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure1
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure2
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_opRange()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range asteriskRange
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_asteriskRange()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_range()
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range opRange
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range range

From b662e725a60381f711ff62f3411645e7ee897f33 Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 17:53:29 +0200
Subject: [PATCH 8/9] rename asteriskRange -> mAsterisk rename slashRange ->
 mSlash

---
 src/Compiler/SyntaxTree/SyntaxTree.fs  | 4 ++--
 src/Compiler/SyntaxTree/SyntaxTree.fsi | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs
index 6dee9854e9c..5fd51f66070 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fs
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fs
@@ -174,11 +174,11 @@ type SynMeasure =
 
     | Named of longId: LongIdent * range: range
 
-    | Product of measure1: SynMeasure * asteriskRange: range * measure2: SynMeasure * range: range
+    | Product of measure1: SynMeasure * mAsterisk: range * measure2: SynMeasure * range: range
 
     | Seq of measures: SynMeasure list * range: range
 
-    | Divide of measure1: SynMeasure option * slashRange: range * measure2: SynMeasure * range: range
+    | Divide of measure1: SynMeasure option * mSlash: range * measure2: SynMeasure * range: range
 
     | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range
 
diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi
index ce4af9b4c83..4e0488e3010 100644
--- a/src/Compiler/SyntaxTree/SyntaxTree.fsi
+++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi
@@ -187,13 +187,13 @@ type SynMeasure =
     | Named of longId: LongIdent * range: range
 
     /// A product of two units of measure, e.g. 'kg * m'
-    | Product of measure1: SynMeasure * asteriskRange: range * measure2: SynMeasure * range: range
+    | Product of measure1: SynMeasure * mAsterisk: range * measure2: SynMeasure * range: range
 
     /// A sequence of several units of measure, e.g. 'kg m m'
     | Seq of measures: SynMeasure list * range: range
 
     /// A division of two units of measure, e.g. 'kg / m'
-    | Divide of measure1: SynMeasure option * slashRange: range * measure2: SynMeasure * range: range
+    | Divide of measure1: SynMeasure option * mSlash: range * measure2: SynMeasure * range: range
 
     /// A power of a unit of measure, e.g. 'kg ^ 2'
     | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range

From 363a6350a9372cba43c55244d9f9a1af26d30f0b Mon Sep 17 00:00:00 2001
From: dawe <dawedawe@posteo.de>
Date: Wed, 26 Jul 2023 17:59:10 +0200
Subject: [PATCH 9/9] update surface bsl files

---
 ...p.Compiler.Service.SurfaceArea.netstandard20.debug.bsl | 8 ++++----
 ...Compiler.Service.SurfaceArea.netstandard20.release.bsl | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
index 8811e0e5e90..7f07a0f1123 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
@@ -7328,10 +7328,10 @@ FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure measure2
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_mSlash()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_range()
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_slashRange()
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range mSlash
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range range
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range slashRange
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] measure1
 FSharp.Compiler.Syntax.SynMeasure+Named: FSharp.Compiler.Text.Range get_range()
@@ -7356,9 +7356,9 @@ FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure1
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure2
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range asteriskRange
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_asteriskRange()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_mAsterisk()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_range()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range mAsterisk
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range range
diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
index 8811e0e5e90..7f07a0f1123 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
@@ -7328,10 +7328,10 @@ FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Anon: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Syntax.SynMeasure measure2
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_mSlash()
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_range()
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range get_slashRange()
+FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range mSlash
 FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range range
-FSharp.Compiler.Syntax.SynMeasure+Divide: FSharp.Compiler.Text.Range slashRange
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] get_measure1()
 FSharp.Compiler.Syntax.SynMeasure+Divide: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMeasure] measure1
 FSharp.Compiler.Syntax.SynMeasure+Named: FSharp.Compiler.Text.Range get_range()
@@ -7356,9 +7356,9 @@ FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure get_measure2()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure1
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Syntax.SynMeasure measure2
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range asteriskRange
-FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_asteriskRange()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_mAsterisk()
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range get_range()
+FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range mAsterisk
 FSharp.Compiler.Syntax.SynMeasure+Product: FSharp.Compiler.Text.Range range
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range get_range()
 FSharp.Compiler.Syntax.SynMeasure+Seq: FSharp.Compiler.Text.Range range
