From eb3b7810ab3f21aa8e05221a3b117dab73287981 Mon Sep 17 00:00:00 2001 From: Alfonso Garcia-Caro Date: Sun, 26 Mar 2023 01:51:58 +0900 Subject: [PATCH 1/2] Add FSharpType.IsMeasureType --- src/Compiler/Symbols/Symbols.fs | 7 +++++++ src/Compiler/Symbols/Symbols.fsi | 3 +++ 2 files changed, 10 insertions(+) diff --git a/src/Compiler/Symbols/Symbols.fs b/src/Compiler/Symbols/Symbols.fs index 69ab4da96e1..0be0114843c 100644 --- a/src/Compiler/Symbols/Symbols.fs +++ b/src/Compiler/Symbols/Symbols.fs @@ -2427,6 +2427,13 @@ type FSharpType(cenv, ty:TType) = | TType_app _ | TType_measure (Measure.Const _ | Measure.Prod _ | Measure.Inv _ | Measure.One) -> true | _ -> false + member _.IsMeasureType = + isResolved() && + protect <| fun () -> + match stripTyparEqns ty with + | TType_measure _ -> true + | _ -> false + member _.IsTupleType = isResolved() && protect <| fun () -> diff --git a/src/Compiler/Symbols/Symbols.fsi b/src/Compiler/Symbols/Symbols.fsi index e9ce9d8b11e..68344ade4ef 100644 --- a/src/Compiler/Symbols/Symbols.fsi +++ b/src/Compiler/Symbols/Symbols.fsi @@ -1073,6 +1073,9 @@ type FSharpType = /// Get the generic arguments for a tuple type, a function type or a type constructed using a named entity member GenericArguments: IList + /// Indicates if the type is a measure type. + member IsMeasureType: bool + /// Indicates if the type is a tuple type (reference or struct). The GenericArguments property returns the elements of the tuple type. member IsTupleType: bool From 15dcbb0533dc565662eaa99c3078bae96ab0784c Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Wed, 5 Apr 2023 11:08:00 +0200 Subject: [PATCH 2/2] Surface area updated --- .../FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl | 2 ++ ...Sharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl | 2 ++ 2 files changed, 4 insertions(+) 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 cbda528c236..c9de7544463 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 @@ -5066,6 +5066,7 @@ FSharp.Compiler.Symbols.FSharpType: Boolean IsAbbreviation FSharp.Compiler.Symbols.FSharpType: Boolean IsAnonRecordType FSharp.Compiler.Symbols.FSharpType: Boolean IsFunctionType FSharp.Compiler.Symbols.FSharpType: Boolean IsGenericParameter +FSharp.Compiler.Symbols.FSharpType: Boolean IsMeasureType FSharp.Compiler.Symbols.FSharpType: Boolean IsStructTupleType FSharp.Compiler.Symbols.FSharpType: Boolean IsTupleType FSharp.Compiler.Symbols.FSharpType: Boolean IsUnresolved @@ -5074,6 +5075,7 @@ FSharp.Compiler.Symbols.FSharpType: Boolean get_IsAbbreviation() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsAnonRecordType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsFunctionType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsGenericParameter() +FSharp.Compiler.Symbols.FSharpType: Boolean get_IsMeasureType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsStructTupleType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsTupleType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsUnresolved() 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 cbda528c236..c9de7544463 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 @@ -5066,6 +5066,7 @@ FSharp.Compiler.Symbols.FSharpType: Boolean IsAbbreviation FSharp.Compiler.Symbols.FSharpType: Boolean IsAnonRecordType FSharp.Compiler.Symbols.FSharpType: Boolean IsFunctionType FSharp.Compiler.Symbols.FSharpType: Boolean IsGenericParameter +FSharp.Compiler.Symbols.FSharpType: Boolean IsMeasureType FSharp.Compiler.Symbols.FSharpType: Boolean IsStructTupleType FSharp.Compiler.Symbols.FSharpType: Boolean IsTupleType FSharp.Compiler.Symbols.FSharpType: Boolean IsUnresolved @@ -5074,6 +5075,7 @@ FSharp.Compiler.Symbols.FSharpType: Boolean get_IsAbbreviation() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsAnonRecordType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsFunctionType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsGenericParameter() +FSharp.Compiler.Symbols.FSharpType: Boolean get_IsMeasureType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsStructTupleType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsTupleType() FSharp.Compiler.Symbols.FSharpType: Boolean get_IsUnresolved()