diff --git a/src/Fable.Cli/CHANGELOG.md b/src/Fable.Cli/CHANGELOG.md
index 4f7d2f0573..4e8a827252 100644
--- a/src/Fable.Cli/CHANGELOG.md
+++ b/src/Fable.Cli/CHANGELOG.md
@@ -7,17 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+## 5.0.0-alpha.2 - 2024-11-25
+
+### Fixed
+
+* [All] Allow Fable 5 to be used with Fable 4 plugins (@ncave)
+
## 5.0.0-alpha.1 - 2024-11-24
### Added
-* [All] Add `--legacyCracker` as a fallback
+* [All] Add `--legacyCracker` as a fallback (@MangelMaxime)
### Changed
-* [All] Make MSBuildCracker the default
-* [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive
-* [All] Move TargetFramework to `net8.0`
+* [All] Make MSBuildCracker the default (@MangelMaxime)
+* [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive (@MangelMaxime)
+* [All] Move TargetFramework to `net8.0` (@ncave)
## 4.24.0 - 2024-11-19
diff --git a/src/Fable.Cli/Fable.Cli.fsproj b/src/Fable.Cli/Fable.Cli.fsproj
index 9c1bc21337..5b04674224 100644
--- a/src/Fable.Cli/Fable.Cli.fsproj
+++ b/src/Fable.Cli/Fable.Cli.fsproj
@@ -4,16 +4,10 @@
true
Exe
net8.0
- 5.0.0-alpha.1
- ## Added
+ 5.0.0-alpha.2
+ ## Fixed
-- [All] Add `--legacyCracker` as a fallback
-
-## Changed
-
-- [All] Make MSBuildCracker the default
-- [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive
-- [All] Move TargetFramework to `net8.0`
+- [All] Allow Fable 5 to be used with Fable 4 plugins (@ncave)
diff --git a/src/Fable.Compiler/CHANGELOG.md b/src/Fable.Compiler/CHANGELOG.md
index 66bfe68a39..2d73446e0e 100644
--- a/src/Fable.Compiler/CHANGELOG.md
+++ b/src/Fable.Compiler/CHANGELOG.md
@@ -7,17 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+## 5.0.0-alpha.2 - 2024-11-25
+
+### Fixed
+
+* [All] Allow Fable 5 to be used with Fable 4 plugins (@ncave)
+
## 5.0.0-alpha.1 - 2024-11-24
### Added
-* [All] Add `--legacyCracker` as a fallback
+* [All] Add `--legacyCracker` as a fallback (@MangelMaxime)
### Changed
-* [All] Make MSBuildCracker the default
-* [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive
-* [All] Move TargetFramework to `net8.0`
+* [All] Make MSBuildCracker the default (@MangelMaxime)
+* [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive (@MangelMaxime)
+* [All] Move TargetFramework to `net8.0` (@ncave)
## 4.0.0-alpha-016 - 2024-11-19
diff --git a/src/Fable.Compiler/Fable.Compiler.fsproj b/src/Fable.Compiler/Fable.Compiler.fsproj
index e8d9f60a01..99b6e30c91 100644
--- a/src/Fable.Compiler/Fable.Compiler.fsproj
+++ b/src/Fable.Compiler/Fable.Compiler.fsproj
@@ -6,16 +6,10 @@
true
true
Fable.Compiler
- 5.0.0-alpha.1
- ## Added
+ 5.0.0-alpha.2
+ ## Fixed
-- [All] Add `--legacyCracker` as a fallback
-
-## Changed
-
-- [All] Make MSBuildCracker the default
-- [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive
-- [All] Move TargetFramework to `net8.0`
+- [All] Allow Fable 5 to be used with Fable 4 plugins (@ncave)
embedded
diff --git a/src/Fable.Transforms/Global/Compiler.fs b/src/Fable.Transforms/Global/Compiler.fs
index 0a9fe91190..1bfc864114 100644
--- a/src/Fable.Transforms/Global/Compiler.fs
+++ b/src/Fable.Transforms/Global/Compiler.fs
@@ -2,7 +2,7 @@ namespace Fable
module Literals =
[]
- let VERSION = "5.0.0-alpha.1"
+ let VERSION = "5.0.0-alpha.2"
[]
let JS_LIBRARY_VERSION = "1.7.0"
diff --git a/src/fcs-fable/FSStrings.fs b/src/fcs-fable/FSStrings.fs
index 42257eecac..594983da6a 100644
--- a/src/fcs-fable/FSStrings.fs
+++ b/src/fcs-fable/FSStrings.fs
@@ -14,6 +14,18 @@ let resources =
( "ConstraintSolverMissingConstraint",
"A type parameter is missing a constraint '{0}'"
);
+ ( "ConstraintSolverNullnessWarningEquivWithTypes",
+ "Nullness warning: The types '{0}' and '{1}' do not have equivalent nullability."
+ );
+ ( "ConstraintSolverNullnessWarningWithTypes",
+ "Nullness warning: The types '{0}' and '{1}' do not have compatible nullability."
+ );
+ ( "ConstraintSolverNullnessWarningWithType",
+ "Nullness warning: The type '{0}' does not support 'null'."
+ );
+ ( "ConstraintSolverNullnessWarning",
+ "Nullness warning: {0}."
+ );
( "ConstraintSolverTypesNotInEqualityRelation1",
"The unit of measure '{0}' does not match the unit of measure '{1}'"
);
@@ -69,7 +81,7 @@ let resources =
"Duplicate definition of {0} '{1}'"
);
( "NameClash2",
- "The {0} '{1}' can not be defined because the name '{2}' clashes with the {3} '{4}' in this type or module"
+ "The {0} '{1}' cannot be defined because the name '{2}' clashes with the {3} '{4}' in this type or module"
);
( "Duplicate1",
"Two members called '{0}' have the same signature"
@@ -105,7 +117,7 @@ let resources =
"A coercion from the value type \n {0} \nto the type \n {1} \nwill involve boxing. Consider using 'box' instead"
);
( "TypeIsImplicitlyAbstract",
- "This type is 'abstract' since some abstract members have not been given an implementation. If this is intentional then add the '[]' attribute to your type."
+ "Non-abstract classes cannot contain abstract members. Either provide a default member implementation or add the '[]' attribute to your type."
);
( "NonRigidTypar1",
"This construct causes code to be less generic than indicated by its type annotations. The type variable implied by the use of a '#', '_' or other type annotation at or near '{0}' has been constrained to be type '{1}'."
@@ -299,6 +311,9 @@ let resources =
( "Parser.TOKEN.BAR.RBRACE",
"symbol '|}'"
);
+ ( "Parser.TOKEN.BAR_JUST_BEFORE_NULL",
+ "symbol '|' (directly before 'null')"
+ );
( "Parser.TOKEN.GREATER.RBRACE",
"symbol '>}'"
);
@@ -914,20 +929,11 @@ let resources =
( "MissingFields",
"The following fields require values: {0}"
);
- ( "ValueRestriction1",
- "Value restriction. The value '{0}' has generic type\n {1} \nEither make the arguments to '{2}' explicit or, if you do not intend for it to be generic, add a type annotation."
+ ( "ValueRestrictionFunction",
+ """Value restriction: The value '{0}' has an inferred generic function type\n {1}\nHowever, values cannot have generic type variables like '_a in "let f: '_a". You should define '{2}' as a function instead by doing one of the following:\n- Add an explicit parameter that is applied instead of using a partial application "let f param"\n- Add a unit parameter like "let f()"\n- Write explicit type parameters like "let f<'a>"\nor if you do not intend for it to be generic, either:\n- Add an explicit type annotation like "let f : obj -> obj"\n- Apply arguments of non-generic types to the function value in later code for type inference like "do f()".\nThis error is because a let binding without parameters defines a value, not a function. Values cannot be generic because reading a value is assumed to result in the same everywhere but generic type parameters may invalidate this assumption by enabling type-dependent results."""
);
- ( "ValueRestriction2",
- "Value restriction. The value '{0}' has generic type\n {1} \nEither make '{2}' into a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation."
- );
- ( "ValueRestriction3",
- "Value restriction. This member has been inferred to have generic type\n {0} \nConstructors and property getters/setters cannot be more generic than the enclosing type. Add a type annotation to indicate the exact types involved."
- );
- ( "ValueRestriction4",
- "Value restriction. The value '{0}' has been inferred to have generic type\n {1} \nEither make the arguments to '{2}' explicit or, if you do not intend for it to be generic, add a type annotation."
- );
- ( "ValueRestriction5",
- "Value restriction. The value '{0}' has been inferred to have generic type\n {1} \nEither define '{2}' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation."
+ ( "ValueRestriction",
+ """Value restriction: The value '{0}' has an inferred generic type\n {1}\nHowever, values cannot have generic type variables like '_a in "let x: '_a". You can do one of the following:\n- Define it as a simple data term like an integer literal, a string literal or a union case like "let x = 1"\n- Add an explicit type annotation like "let x : int"\n- Use the value as a non-generic type in later code for type inference like "do x"\nor if you still want type-dependent results, you can define '{2}' as a function instead by doing either:\n- Add a unit parameter like "let x()"\n- Write explicit type parameters like "let x<'a>".\nThis error is because a let binding without parameters defines a value, not a function. Values cannot be generic because reading a value is assumed to result in the same everywhere but generic type parameters may invalidate this assumption by enabling type-dependent results."""
);
( "RecoverableParseError",
"syntax error"
@@ -945,7 +951,7 @@ let resources =
"Override implementations should be given as part of the initial declaration of a type."
);
( "IntfImplInIntrinsicAugmentation",
- "Interface implementations should normally be given on the initial declaration of a type. Interface implementations in augmentations may lead to accessing static bindings before they are initialized, though only if the interface implementation is invoked during initialization of the static data, and in turn access the static data. You may remove this warning using #nowarn \"69\" if you have checked this is not the case."
+ "Interface implementations should normally be given on the initial declaration of a type. Interface implementations in augmentations may lead to accessing static bindings before they are initialized, though only if the interface implementation is invoked during initialization of the static data, and in turn access the static data. You may remove this warning using '#nowarn \"69\"' if you have checked this is not the case."
);
( "IntfImplInExtrinsicAugmentation",
"Interface implementations should be given on the initial declaration of a type."
@@ -957,10 +963,10 @@ let resources =
"The type referenced through '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'."
);
( "HashIncludeNotAllowedInNonScript",
- "#I directives may only occur in F# script files (extensions .fsx or .fsscript). Either move this code to a script file, add a '-I' compiler option for this reference or delimit the directive with delimit it with '#if INTERACTIVE'/'#endif'."
+ "#I directives may only be used in F# script files (extensions .fsx or .fsscript). Either move this code to a script file, add a '-I' compiler option for this reference or delimit the directive with delimit it with '#if INTERACTIVE'/'#endif'."
);
( "HashReferenceNotAllowedInNonScript",
- "#r directives may only occur in F# script files (extensions .fsx or .fsscript). Either move this code to a script file or replace this reference with the '-r' compiler option. If this directive is being executed as user input, you may delimit it with '#if INTERACTIVE'/'#endif'."
+ "#r directives may only be used in F# script files (extensions .fsx or .fsscript). Either move this code to a script file or replace this reference with the '-r' compiler option. If this directive is being executed as user input, you may delimit it with '#if INTERACTIVE'/'#endif'."
);
( "HashDirectiveNotAllowedInNonScript",
"This directive may only be used in F# script files (extensions .fsx or .fsscript). Either remove the directive, move this code to a script file or delimit the directive with '#if INTERACTIVE'/'#endif'."
@@ -1007,6 +1013,9 @@ let resources =
( "ArgumentsInSigAndImplMismatch",
"The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling."
);
+ ( "DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer",
+ "The {0} definitions for type '{1}' in the signature and implementation are not compatible because the abbreviations differ:\n {2}\nversus\n {3}"
+ );
( "Parser.TOKEN.WHILE.BANG",
"keyword 'while!'"
);
diff --git a/src/fcs-fable/SR.fs b/src/fcs-fable/SR.fs
index 39ca804f11..7d7cc160f4 100644
--- a/src/fcs-fable/SR.fs
+++ b/src/fcs-fable/SR.fs
@@ -5,11 +5,18 @@
namespace FSharp.Compiler
module SR =
- let GetString(name: string) =
+ let GetString (name: string) =
match SR.Resources.resources.TryGetValue(name) with
| true, value -> value
| _ -> "Missing FSStrings error message for: " + name
+module FSComp =
+ module SR =
+ let GetTextOpt (name: string) =
+ match SR.Resources.resources.TryGetValue(name) with
+ | true, value -> Some value
+ | _ -> None
+
module DiagnosticMessage =
type ResourceString<'T>(sfmt: string, fmt: string) =
member x.Format =
diff --git a/src/fcs-fable/System.Collections.fs b/src/fcs-fable/System.Collections.fs
index 5da3b027d9..080da974a3 100644
--- a/src/fcs-fable/System.Collections.fs
+++ b/src/fcs-fable/System.Collections.fs
@@ -7,15 +7,19 @@ namespace System.Collections
module Immutable =
open System.Collections.Generic
- // not immutable, just a ResizeArray // TODO: immutable implementation
- type ImmutableArray<'T> =
- static member CreateBuilder() = ResizeArray<'T>()
+ // not immutable, just an Array // TODO: immutable implementation
+ type ImmutableArray<'T> = 'T array
+
+ module ImmutableArray =
+ let CreateBuilder<'T>() = ResizeArray<'T>()
+ let Create<'T>(items: 'T[], start: int, length: int) =
+ items[start..(start + length - 1)]
[]
type ImmutableHashSet<'T when 'T: equality>(values: 'T seq) =
let xs = HashSet<'T>(values)
- static member Create<'T>(values) = ImmutableHashSet<'T>(values)
+ static member Create<'T>(values: 'T seq) = ImmutableHashSet<'T>(values)
static member Empty = ImmutableHashSet<'T>(Array.empty)
member _.Add (value: 'T) =
@@ -187,3 +191,36 @@ module Concurrent =
interface System.Collections.IEnumerable with
member _.GetEnumerator() =
(xs.GetEnumerator() :> System.Collections.IEnumerator)
+
+ interface ICollection> with
+ member _.Add(item: KeyValuePair<'K, 'V>) : unit =
+ (xs :> ICollection<_>).Add(item)
+
+ member _.Clear() : unit = (xs :> ICollection<_>).Clear()
+
+ member _.Contains(item: KeyValuePair<'K, 'V>) : bool =
+ (xs :> ICollection<_>).Contains(item)
+
+ member _.CopyTo(array: KeyValuePair<'K, 'V>[], arrayIndex: int) : unit =
+ (xs :> ICollection<_>).CopyTo(array, arrayIndex)
+
+ member _.Count: int = (xs :> ICollection<_>).Count
+ member _.IsReadOnly: bool = (xs :> ICollection<_>).IsReadOnly
+
+ member _.Remove(item: KeyValuePair<'K, 'V>) : bool =
+ (xs :> ICollection<_>).Remove(item)
+
+ interface IDictionary<'K, 'V> with
+ member _.Add(key: 'K, value: 'V) = xs.Add(key, value)
+ member _.ContainsKey(key: 'K) = xs.ContainsKey(key)
+
+ member _.Item
+ with get (key: 'K): 'V = xs.[key]
+ and set (key: 'K) (v: 'V): unit = xs.[key] <- v
+
+ member _.TryGetValue(key: 'K, value: byref<'V>) =
+ xs.TryGetValue(key, &value)
+
+ member _.Remove(key: 'K) = xs.Remove(key)
+ member _.Keys = xs.Keys
+ member _.Values = xs.Values
diff --git a/src/fcs-fable/TcImports_shim.fs b/src/fcs-fable/TcImports_shim.fs
index b3eda77d9a..cddf4c5c62 100644
--- a/src/fcs-fable/TcImports_shim.fs
+++ b/src/fcs-fable/TcImports_shim.fs
@@ -45,16 +45,14 @@ module TcImports =
let tcImports = TcImports ()
let sigDataReaders ilModule =
- [ for resource in ilModule.Resources.AsList() do
- if IsSignatureDataResource resource then
- let _ccuName, getBytes = GetResourceNameAndSignatureDataFunc resource
- getBytes() ]
+ ilModule.Resources.AsList()
+ |> GetResourceNameAndSignatureDataFuncs
+ |> List.map snd
let optDataReaders ilModule =
- [ for resource in ilModule.Resources.AsList() do
- if IsOptimizationDataResource resource then
- let _ccuName, getBytes = GetResourceNameAndOptimizationDataFunc resource
- getBytes() ]
+ ilModule.Resources.AsList()
+ |> GetResourceNameAndOptimizationDataFuncs
+ |> List.map snd
let LoadMod (ccuName: string) =
let fileName =
@@ -71,11 +69,25 @@ module TcImports =
let reader = ILBinaryReader.OpenILModuleReaderFromBytes fileName bytes opts
reader.ILModuleDef //, reader.ILAssemblyRefs
- let GetSignatureData (fileName:string, ilScopeRef, ilModule:ILModuleDef option, bytes: ReadOnlyByteMemory) =
- unpickleObjWithDanglingCcus fileName ilScopeRef ilModule unpickleCcuInfo bytes
+ let GetSignatureData (file, ilScopeRef, ilModule, byteReaderA, byteReaderB) : PickledDataWithReferences =
+ let memA = byteReaderA ()
- let GetOptimizationData (fileName:string, ilScopeRef, ilModule:ILModuleDef option, bytes: ReadOnlyByteMemory) =
- unpickleObjWithDanglingCcus fileName ilScopeRef ilModule Optimizer.u_CcuOptimizationInfo bytes
+ let memB =
+ (match byteReaderB with
+ | None -> ByteMemory.Empty.AsReadOnly()
+ | Some br -> br ())
+
+ unpickleObjWithDanglingCcus file ilScopeRef ilModule unpickleCcuInfo memA memB
+
+ let GetOptimizationData (file:string, ilScopeRef, ilModule, byteReaderA, byteReaderB) =
+ let memA = byteReaderA ()
+
+ let memB =
+ (match byteReaderB with
+ | None -> ByteMemory.Empty.AsReadOnly()
+ | Some br -> br ())
+
+ unpickleObjWithDanglingCcus file ilScopeRef ilModule Optimizer.u_CcuOptimizationInfo memA memB
let memoize_mod = new MemoizationTable<_,_> (LoadMod, keyComparer=HashIdentity.Structural)
@@ -86,7 +98,7 @@ module TcImports =
let fileName = ilModule.Name //TODO: try with ".sigdata" extension
match sigDataReaders ilModule with
| [] -> None
- | bytes::_ -> Some (GetSignatureData (fileName, ilScopeRef, Some ilModule, bytes))
+ | (readerA, readerB)::_ -> Some (GetSignatureData (fileName, ilScopeRef, Some ilModule, readerA, readerB))
let LoadOptData ccuName =
let ilModule = memoize_mod.Apply ccuName
@@ -95,7 +107,7 @@ module TcImports =
let fileName = ilModule.Name //TODO: try with ".optdata" extension
match optDataReaders ilModule with
| [] -> None
- | bytes::_ -> Some (GetOptimizationData (fileName, ilScopeRef, Some ilModule, bytes))
+ | (readerA, readerB)::_ -> Some (GetOptimizationData (fileName, ilScopeRef, Some ilModule, readerA, readerB))
let memoize_sig = new MemoizationTable<_,_> (LoadSigData, keyComparer=HashIdentity.Structural)
let memoize_opt = new MemoizationTable<_,_> (LoadOptData, keyComparer=HashIdentity.Structural)
@@ -250,6 +262,7 @@ module TcImports =
#endif
None
+ let fslibCcu = fslibCcuInfo.FSharpViewOfMetadata
let primaryScopeRef = primaryCcuInfo.ILScopeRef
let fsharpCoreScopeRef = fslibCcuInfo.ILScopeRef
let assembliesThatForwardToPrimaryAssembly = []
@@ -259,16 +272,19 @@ module TcImports =
TcGlobals(
tcConfig.compilingFSharpCore,
ilGlobals,
- fslibCcuInfo.FSharpViewOfMetadata,
+ fslibCcu,
tcConfig.implicitIncludeDir,
tcConfig.mlCompatibility,
tcConfig.isInteractive,
+ tcConfig.checkNullness,
tcConfig.useReflectionFreeCodeGen,
tryFindSysTypeCcu,
tcConfig.emitDebugInfoInQuotations,
tcConfig.noDebugAttributes,
tcConfig.pathMap,
- tcConfig.langVersion
+ tcConfig.langVersion,
+ tcConfig.realsig,
+ tcConfig.compilationMode
)
#if DEBUG
diff --git a/src/fcs-fable/codegen/FSComp.fs b/src/fcs-fable/codegen/FSComp.fs
index de38348d7c..8ccc32e84e 100644
--- a/src/fcs-fable/codegen/FSComp.fs
+++ b/src/fcs-fable/codegen/FSComp.fs
@@ -153,7 +153,6 @@ type internal SR private() =
static member DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl(a0 : System.String, a1 : System.String, a2 : System.String) = (315, sprintf "The %s definitions for type '%s' in the signature and implementation are not compatible because the abstract member '%s' was required by the signature but was not specified by the implementation" a0 a1 a2)
static member DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig(a0 : System.String, a1 : System.String, a2 : System.String) = (316, sprintf "The %s definitions for type '%s' in the signature and implementation are not compatible because the abstract member '%s' was present in the implementation but not in the signature" a0 a1 a2)
static member DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (317, sprintf "The %s definitions for type '%s' in the signature and implementation are not compatible because the signature declares a %s while the implementation declares a %s" a0 a1 a2 a3)
- static member DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (318, sprintf "The %s definitions for type '%s' in the signature and implementation are not compatible because the abbreviations differ: %s versus %s" a0 a1 a2 a3)
static member DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig(a0 : System.String, a1 : System.String) = (319, sprintf "The %s definitions for type '%s' in the signature and implementation are not compatible because an abbreviation is being hidden by a signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature." a0 a1)
static member DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation(a0 : System.String, a1 : System.String) = (320, sprintf "The %s definitions for type '%s' in the signature and implementation are not compatible because the signature has an abbreviation while the implementation does not" a0 a1)
static member ModuleContainsConstructorButNamesDiffer(a0 : System.String, a1 : System.String) = (sprintf "The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe names differ" a0 a1)
@@ -312,6 +311,7 @@ type internal SR private() =
static member csExpectTypeWithOperatorButGivenTuple(a0 : System.String) = (sprintf "Expecting a type supporting the operator '%s' but given a tuple type" a0)
static member csTypesDoNotSupportOperator(a0 : System.String, a1 : System.String) = (sprintf "None of the types '%s' support the operator '%s'" a0 a1)
static member csTypeDoesNotSupportOperator(a0 : System.String, a1 : System.String) = (sprintf "The type '%s' does not support the operator '%s'" a0 a1)
+ static member csFunctionDoesNotSupportType(a0 : System.String, a1 : System.String, a2 : System.String) = (sprintf "'%s' does not support the type '%s', because the latter lacks the required (real or built-in) member '%s'" a0 a1 a2)
static member csTypesDoNotSupportOperatorNullable(a0 : System.String, a1 : System.String) = (sprintf "None of the types '%s' support the operator '%s'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'." a0 a1)
static member csTypeDoesNotSupportOperatorNullable(a0 : System.String, a1 : System.String) = (sprintf "The type '%s' does not support the operator '%s'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'." a0 a1)
static member csTypeDoesNotSupportConversion(a0 : System.String, a1 : System.String) = (sprintf "The type '%s' does not support a conversion to the type '%s'" a0 a1)
@@ -557,6 +557,7 @@ type internal SR private() =
static member tcInvalidUnitsOfMeasurePrefix() = (706, sprintf "Units-of-measure cannot be used as prefix arguments to a type. Rewrite as postfix arguments in angle brackets." )
static member tcUnitsOfMeasureInvalidInTypeConstructor() = (707, sprintf "Unit-of-measure cannot be used in type constructor application" )
static member tcRequireBuilderMethod(a0 : System.String) = (708, sprintf "This control construct may only be used if the computation expression builder defines a '%s' method" a0)
+ static member tcEmptyBodyRequiresBuilderZeroMethod() = (708, sprintf "An empty body may only be used if the computation expression builder defines a 'Zero' method." )
static member tcTypeHasNoNestedTypes() = (709, sprintf "This type has no nested types" )
static member tcUnexpectedSymbolInTypeExpression(a0 : System.String) = (711, sprintf "Unexpected %s in type expression" a0)
static member tcTypeParameterInvalidAsTypeConstructor() = (712, sprintf "Type parameter cannot be used as type constructor" )
@@ -674,7 +675,7 @@ type internal SR private() =
static member tcAttributesAreNotPermittedOnLetBindings() = (824, sprintf "Attributes are not permitted on 'let' bindings in expressions" )
static member tcDefaultValueAttributeRequiresVal() = (825, sprintf "The 'DefaultValue' attribute may only be used on 'val' declarations" )
static member tcConditionalAttributeRequiresMembers() = (826, sprintf "The 'ConditionalAttribute' attribute may only be used on members" )
- static member tcInvalidActivePatternName() = (827, sprintf "This is not a valid name for an active pattern" )
+ static member tcInvalidActivePatternName(a0 : System.String) = (827, sprintf "'%s' is not a valid method name. Use a 'let' binding instead." a0)
static member tcEntryPointAttributeRequiresFunctionInModule() = (828, sprintf "The 'EntryPointAttribute' attribute may only be used on function definitions in modules" )
static member tcMutableValuesCannotBeInline() = (829, sprintf "Mutable values cannot be marked 'inline'" )
static member tcMutableValuesMayNotHaveGenericParameters() = (830, sprintf "Mutable values cannot have generic parameters" )
@@ -870,10 +871,11 @@ type internal SR private() =
static member optsResource() = (sprintf "Embed the specified managed resource" )
static member optsLinkresource() = (sprintf "Link the specified resource to this assembly where the resinfo format is [,[,public|private]]" )
static member optsDebugPM() = (sprintf "Emit debug information (Short form: -g)" )
- static member optsDebug(a0 : System.String) = (sprintf "Specify debugging type: full, portable, embedded, pdbonly. ('%s' is the default if no debuggging type specified and enables attaching a debugger to a running program, 'portable' is a cross-platform format, 'embedded' is a cross-platform format embedded into the output file)." a0)
+ static member optsDebug(a0 : System.String) = (sprintf "Specify debugging type: full, portable, embedded, pdbonly. ('%s' is the default if no debugging type specified and enables attaching a debugger to a running program, 'portable' is a cross-platform format, 'embedded' is a cross-platform format embedded into the output file)." a0)
static member optsOptimize() = (sprintf "Enable optimizations (Short form: -O)" )
static member optsTailcalls() = (sprintf "Enable or disable tailcalls" )
static member optsDeterministic() = (sprintf "Produce a deterministic assembly (including module version GUID and timestamp)" )
+ static member optsRealsig() = (sprintf "Generate assembly with IL visibility that matches the source code visibility" )
static member optsRefOnly() = (sprintf "Produce a reference assembly, instead of a full assembly, as the primary output" )
static member optsRefOut() = (sprintf "Produce a reference assembly with the specified file path." )
static member optsPathMap() = (sprintf "Maps physical paths to source path names output by the compiler" )
@@ -985,7 +987,6 @@ type internal SR private() =
static member impImportedAssemblyUsesNotPublicType(a0 : System.String) = (1112, sprintf "An imported assembly uses the type '%s' but that type is not public" a0)
static member optValueMarkedInlineButIncomplete(a0 : System.String) = (1113, sprintf "The value '%s' was marked inline but its implementation makes use of an internal or private function which is not sufficiently accessible" a0)
static member optValueMarkedInlineButWasNotBoundInTheOptEnv(a0 : System.String) = (1114, sprintf "The value '%s' was marked inline but was not bound in the optimization environment" a0)
- static member optLocalValueNotFoundDuringOptimization(a0 : System.String) = (1115, sprintf "Local value %s not found during optimization" a0)
static member optValueMarkedInlineHasUnexpectedValue() = (1116, sprintf "A value marked as 'inline' has an unexpected value" )
static member optValueMarkedInlineCouldNotBeInlined() = (1117, sprintf "A value marked as 'inline' could not be inlined" )
static member optFailedToInlineValue(a0 : System.String) = (1118, sprintf "Failed to inline the value '%s' marked 'inline', perhaps because a recursive value was marked 'inline'" a0)
@@ -1009,7 +1010,7 @@ type internal SR private() =
static member lexOutsideIntegerRange() = (1138, sprintf "This number is outside the allowable range for this integer type" )
static member lexCharNotAllowedInOperatorNames(a0 : System.String) = (sprintf "'%s' is not permitted as a character in operator names and is reserved for future use" a0)
static member lexUnexpectedChar(a0 : System.String) = (sprintf "Unexpected character '%s'" a0)
- static member lexByteArrayCannotEncode() = (1140, sprintf "This byte array literal contains characters that do not encode as a single byte" )
+ static member lexByteArrayCannotEncode(a0 : System.Int32) = (1140, sprintf "This byte array literal contains %d characters that do not encode as a single byte" a0)
static member lexIdentEndInMarkReserved(a0 : System.String) = (1141, sprintf "Identifiers followed by '%s' are reserved for future use" a0)
static member lexOutsideEightBitSigned() = (1142, sprintf "This number is outside the allowable range for 8-bit signed integers" )
static member lexOutsideEightBitSignedHex() = (1143, sprintf "This number is outside the allowable range for hexadecimal 8-bit signed integers" )
@@ -1023,10 +1024,11 @@ type internal SR private() =
static member lexOutsideNativeSigned() = (1151, sprintf "This number is outside the allowable range for signed native integers" )
static member lexOutsideNativeUnsigned() = (1152, sprintf "This number is outside the allowable range for unsigned native integers" )
static member lexInvalidFloat() = (1153, sprintf "Invalid floating point number" )
- static member lexOusideDecimal() = (1154, sprintf "This number is outside the allowable range for decimal literals" )
- static member lexOusideThirtyTwoBitFloat() = (1155, sprintf "This number is outside the allowable range for 32-bit floats" )
+ static member lexOutsideDecimal() = (1154, sprintf "This number is outside the allowable range for decimal literals" )
+ static member lexOutsideThirtyTwoBitFloat() = (1155, sprintf "This number is outside the allowable range for 32-bit floats" )
static member lexInvalidNumericLiteral() = (1156, sprintf "This is not a valid numeric literal. Valid numeric literals include 1, 0x1, 0o1, 0b1, 1l (int/int32), 1u (uint/uint32), 1L (int64), 1UL (uint64), 1s (int16), 1us (uint16), 1y (int8/sbyte), 1uy (uint8/byte), 1.0 (float/double), 1.0f (float32/single), 1.0m (decimal), 1I (bigint)." )
- static member lexInvalidByteLiteral() = (1157, sprintf "This is not a valid byte literal" )
+ static member lexInvalidAsciiByteLiteral() = (1157, sprintf "This is not a valid byte character literal. The value must be less than or equal to '\127'B." )
+ static member lexInvalidTrigraphAsciiByteLiteral() = (1157, sprintf "This is not a valid byte character literal. The value must be less than or equal to '\127'B.\nNote: In a future F# version this warning will be promoted to an error." )
static member lexInvalidCharLiteral() = (1158, sprintf "This is not a valid character literal" )
static member lexThisUnicodeOnlyInStringLiterals() = (1159, sprintf "This Unicode encoding is only valid in string literals" )
static member lexTokenReserved() = (1160, sprintf "This token is reserved for future use" )
@@ -1118,6 +1120,8 @@ type internal SR private() =
static member lexUnmatchedRBracesInTripleQuote() = (1249, sprintf "The interpolated string contains unmatched closing braces." )
static member lexTooManyPercentsInTripleQuote() = (1250, sprintf "The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%%' characters." )
static member lexExtendedStringInterpolationNotSupported() = (1251, sprintf "Extended string interpolation is not supported in this version of F#." )
+ static member lexInvalidCharLiteralInString(a0 : System.String, a1 : System.String) = (1252, sprintf "'%s' is not a valid character literal.\nNote: Currently the value is wrapped around byte range to '%s'. In a future F# version this warning will be promoted to an error." a0 a1)
+ static member lexByteArrayOutisdeAscii(a0 : System.Int32) = (1253, sprintf "This byte array literal contains %d non-ASCII characters. All characters should be < 128y." a0)
static member toolLocationHelperUnsupportedFrameworkVersion(a0 : System.String) = (1300, sprintf "The specified .NET Framework version '%s' is not supported. Please specify a value from the enumeration Microsoft.Build.Utilities.TargetDotNetFrameworkVersion." a0)
static member ilSignInvalidMagicValue() = (1301, sprintf "Invalid Magic value in CLR Header" )
static member ilSignBadImageFormat() = (1302, sprintf "Bad image format" )
@@ -1149,7 +1153,7 @@ type internal SR private() =
static member fscKeyFileWarning() = (2018, sprintf "Option '--keyfile' overrides attribute 'System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module" )
static member fscKeyNameWarning() = (2019, sprintf "Option '--keycontainer' overrides attribute 'System.Reflection.AssemblyNameAttribute' given in a source file or added module" )
static member fscReferenceOnCommandLine(a0 : System.String) = (2020, sprintf "The assembly '%s' is listed on the command line. Assemblies should be referenced using a command line flag such as '-r'." a0)
- static member fscRemotingError() = (2021, sprintf "The resident compilation service was not used because a problem occured in communicating with the server." )
+ static member fscRemotingError() = (2021, sprintf "The resident compilation service was not used because a problem occurred in communicating with the server." )
static member pathIsInvalid(a0 : System.String) = (2022, sprintf "Problem with filename '%s': Illegal characters in path." a0)
static member fscResxSourceFileDeprecated(a0 : System.String) = (2023, sprintf "Passing a .resx file (%s) as a source file to the compiler is deprecated. Use resgen.exe to transform the .resx file into a .resources file to pass as a --resource option. If you are using MSBuild, this can be done via an item in the .fsproj project file." a0)
static member fscStaticLinkingNoProfileMismatches() = (2024, sprintf "Static linking may not be used on an assembly referencing mscorlib (e.g. a .NET Framework assembly) when generating an assembly that references System.Runtime (e.g. a .NET Core or Portable assembly)." )
@@ -1193,7 +1197,7 @@ type internal SR private() =
static member etUnexpectedExceptionFromProvidedMemberMember(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3043, sprintf "Unexpected exception from member '%s' of provided type '%s' member '%s': %s" a0 a1 a2 a3)
static member etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters() = (3044, sprintf "Nested provided types do not take static arguments or generic parameters" )
static member etInvalidStaticArgument(a0 : System.String) = (3045, sprintf "Invalid static argument to provided type. Expected an argument of kind '%s'." a0)
- static member etErrorApplyingStaticArgumentsToType() = (3046, sprintf "An error occured applying the static arguments to a provided type" )
+ static member etErrorApplyingStaticArgumentsToType() = (3046, sprintf "An error occurred applying the static arguments to a provided type" )
static member etUnknownStaticArgumentKind(a0 : System.String, a1 : System.String) = (3047, sprintf "Unknown static argument kind '%s' when resolving a reference to a provided type or method '%s'" a0 a1)
static member etProviderHasDesignerAssemblyDependency(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3048, sprintf "The type provider designer assembly '%s' could not be loaded from folder '%s' because a dependency was missing or could not loaded. All dependencies of the type provider designer assembly must be located in the same folder as that assembly. The exception reported was: %s - %s" a0 a1 a2 a3)
static member etProviderHasDesignerAssemblyException(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3049, sprintf "The type provider designer assembly '%s' could not be loaded from folder '%s'. The exception reported was: %s - %s" a0 a1 a2 a3)
@@ -1208,7 +1212,7 @@ type internal SR private() =
static member tcTypeCastErased(a0 : System.String, a1 : System.String) = (3061, sprintf "This downcast will erase the provided type '%s' to the type '%s'." a0 a1)
static member tcTypeTestErased(a0 : System.String, a1 : System.String) = (3062, sprintf "This type test with a provided type '%s' is not allowed because this provided type will be erased to '%s' at runtime." a0 a1)
static member tcCannotInheritFromErasedType() = (3063, sprintf "Cannot inherit from erased provided type" )
- static member etInvalidTypeProviderAssemblyName(a0 : System.String, a1 : System.String) = (3065, sprintf "Assembly '%s' hase TypeProviderAssembly attribute with invalid value '%s'. The value should be a valid assembly name" a0 a1)
+ static member etInvalidTypeProviderAssemblyName(a0 : System.String, a1 : System.String) = (3065, sprintf "Assembly '%s' has TypeProviderAssembly attribute with invalid value '%s'. The value should be a valid assembly name" a0 a1)
static member tcInvalidMemberNameCtor() = (3066, sprintf "Invalid member name. Members may not have name '.ctor' or '.cctor'" )
static member tcInferredGenericTypeGivesRiseToInconsistency(a0 : System.String, a1 : System.String) = (3068, sprintf "The function or member '%s' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is '%s'." a0 a1)
static member tcInvalidTypeArgumentCount(a0 : System.Int32, a1 : System.Int32) = (3069, sprintf "The number of type arguments did not match: '%d' given, '%d' expected. This may be related to a previously reported error." a0 a1)
@@ -1339,7 +1343,7 @@ type internal SR private() =
static member fscSystemRuntimeInteropServicesIsRequired() = (3179, sprintf "System.Runtime.InteropServices assembly is required to use UnknownWrapper\DispatchWrapper classes." )
static member abImplicitHeapAllocation(a0 : System.String) = (3180, sprintf "The mutable local '%s' is implicitly allocated as a reference cell because it has been captured by a closure. This warning is for informational purposes only to indicate where implicit allocations are performed." a0)
static member estApplyStaticArgumentsForMethodNotImplemented() = (sprintf "A type provider implemented GetStaticParametersForMethod, but ApplyStaticArgumentsForMethod was not implemented or invalid" )
- static member etErrorApplyingStaticArgumentsToMethod() = (3181, sprintf "An error occured applying the static arguments to a provided method" )
+ static member etErrorApplyingStaticArgumentsToMethod() = (3181, sprintf "An error occurred applying the static arguments to a provided method" )
static member pplexUnexpectedChar(a0 : System.String) = (3182, sprintf "Unexpected character '%s' in preprocessor expression" a0)
static member ppparsUnexpectedToken(a0 : System.String) = (3183, sprintf "Unexpected token '%s' in preprocessor expression" a0)
static member ppparsIncompleteExpression() = (3184, sprintf "Incomplete preprocessor expression" )
@@ -1365,7 +1369,7 @@ type internal SR private() =
static member tcUnsupportedMutRecDecl() = (3202, sprintf "This declaration is not supported in recursive declaration groups" )
static member parsInvalidUseOfRec() = (3203, sprintf "Invalid use of 'rec' keyword" )
static member tcStructUnionMultiCaseDistinctFields() = (3204, sprintf "If a multicase union type is a struct, then all union cases must have unique names. For example: 'type A = B of b: int | C of c: int'." )
- static member CallerMemberNameIsOverriden(a0 : System.String) = (3206, sprintf "The CallerMemberNameAttribute applied to parameter '%s' will have no effect. It is overridden by the CallerFilePathAttribute." a0)
+ static member CallerMemberNameIsOverridden(a0 : System.String) = (3206, sprintf "The CallerMemberNameAttribute applied to parameter '%s' will have no effect. It is overridden by the CallerFilePathAttribute." a0)
static member tcFixedNotAllowed() = (3207, sprintf "Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference()" )
static member tcCouldNotFindOffsetToStringData() = (3208, sprintf "Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression." )
static member chkNoByrefAddressOfLocal(a0 : System.String) = (3209, sprintf "The address of the variable '%s' or a related expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope." a0)
@@ -1444,7 +1448,7 @@ type internal SR private() =
static member keywordDescriptionStruct() = (sprintf "Used to declare a structure type. Also used in generic parameter constraints." )
static member keywordDescriptionThen() = (sprintf "Used in conditional expressions. Also used to perform side effects after object construction." )
static member keywordDescriptionTo() = (sprintf "Used in for loops to indicate a range." )
- static member keywordDescriptionTry() = (sprintf "Used to introduce a block of code that might generate an exception. Used together with with or finally." )
+ static member keywordDescriptionTry() = (sprintf "Used to introduce a block of code that might generate an exception. Used together with 'with' or 'finally'." )
static member keywordDescriptionType() = (sprintf "Used to declare a class, record, structure, discriminated union, enumeration type, unit of measure, or type abbreviation." )
static member keywordDescriptionTypeTest() = (sprintf "Used to check if an object is of the given type in a pattern or binding." )
static member keywordDescriptionUpcast() = (sprintf "Used to convert to a type that is higher in the inheritance chain." )
@@ -1504,6 +1508,19 @@ type internal SR private() =
static member expressionHasNoName() = (3250, sprintf "Expression does not have a name." )
static member chkNoFirstClassNameOf() = (3251, sprintf "Using the 'nameof' operator as a first-class function value is not permitted." )
static member tcIllegalByrefsInOpenTypeDeclaration() = (3252, sprintf "Byref types are not allowed in an open type declaration." )
+ static member tcTypeDoesNotHaveAnyNull(a0 : System.String) = (3260, sprintf "The type '%s' does not support a nullness qualification." a0)
+ static member tcPassingWithoutNullToANullableExpectingFunc(a0 : System.String) = (3262, sprintf "Value known to be without null passed to a function meant for nullables: %s" a0)
+ static member tcPassingWithoutNullToOptionOfObj() = (sprintf "You can create 'Some value' directly instead of 'ofObj', or consider not using an option for this value." )
+ static member tcPassingWithoutNullToValueOptionOfObj() = (sprintf "You can create 'ValueSome value' directly instead of 'ofObj', or consider not using a voption for this value." )
+ static member tcPassingWithoutNullToNonNullAP() = (sprintf "You can remove this |Null|NonNull| pattern usage." )
+ static member tcPassingWithoutNullToNonNullQuickAP() = (sprintf "You can remove this |NonNullQuick| pattern usage." )
+ static member tcPassingWithoutNullTononNullFunction() = (sprintf "You can remove this `nonNull` assertion." )
+ static member tcNullableToStringOverride() = (3263, sprintf "With nullness checking enabled, overrides of .ToString() method must return a non-nullable string. You can handle potential nulls via the built-in string function." )
+ static member tcDowncastFromNullableToWithoutNull(a0 : System.String, a1 : System.String, a2 : System.String) = (3264, sprintf "Nullness warning: Downcasting from '%s' into '%s' can introduce unexpected null values. Cast to '%s|null' instead or handle the null before downcasting." a0 a1 a2)
+ static member csNullNotNullConstraintInconsistent() = (3268, sprintf "The constraints 'null' and 'not null' are inconsistent" )
+ static member tcNullnessCheckingNotEnabled() = (3271, sprintf "The 'nullness checking' language feature is not enabled. This use of a nullness checking construct will be ignored." )
+ static member csTypeHasNullAsTrueValue(a0 : System.String) = (sprintf "The type '%s' uses 'null' as a representation value but a non-null type is expected" a0)
+ static member csTypeHasNullAsExtraValue(a0 : System.String) = (sprintf "The type '%s' supports 'null' but a non-null type is expected" a0)
static member chkInvalidFunctionParameterType(a0 : System.String, a1 : System.String) = (3300, sprintf "The parameter '%s' has an invalid type '%s'. This is not permitted by the rules of Common IL." a0 a1)
static member chkInvalidFunctionReturnType(a0 : System.String) = (3301, sprintf "The function or method has an invalid return type '%s'. This is not permitted by the rules of Common IL." a0)
static member packageManagementRequiresVFive() = (3302, sprintf "The 'package management' feature requires language version 5.0 or above" )
@@ -1518,6 +1535,8 @@ type internal SR private() =
static member typrelInterfaceMemberNoMostSpecificImplementation(a0 : System.String) = (3352, sprintf "Interface member '%s' does not have a most specific implementation." a0)
static member fsiInvalidDirective(a0 : System.String, a1 : System.String) = (3353, sprintf "Invalid directive '#%s %s'" a0 a1)
static member useSdkRefs() = (sprintf "Use reference assemblies for .NET framework references when available (Enabled by default)." )
+ static member optsCheckNulls() = (sprintf "Enable nullness declarations and checks" )
+ static member fSharpBannerVersion(a0 : System.String, a1 : System.String) = (sprintf "%s for F# %s" a0 a1)
static member optsGetLangVersions() = (sprintf "Display the allowed values for language version." )
static member optsSetLangVersion() = (sprintf "Specify language version such as 'latest' or 'preview'." )
static member optsSupportedLangVersions() = (sprintf "Supported language versions:" )
@@ -1527,7 +1546,7 @@ type internal SR private() =
static member formatDashItem(a0 : System.String) = (sprintf " - %s" a0)
static member featureSingleUnderscorePattern() = (sprintf "single underscore pattern" )
static member featureWildCardInForLoop() = (sprintf "wild card in for loop" )
- static member featureRelaxWhitespace() = (sprintf "whitespace relexation" )
+ static member featureRelaxWhitespace() = (sprintf "whitespace relaxation" )
static member featureNameOf() = (sprintf "nameof" )
static member featureImplicitYield() = (sprintf "implicit yield" )
static member featureOpenTypeDeclaration() = (sprintf "open type declaration" )
@@ -1536,6 +1555,7 @@ type internal SR private() =
static member featureFromEndSlicing() = (sprintf "from-end slicing" )
static member featureFixedIndexSlice3d4d() = (sprintf "fixed-index slice 3d/4d" )
static member featureAndBang() = (sprintf "applicative computation expressions" )
+ static member featureNullnessChecking() = (sprintf "nullness checking" )
static member featureResumableStateMachines() = (sprintf "resumable state machines" )
static member featureNullableOptionalInterop() = (sprintf "nullable optional interop" )
static member featureDefaultInterfaceMemberConsumption() = (sprintf "default interface member consumption" )
@@ -1575,6 +1595,11 @@ type internal SR private() =
static member featureWarningIndexedPropertiesGetSetSameType() = (sprintf "Indexed properties getter and setter must have the same type" )
static member featureChkTailCallAttrOnNonRec() = (sprintf "Raises warnings if the 'TailCall' attribute is used on non-recursive functions." )
static member featureUnionIsPropertiesVisible() = (sprintf "Union case test properties" )
+ static member featureBooleanReturningAndReturnTypeDirectedPartialActivePattern() = (sprintf "Boolean-returning and return-type-directed partial active patterns" )
+ static member featureEnforceAttributeTargets() = (sprintf "Enforce AttributeTargets" )
+ static member featureLowerInterpolatedStringToConcat() = (sprintf "Optimizes interpolated strings in certain cases, by lowering to concatenation" )
+ static member featureLowerIntegralRangesToFastLoops() = (sprintf "Optimizes certain uses of the integral range (..) and range-step (.. ..) operators to fast while-loops." )
+ static member featureLowerSimpleMappingsInComprehensionsToFastLoops() = (sprintf "Lowers [for x in xs -> f x] and [|for x in xs -> f x|] to fast loops when xs is a list or an array, respectively." )
static member tcNotAFunctionButIndexerNamedIndexingNotYetEnabled(a0 : System.String, a1 : System.String) = (3354, sprintf "This value supports indexing, e.g. '%s.[index]'. The syntax '%s[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." a0 a1)
static member tcNotAFunctionButIndexerIndexingNotYetEnabled() = (3354, sprintf "This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." )
static member tcNotAnIndexerNamedIndexingNotYetEnabled(a0 : System.String) = (3355, sprintf "The value '%s' is not a function and does not support index notation." a0)
@@ -1639,7 +1664,7 @@ type internal SR private() =
static member tcResumableCodeFunctionMustBeInline() = (3501, sprintf "Invalid resumable code. Any method of function accepting or returning resumable code must be marked 'inline'" )
static member tcResumableCodeArgMustHaveRightName() = (3501, sprintf "Invalid resumable code. Resumable code parameter must have name beginning with '__expand'" )
static member tcResumableCodeArgMustHaveRightKind() = (3501, sprintf "Invalid resumable code. A resumable code parameter must be of delegate or function type" )
- static member tcResumableCodeContainsLetRec() = (3501, sprintf "Invalid resumable code. A 'let rec' occured in the resumable code specification" )
+ static member tcResumableCodeContainsLetRec() = (3501, sprintf "Invalid resumable code. A 'let rec' occurred in the resumable code specification" )
static member tcResumableCodeNotSupported() = (3510, sprintf "Using resumable code or resumable state machines requires /langversion:preview" )
static member tcNoEagerConstraintApplicationAttribute() = (3510, sprintf "Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later" )
static member reprStateMachineNotCompilable(a0 : System.String) = (3511, sprintf "This state machine is not statically compilable. %s. An alternative dynamic implementation will be used, which may be slower. Consider adjusting your code to ensure this state machine is statically compilable, or else suppress this warning." a0)
@@ -1647,8 +1672,8 @@ type internal SR private() =
static member tcResumableCodeInvocation() = (3513, sprintf "Resumable code invocation. Suppress this warning if you are defining new low-level resumable code in terms of existing resumable code." )
static member ilxGenUnknownDebugPoint(a0 : System.String, a1 : System.String) = (3514, sprintf "Unknown debug point '%s'. The available debug points are '%s'." a0 a1)
static member reprResumableCodeInvokeNotReduced(a0 : System.String) = (sprintf "A resumable code invocation at '%s' could not be reduced" a0)
- static member reprResumableCodeContainsLetRec() = (sprintf "A 'let rec' occured in the resumable code specification" )
- static member reprResumableCodeContainsConstrainedGenericLet() = (sprintf "A constrained generic construct occured in the resumable code specification" )
+ static member reprResumableCodeContainsLetRec() = (sprintf "A 'let rec' occurred in the resumable code specification" )
+ static member reprResumableCodeContainsConstrainedGenericLet() = (sprintf "A constrained generic construct occurred in the resumable code specification" )
static member reprResumableCodeContainsDynamicResumeAtInBody() = (sprintf "A target label for __resumeAt was not statically determined. A __resumeAt with a non-static target label may only appear at the start of a resumable code method" )
static member reprResumableCodeContainsResumptionInTryFinally() = (sprintf "A try/finally may not contain resumption points" )
static member reprResumableCodeContainsResumptionInHandlerOrFilter() = (sprintf "The 'with' block of a try/with may not contain resumption points" )
@@ -1672,7 +1697,7 @@ type internal SR private() =
static member tcUsingInterfacesWithStaticAbstractMethods() = (3535, sprintf "Declaring \"interfaces with static abstract methods\" is an advanced feature. See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3535\"' or '--nowarn:3535'." )
static member tcUsingInterfaceWithStaticAbstractMethodAsType(a0 : System.String) = (3536, sprintf "'%s' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'." a0)
static member tcTraitHasMultipleSupportTypes(a0 : System.String) = (3537, sprintf "The trait '%s' invoked by this call has multiple support types. This invocation syntax is not permitted for such traits. See https://aka.ms/fsharp-srtp for guidance." a0)
- static member tcMissingRequiredMembers(a0 : System.String) = (3545, sprintf "The following required properties have to be initalized:%s" a0)
+ static member tcMissingRequiredMembers(a0 : System.String) = (3545, sprintf "The following required properties have to be initialized:%s" a0)
static member parsExpectingPattern() = (3546, sprintf "Expecting pattern" )
static member parsExpectedPatternAfterToken() = (3547, sprintf "Expected a pattern after this point" )
static member matchNotAllowedForUnionCaseWithNoData() = (3548, sprintf "Pattern discard is not allowed for union case that takes no data." )
@@ -1721,4 +1746,25 @@ type internal SR private() =
static member chkStaticMembersOnObjectExpressions() = (3860, sprintf "Object expressions cannot implement interfaces with static abstract members or declare static members." )
static member chkTailCallAttrOnNonRec() = (3861, sprintf "The TailCall attribute should only be applied to recursive functions." )
static member parsStaticMemberImcompleteSyntax() = (3862, sprintf "Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration." )
- static member parsExpectingField() = (3863, sprintf "Expecting record field" )
+ static member parsExpectingRecordField() = (3863, sprintf "Expecting record field" )
+ static member tooManyMethodsInDotNetTypeWritingAssembly(a0 : System.String, a1 : System.Int32, a2 : System.Int32) = (3864, sprintf "The type '%s' has too many methods. Found: '%d', maximum: '%d'" a0 a1 a2)
+ static member parsOnlySimplePatternsAreAllowedInConstructors() = (3865, sprintf "Only simple patterns are allowed in primary constructors" )
+ static member chkStaticAbstractInterfaceMembers(a0 : System.String) = (3866, sprintf "A static abstract non-virtual interface member should only be called via type parameter (for example: 'T.%s)." a0)
+ static member chkStaticAbstractMembersOnClasses() = (3867, sprintf "Classes cannot contain static abstract members." )
+ static member tcActivePatternArgsCountNotMatchNoArgsNoPat(a0 : System.String, a1 : System.String) = (3868, sprintf "This active pattern does not expect any arguments, i.e., it should be used like '%s' instead of '%s x'." a0 a1)
+ static member tcActivePatternArgsCountNotMatchOnlyPat(a0 : System.String) = (3868, sprintf "This active pattern expects exactly one pattern argument, e.g., '%s pat'." a0)
+ static member tcActivePatternArgsCountNotMatchArgs(a0 : System.Int32, a1 : System.String, a2 : System.String) = (3868, sprintf "This active pattern expects %d expression argument(s), e.g., '%s%s'." a0 a1 a2)
+ static member tcActivePatternArgsCountNotMatchArgsAndPat(a0 : System.Int32, a1 : System.String, a2 : System.String) = (3868, sprintf "This active pattern expects %d expression argument(s) and a pattern argument, e.g., '%s%s pat'." a0 a1 a2)
+ static member featureParsedHashDirectiveArgumentNonString() = (sprintf "# directives with non-quoted string arguments" )
+ static member featureParsedHashDirectiveUnexpectedInteger(a0 : System.Int32) = (3869, sprintf "Unexpected integer literal '%d'." a0)
+ static member featureParsedHashDirectiveUnexpectedIdentifier(a0 : System.String) = (3869, sprintf "Unexpected identifier '%s'." a0)
+ static member featureEmptyBodiedComputationExpressions() = (sprintf "Support for computation expressions with empty bodies: builder { }" )
+ static member parsExpectingUnionCaseField() = (3870, sprintf "Expecting union case field" )
+ static member featureAllowAccessModifiersToAutoPropertiesGettersAndSetters() = (sprintf "Allow access modifiers to auto properties getters and setters" )
+ static member tcAccessModifiersNotAllowedInSRTPConstraint() = (3871, sprintf "Access modifiers cannot be applied to an SRTP constraint." )
+ static member featureAllowObjectExpressionWithoutOverrides() = (sprintf "Allow object expressions without overrides" )
+ static member featureUseTypeSubsumptionCache() = (sprintf "Use type conversion cache during compilation" )
+ static member tcPartialActivePattern() = (3872, sprintf "Multi-case partial active patterns are not supported. Consider using a single-case partial active pattern or a full active pattern." )
+ static member featureDontWarnOnUppercaseIdentifiersInBindingPatterns() = (sprintf "Don't warn on uppercase identifiers in binding patterns" )
+ static member chkDeprecatePlacesWhereSeqCanBeOmitted() = (3873, sprintf "This construct is deprecated. Sequence expressions should be of the form 'seq { ... }'" )
+ static member featureDeprecatePlacesWhereSeqCanBeOmitted() = (sprintf "Deprecate places where 'seq' can be omitted" )
diff --git a/src/fcs-fable/codegen/FSIstrings.fs b/src/fcs-fable/codegen/FSIstrings.fs
index 2e258b4311..6182bd8ced 100644
--- a/src/fcs-fable/codegen/FSIstrings.fs
+++ b/src/fcs-fable/codegen/FSIstrings.fs
@@ -33,6 +33,7 @@ type internal SR private() =
static member fsiIntroTextHashloadInfo() = (sprintf "Load the given file(s) as if compiled and referenced" )
static member fsiIntroTextHashtimeInfo() = (sprintf "Toggle timing on/off" )
static member fsiIntroTextHashhelpInfo() = (sprintf "Display help" )
+ static member fsiIntroTextHashhelpdocInfo() = (sprintf "Display documentation for an identifier, e.g. #help \"List.map\";;" )
static member fsiIntroTextHashquitInfo() = (sprintf "Exit" )
static member fsiIntroTextHashclearInfo() = (sprintf "Clear screen" )
static member fsiIntroTextHeader2commandLine() = (sprintf " F# Interactive command line options:" )
@@ -58,3 +59,4 @@ type internal SR private() =
static member fsiOperationFailed() = (sprintf "Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpDiagnostic use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing" )
static member fsiMultiAssemblyEmitOption() = (sprintf "Emit multiple assemblies (on by default)" )
static member fsiEntryPointWontBeInvoked(a0 : System.String, a1 : System.String, a2 : System.String) = (2304, sprintf "Functions with [] are not invoked in FSI. '%s' was not invoked. Execute '%s ' in order to invoke '%s' with the appropriate string array of command line arguments." a0 a1 a2)
+ static member fsiDetailedHelpLink() = (sprintf "See https://learn.microsoft.com/dotnet/fsharp/language-reference/fsharp-interactive-options for more details." )
diff --git a/src/fcs-fable/codegen/codegen.fsproj b/src/fcs-fable/codegen/codegen.fsproj
index eb47fd5544..3a0aac2a09 100644
--- a/src/fcs-fable/codegen/codegen.fsproj
+++ b/src/fcs-fable/codegen/codegen.fsproj
@@ -7,7 +7,7 @@
Exe
- net8.0
+ net9.0
@@ -30,11 +30,11 @@
SyntaxTree/pplex.fsl
- --module FSharp.Compiler.PPParser --open FSharp.Compiler.ParseHelpers --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char
+ --module FSharp.Compiler.PPParser --open FSharp.Compiler.ParseHelpers --open FSharp.Compiler.LexerStore --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char
SyntaxTree/pppars.fsy
- --module FSharp.Compiler.Lexer --open FSharp.Compiler.Lexhelp --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.Parser --open FSharp.Compiler.Text --open FSharp.Compiler.ParseHelpers --internal --unicode --lexlib Internal.Utilities.Text.Lexing
+ --module FSharp.Compiler.Lexer --open FSharp.Compiler.Lexhelp --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.Parser --open FSharp.Compiler.Text --open FSharp.Compiler.ParseHelpers --open FSharp.Compiler.LexerStore --internal --unicode --lexlib Internal.Utilities.Text.Lexing
SyntaxTree/lex.fsl
diff --git a/src/fcs-fable/codegen/illex.fs b/src/fcs-fable/codegen/illex.fs
index a288e441d0..dcbb6ed565 100644
--- a/src/fcs-fable/codegen/illex.fs
+++ b/src/fcs-fable/codegen/illex.fs
@@ -442,7 +442,7 @@ and token lexbuf =
)
| 12 -> (
//# 112 "src/Compiler/AbstractIL/illex.fsl"
- ELIPSES
+ ELLIPSES
//# 446 "illex.fs"
)
| 13 -> (
@@ -462,7 +462,7 @@ and token lexbuf =
)
| 16 -> (
//# 125 "src/Compiler/AbstractIL/illex.fsl"
- VAL_INT32_ELIPSES(int32(lexemeTrimBoth lexbuf 0 3))
+ VAL_INT32_ELLIPSES(int32(lexemeTrimBoth lexbuf 0 3))
//# 466 "illex.fs"
)
| 17 -> (
diff --git a/src/fcs-fable/codegen/ilpars.fs b/src/fcs-fable/codegen/ilpars.fs
index 0744b083a3..5b052f1e40 100644
--- a/src/fcs-fable/codegen/ilpars.fs
+++ b/src/fcs-fable/codegen/ilpars.fs
@@ -9,6 +9,7 @@ open Internal.Utilities.Text.Parsing.ParseHelpers
#nowarn "1182" // the generated code often has unused variable "parseState"
+#nowarn "3261" // the generated code would need to properly annotate nulls, e.g. changing System.Object to `obj|null`
open Internal.Utilities.Library
@@ -24,7 +25,7 @@ let resolveCurrentMethodSpecScope obj =
resolveMethodSpecScope obj mkILEmptyGenericParams
-//# 27 "ilpars.fs"
+//# 28 "ilpars.fs"
// This type is the type of tokens accepted by the parser
type token =
| VOID
@@ -62,7 +63,7 @@ type token =
| FIELD
| EXPLICIT
| EOF
- | ELIPSES
+ | ELLIPSES
| DOT
| DEFAULT
| DCOLON
@@ -89,7 +90,7 @@ type token =
| INSTR_I32_I32 of (Int32Int32Instr)
| INSTR_I of (Int32Instr)
| VAL_FLOAT64 of (double)
- | VAL_INT32_ELIPSES of (int32)
+ | VAL_INT32_ELLIPSES of (int32)
| VAL_INT64 of (int64)
// This type is used to give symbolic names to token indexes, useful for error messages
type tokenId =
@@ -128,7 +129,7 @@ type tokenId =
| TOKEN_FIELD
| TOKEN_EXPLICIT
| TOKEN_EOF
- | TOKEN_ELIPSES
+ | TOKEN_ELLIPSES
| TOKEN_DOT
| TOKEN_DEFAULT
| TOKEN_DCOLON
@@ -155,7 +156,7 @@ type tokenId =
| TOKEN_INSTR_I32_I32
| TOKEN_INSTR_I
| TOKEN_VAL_FLOAT64
- | TOKEN_VAL_INT32_ELIPSES
+ | TOKEN_VAL_INT32_ELLIPSES
| TOKEN_VAL_INT64
| TOKEN_end_of_input
| TOKEN_error
@@ -226,7 +227,7 @@ let tagOfToken (t:token) =
| FIELD -> 32
| EXPLICIT -> 33
| EOF -> 34
- | ELIPSES -> 35
+ | ELLIPSES -> 35
| DOT -> 36
| DEFAULT -> 37
| DCOLON -> 38
@@ -253,7 +254,7 @@ let tagOfToken (t:token) =
| INSTR_I32_I32 _ -> 59
| INSTR_I _ -> 60
| VAL_FLOAT64 _ -> 61
- | VAL_INT32_ELIPSES _ -> 62
+ | VAL_INT32_ELLIPSES _ -> 62
| VAL_INT64 _ -> 63
// This function maps integer indexes to symbolic token ids
@@ -294,7 +295,7 @@ let tokenTagToTokenId (tokenIdx:int) =
| 32 -> TOKEN_FIELD
| 33 -> TOKEN_EXPLICIT
| 34 -> TOKEN_EOF
- | 35 -> TOKEN_ELIPSES
+ | 35 -> TOKEN_ELLIPSES
| 36 -> TOKEN_DOT
| 37 -> TOKEN_DEFAULT
| 38 -> TOKEN_DCOLON
@@ -321,7 +322,7 @@ let tokenTagToTokenId (tokenIdx:int) =
| 59 -> TOKEN_INSTR_I32_I32
| 60 -> TOKEN_INSTR_I
| 61 -> TOKEN_VAL_FLOAT64
- | 62 -> TOKEN_VAL_INT32_ELIPSES
+ | 62 -> TOKEN_VAL_INT32_ELLIPSES
| 63 -> TOKEN_VAL_INT64
| 66 -> TOKEN_end_of_input
| 64 -> TOKEN_error
@@ -459,7 +460,7 @@ let token_to_string (t:token) =
| FIELD -> "FIELD"
| EXPLICIT -> "EXPLICIT"
| EOF -> "EOF"
- | ELIPSES -> "ELIPSES"
+ | ELLIPSES -> "ELLIPSES"
| DOT -> "DOT"
| DEFAULT -> "DEFAULT"
| DCOLON -> "DCOLON"
@@ -486,7 +487,7 @@ let token_to_string (t:token) =
| INSTR_I32_I32 _ -> "INSTR_I32_I32"
| INSTR_I _ -> "INSTR_I"
| VAL_FLOAT64 _ -> "VAL_FLOAT64"
- | VAL_INT32_ELIPSES _ -> "VAL_INT32_ELIPSES"
+ | VAL_INT32_ELLIPSES _ -> "VAL_INT32_ELLIPSES"
| VAL_INT64 _ -> "VAL_INT64"
// This function gets the data carried by a token as an object
@@ -527,7 +528,7 @@ let _fsyacc_dataOfToken (t:token) =
| FIELD -> (null : System.Object)
| EXPLICIT -> (null : System.Object)
| EOF -> (null : System.Object)
- | ELIPSES -> (null : System.Object)
+ | ELLIPSES -> (null : System.Object)
| DOT -> (null : System.Object)
| DEFAULT -> (null : System.Object)
| DCOLON -> (null : System.Object)
@@ -554,7 +555,7 @@ let _fsyacc_dataOfToken (t:token) =
| INSTR_I32_I32 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
| INSTR_I _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
| VAL_FLOAT64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
- | VAL_INT32_ELIPSES _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
+ | VAL_INT32_ELLIPSES _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
| VAL_INT64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
let _fsyacc_gotos = [| 0us;65535us;0us;65535us;1us;65535us;2us;3us;1us;65535us;0us;1us;0us;65535us;0us;65535us;2us;65535us;0us;6us;8us;9us;2us;65535us;0us;8us;8us;8us;12us;65535us;21us;33us;24us;33us;26us;33us;28us;33us;36us;32us;37us;33us;40us;33us;52us;33us;55us;33us;57us;33us;108us;33us;112us;33us;9us;65535us;21us;44us;24us;44us;26us;44us;28us;44us;52us;42us;55us;42us;57us;42us;108us;44us;112us;44us;11us;65535us;21us;39us;24us;39us;26us;39us;28us;39us;37us;38us;40us;41us;52us;39us;55us;39us;57us;39us;108us;39us;112us;39us;3us;65535us;52us;53us;55us;56us;57us;58us;6us;65535us;21us;45us;24us;45us;26us;45us;28us;45us;108us;45us;112us;45us;6us;65535us;21us;22us;24us;25us;26us;27us;28us;29us;108us;111us;112us;113us;0us;65535us;0us;65535us;8us;65535us;2us;4us;21us;46us;24us;46us;26us;46us;28us;46us;47us;48us;108us;46us;112us;46us;1us;65535us;59us;61us;2us;65535us;59us;90us;91us;92us;13us;65535us;21us;30us;24us;30us;26us;30us;28us;30us;34us;35us;36us;30us;37us;30us;40us;30us;52us;30us;55us;30us;57us;30us;108us;30us;112us;30us;9us;65535us;11us;12us;13us;14us;14us;15us;23us;24us;59us;93us;88us;89us;91us;93us;94us;95us;96us;97us;3us;65535us;16us;17us;18us;20us;104us;105us;1us;65535us;18us;19us;1us;65535us;42us;43us;1us;65535us;42us;107us;1us;65535us;108us;109us;|]
let _fsyacc_sparseGotoTableRowOffsets = [|0us;1us;2us;4us;6us;7us;8us;11us;14us;27us;37us;49us;53us;60us;67us;68us;69us;78us;80us;83us;97us;107us;111us;113us;115us;117us;|]
@@ -567,7 +568,7 @@ let _fsyacc_reductionSymbolCounts = [|1us;1us;2us;2us;1us;3us;1us;2us;0us;1us;2u
let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;4us;4us;5us;6us;6us;7us;7us;7us;7us;7us;7us;7us;7us;7us;7us;8us;8us;8us;9us;9us;10us;10us;11us;12us;13us;13us;13us;14us;14us;14us;15us;15us;15us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;17us;17us;18us;18us;18us;18us;18us;18us;19us;19us;20us;21us;22us;22us;23us;23us;24us;25us;25us;|]
let _fsyacc_immediateActions = [|65535us;49152us;65535us;49152us;65535us;16386us;65535us;16387us;65535us;16391us;16393us;65535us;16394us;65535us;65535us;16395us;65535us;16396us;65535us;16397us;16398us;65535us;16399us;65535us;65535us;16400us;65535us;16401us;65535us;16402us;16403us;16404us;65535us;65535us;65535us;16405us;65535us;65535us;16406us;16407us;65535us;16409us;65535us;16410us;16411us;16412us;65535us;65535us;65535us;16414us;16421us;16422us;65535us;16423us;65535us;65535us;16424us;65535us;16425us;65535us;16426us;65535us;16427us;16428us;16429us;16430us;16431us;16432us;16433us;16434us;16435us;16436us;16437us;16438us;65535us;16439us;16440us;16441us;16442us;16443us;16444us;16445us;16446us;65535us;16447us;65535us;16448us;16449us;65535us;16450us;16451us;65535us;16452us;65535us;65535us;16455us;65535us;16457us;16459us;16460us;16461us;16462us;16463us;65535us;65535us;65535us;16464us;16466us;65535us;65535us;16467us;16468us;65535us;16469us;|]
let _fsyacc_reductions = lazy [|
-//# 570 "ilpars.fs"
+//# 571 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILInstr array in
Microsoft.FSharp.Core.Operators.box
@@ -576,7 +577,7 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__startilInstrs));
-//# 579 "ilpars.fs"
+//# 580 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType in
Microsoft.FSharp.Core.Operators.box
@@ -585,108 +586,108 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__startilType));
-//# 588 "ilpars.fs"
+//# 589 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 102 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 103 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScope _1 []
)
-//# 102 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 103 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType));
-//# 599 "ilpars.fs"
+//# 600 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_instrs2 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 106 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 107 "src/Compiler/AbstractIL/ilpars.fsy"
Array.ofList _1
)
-//# 106 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 107 "src/Compiler/AbstractIL/ilpars.fsy"
: ILInstr array));
-//# 610 "ilpars.fs"
+//# 611 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 110 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 111 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 110 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 111 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_compQstring));
-//# 621 "ilpars.fs"
+//# 622 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_compQstring in
let _3 = parseState.GetInput(3) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 111 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 112 "src/Compiler/AbstractIL/ilpars.fsy"
_1 + _3
)
-//# 111 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 112 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_compQstring));
-//# 633 "ilpars.fs"
+//# 634 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 113 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 114 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 113 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 114 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_methodName));
-//# 644 "ilpars.fs"
+//# 645 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_instr in
let _2 = parseState.GetInput(2) :?> 'gentype_instrs2 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 117 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 118 "src/Compiler/AbstractIL/ilpars.fsy"
_1 :: _2
)
-//# 117 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 118 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instrs2));
-//# 656 "ilpars.fs"
+//# 657 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 118 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 119 "src/Compiler/AbstractIL/ilpars.fsy"
[]
)
-//# 118 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 119 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instrs2));
-//# 666 "ilpars.fs"
+//# 667 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> NoArgInstr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 122 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 123 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 ())
)
-//# 122 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 123 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 677 "ilpars.fs"
+//# 678 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Int32Instr in
let _2 = parseState.GetInput(2) :?> 'gentype_int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 124 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 125 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 _2)
)
-//# 124 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 125 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 689 "ilpars.fs"
+//# 690 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Int32Int32Instr in
let _2 = parseState.GetInput(2) :?> 'gentype_int32 in
@@ -694,60 +695,60 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 126 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 127 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 (_2,_3))
)
-//# 126 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 127 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 702 "ilpars.fs"
+//# 703 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Int64Instr in
let _2 = parseState.GetInput(2) :?> 'gentype_int64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 128 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 129 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 _2)
)
-//# 128 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 129 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 714 "ilpars.fs"
+//# 715 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> DoubleInstr in
let _2 = parseState.GetInput(2) :?> 'gentype_float64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 130 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 131 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 (ILConst.R8 _2))
)
-//# 130 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 131 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 726 "ilpars.fs"
+//# 727 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> DoubleInstr in
let _2 = parseState.GetInput(2) :?> 'gentype_int64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 132 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 133 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 (ILConst.R8 (float _2)))
)
-//# 132 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 133 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 738 "ilpars.fs"
+//# 739 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> TypeInstr in
let _2 = parseState.GetInput(2) :?> 'gentype_typSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 134 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 135 "src/Compiler/AbstractIL/ilpars.fsy"
_1 (resolveCurrentMethodSpecScope _2)
)
-//# 134 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 135 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 750 "ilpars.fs"
+//# 751 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> IntTypeInstr in
let _2 = parseState.GetInput(2) :?> 'gentype_int32 in
@@ -755,768 +756,768 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 136 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 137 "src/Compiler/AbstractIL/ilpars.fsy"
_1 ( _2,resolveCurrentMethodSpecScope _3)
)
-//# 136 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 137 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 763 "ilpars.fs"
+//# 764 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ValueTypeInstr in
let _2 = parseState.GetInput(2) :?> 'gentype_typSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 138 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 139 "src/Compiler/AbstractIL/ilpars.fsy"
_1 (resolveCurrentMethodSpecScope _2)
)
-//# 138 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 139 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 775 "ilpars.fs"
+//# 776 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> TokenInstr in
let _2 = parseState.GetInput(2) :?> 'gentype_typSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 140 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 141 "src/Compiler/AbstractIL/ilpars.fsy"
(_1 (ILToken.ILType (resolveCurrentMethodSpecScope _2)))
)
-//# 140 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 141 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_instr));
-//# 787 "ilpars.fs"
+//# 788 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_id in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 147 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 148 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 147 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 148 "src/Compiler/AbstractIL/ilpars.fsy"
: string));
-//# 798 "ilpars.fs"
+//# 799 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 149 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 150 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 149 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 150 "src/Compiler/AbstractIL/ilpars.fsy"
: string));
-//# 809 "ilpars.fs"
+//# 810 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_id in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 151 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 152 "src/Compiler/AbstractIL/ilpars.fsy"
_1 + "." + _3
)
-//# 151 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 152 "src/Compiler/AbstractIL/ilpars.fsy"
: string));
-//# 821 "ilpars.fs"
+//# 822 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> string in
let _4 = parseState.GetInput(4) :?> 'gentype_slashedName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 155 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 156 "src/Compiler/AbstractIL/ilpars.fsy"
let (enc,nm) = _4
ILScopeRef.PrimaryAssembly, enc, nm
)
-//# 155 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 156 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_className));
-//# 834 "ilpars.fs"
+//# 835 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_slashedName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 158 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 159 "src/Compiler/AbstractIL/ilpars.fsy"
let enc, nm = _1 in (ILScopeRef.Local, enc, nm)
)
-//# 158 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 159 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_className));
-//# 845 "ilpars.fs"
+//# 846 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 162 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 163 "src/Compiler/AbstractIL/ilpars.fsy"
([],_1)
)
-//# 162 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 163 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_slashedName));
-//# 856 "ilpars.fs"
+//# 857 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_slashedName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 164 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 165 "src/Compiler/AbstractIL/ilpars.fsy"
let (enc,nm) = _3 in (_1 :: enc, nm)
)
-//# 164 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 165 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_slashedName));
-//# 868 "ilpars.fs"
+//# 869 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_className in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_actual_tyargs in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 168 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 169 "src/Compiler/AbstractIL/ilpars.fsy"
let (a,b,c) = _1
resolveMethodSpecScopeThen _2 (fun inst ->
noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), inst))))
)
-//# 168 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 169 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_typeNameInst));
-//# 882 "ilpars.fs"
+//# 883 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_className in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 175 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 176 "src/Compiler/AbstractIL/ilpars.fsy"
let (a,b,c) = _1
noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), [])))
)
-//# 175 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 176 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_typeName));
-//# 894 "ilpars.fs"
+//# 895 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 181 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 182 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun tref ->
noMethodSpecScope (mkILBoxedType tref))
)
-//# 181 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 182 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_typSpec));
-//# 906 "ilpars.fs"
+//# 907 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 184 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 185 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 184 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 185 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_typSpec));
-//# 917 "ilpars.fs"
+//# 918 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> ILType ResolvedAtMethodSpecScope in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 186 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 187 "src/Compiler/AbstractIL/ilpars.fsy"
_2
)
-//# 186 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 187 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_typSpec));
-//# 928 "ilpars.fs"
+//# 929 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_callKind in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 191 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 192 "src/Compiler/AbstractIL/ilpars.fsy"
Callconv (ILThisConvention.Instance,_2)
)
-//# 191 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 192 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_callConv));
-//# 939 "ilpars.fs"
+//# 940 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_callKind in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 193 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 194 "src/Compiler/AbstractIL/ilpars.fsy"
Callconv (ILThisConvention.InstanceExplicit,_2)
)
-//# 193 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 194 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_callConv));
-//# 950 "ilpars.fs"
+//# 951 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_callKind in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 195 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 196 "src/Compiler/AbstractIL/ilpars.fsy"
Callconv (ILThisConvention.Static,_1)
)
-//# 195 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 196 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_callConv));
-//# 961 "ilpars.fs"
+//# 962 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 199 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 200 "src/Compiler/AbstractIL/ilpars.fsy"
ILArgConvention.Default
)
-//# 199 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 200 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_callKind));
-//# 971 "ilpars.fs"
+//# 972 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 201 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 202 "src/Compiler/AbstractIL/ilpars.fsy"
ILArgConvention.Default
)
-//# 201 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 202 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_callKind));
-//# 981 "ilpars.fs"
+//# 982 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 203 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 204 "src/Compiler/AbstractIL/ilpars.fsy"
ILArgConvention.VarArg
)
-//# 203 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 204 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_callKind));
-//# 991 "ilpars.fs"
+//# 992 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 212 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 213 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_String
)
-//# 212 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 213 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1001 "ilpars.fs"
+//# 1002 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 214 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 215 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Object
)
-//# 214 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 215 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1011 "ilpars.fs"
+//# 1012 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeNameInst in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 216 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 217 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _2 (fun tspec ->
noMethodSpecScope (mkILBoxedType tspec))
)
-//# 216 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 217 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1023 "ilpars.fs"
+//# 1024 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_typeNameInst in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 219 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 220 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _3 (fun tspec ->
noMethodSpecScope (ILType.Value tspec))
)
-//# 219 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 220 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1035 "ilpars.fs"
+//# 1036 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeNameInst in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 222 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 223 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _2 (fun tspec ->
noMethodSpecScope (ILType.Value tspec))
)
-//# 222 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 223 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1047 "ilpars.fs"
+//# 1048 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 225 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 226 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (mkILArr1DTy ty))
)
-//# 225 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 226 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1058 "ilpars.fs"
+//# 1059 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in
let _3 = parseState.GetInput(3) :?> 'gentype_bounds1 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 227 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 228 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (mkILArrTy (ty,ILArrayShape _3)))
)
-//# 227 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 228 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1070 "ilpars.fs"
+//# 1071 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 229 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 230 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (ILType.Byref ty))
)
-//# 229 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 230 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1081 "ilpars.fs"
+//# 1082 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 231 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 232 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (ILType.Ptr ty))
)
-//# 231 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 232 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1092 "ilpars.fs"
+//# 1093 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 233 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 234 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Char
)
-//# 233 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 234 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1102 "ilpars.fs"
+//# 1103 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 235 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 236 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope ILType.Void
)
-//# 235 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 236 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1112 "ilpars.fs"
+//# 1113 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 237 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 238 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Bool
)
-//# 237 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 238 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1122 "ilpars.fs"
+//# 1123 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 239 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 240 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_SByte
)
-//# 239 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 240 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1132 "ilpars.fs"
+//# 1133 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 241 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 242 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Int16
)
-//# 241 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 242 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1142 "ilpars.fs"
+//# 1143 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 243 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 244 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Int32
)
-//# 243 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 244 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1152 "ilpars.fs"
+//# 1153 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 245 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 246 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Int64
)
-//# 245 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 246 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1162 "ilpars.fs"
+//# 1163 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 247 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 248 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Single
)
-//# 247 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 248 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1172 "ilpars.fs"
+//# 1173 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 249 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 250 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Double
)
-//# 249 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 250 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1182 "ilpars.fs"
+//# 1183 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 251 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 252 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Byte
)
-//# 251 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 252 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1192 "ilpars.fs"
+//# 1193 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 253 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 254 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt16
)
-//# 253 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 254 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1202 "ilpars.fs"
+//# 1203 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 255 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 256 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt32
)
-//# 255 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 256 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1212 "ilpars.fs"
+//# 1213 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 257 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 258 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt64
)
-//# 257 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 258 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1222 "ilpars.fs"
+//# 1223 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 259 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 260 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_Byte
)
-//# 259 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 260 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1232 "ilpars.fs"
+//# 1233 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 261 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 262 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt16
)
-//# 261 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 262 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1242 "ilpars.fs"
+//# 1243 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 263 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 264 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt32
)
-//# 263 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 264 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1252 "ilpars.fs"
+//# 1253 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 265 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 266 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt64
)
-//# 265 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 266 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1262 "ilpars.fs"
+//# 1263 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 267 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 268 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_IntPtr
)
-//# 267 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 268 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1272 "ilpars.fs"
+//# 1273 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 269 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 270 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UIntPtr
)
-//# 269 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 270 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1282 "ilpars.fs"
+//# 1283 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 271 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 272 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope PrimaryAssemblyILGlobals.typ_UIntPtr
)
-//# 271 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 272 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1292 "ilpars.fs"
+//# 1293 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 274 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 275 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope (ILType.TypeVar (uint16 ( _2)))
)
-//# 274 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 275 "src/Compiler/AbstractIL/ilpars.fsy"
: ILType ResolvedAtMethodSpecScope));
-//# 1303 "ilpars.fs"
+//# 1304 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_bound in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 279 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 280 "src/Compiler/AbstractIL/ilpars.fsy"
[_1]
)
-//# 279 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 280 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bounds1));
-//# 1314 "ilpars.fs"
+//# 1315 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_bounds1 in
let _3 = parseState.GetInput(3) :?> 'gentype_bound in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 281 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 282 "src/Compiler/AbstractIL/ilpars.fsy"
_1 @ [_3]
)
-//# 281 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 282 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bounds1));
-//# 1326 "ilpars.fs"
+//# 1327 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 285 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 286 "src/Compiler/AbstractIL/ilpars.fsy"
(None, None)
)
-//# 285 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 286 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bound));
-//# 1336 "ilpars.fs"
+//# 1337 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 287 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 288 "src/Compiler/AbstractIL/ilpars.fsy"
(None, Some _1)
)
-//# 287 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 288 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bound));
-//# 1347 "ilpars.fs"
+//# 1348 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_int32 in
let _3 = parseState.GetInput(3) :?> 'gentype_int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 289 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 290 "src/Compiler/AbstractIL/ilpars.fsy"
(Some _1, Some (_3 - _1 + 1))
)
-//# 289 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 290 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bound));
-//# 1359 "ilpars.fs"
+//# 1360 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 291 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 292 "src/Compiler/AbstractIL/ilpars.fsy"
(Some _1, None)
)
-//# 291 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 292 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bound));
-//# 1370 "ilpars.fs"
+//# 1371 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 in
let _2 = parseState.GetInput(2) :?> 'gentype_int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 298 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 299 "src/Compiler/AbstractIL/ilpars.fsy"
(Some _1, Some (_2 - _1 + 1))
)
-//# 298 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 299 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bound));
-//# 1382 "ilpars.fs"
+//# 1383 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 300 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 301 "src/Compiler/AbstractIL/ilpars.fsy"
(Some _1, None)
)
-//# 300 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 301 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_bound));
-//# 1393 "ilpars.fs"
+//# 1394 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 304 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 305 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 304 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 305 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_id));
-//# 1404 "ilpars.fs"
+//# 1405 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 306 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 307 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 306 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 307 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_id));
-//# 1415 "ilpars.fs"
+//# 1416 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 310 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 311 "src/Compiler/AbstractIL/ilpars.fsy"
int32 _1
)
-//# 310 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 311 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_int32));
-//# 1426 "ilpars.fs"
+//# 1427 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 314 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 315 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 314 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 315 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_int64));
-//# 1437 "ilpars.fs"
+//# 1438 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> double in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 318 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 319 "src/Compiler/AbstractIL/ilpars.fsy"
_1
)
-//# 318 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 319 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_float64));
-//# 1448 "ilpars.fs"
+//# 1449 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_int64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 320 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 321 "src/Compiler/AbstractIL/ilpars.fsy"
System.BitConverter.Int64BitsToDouble _3
)
-//# 320 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 321 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_float64));
-//# 1459 "ilpars.fs"
+//# 1460 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 324 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 325 "src/Compiler/AbstractIL/ilpars.fsy"
noMethodSpecScope []
)
-//# 324 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 325 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_opt_actual_tyargs));
-//# 1469 "ilpars.fs"
+//# 1470 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_actual_tyargs in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 326 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 327 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun res ->
noMethodSpecScope res)
)
-//# 326 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 327 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_opt_actual_tyargs));
-//# 1481 "ilpars.fs"
+//# 1482 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_actualTypSpecs in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 331 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 332 "src/Compiler/AbstractIL/ilpars.fsy"
_2
)
-//# 331 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 332 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_actual_tyargs));
-//# 1492 "ilpars.fs"
+//# 1493 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 335 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 336 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun res ->
noMethodSpecScope [ res])
)
-//# 335 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 336 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_actualTypSpecs));
-//# 1504 "ilpars.fs"
+//# 1505 "ilpars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_actualTypSpecs in
let _3 = parseState.GetInput(3) :?> 'gentype_typSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 338 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 339 "src/Compiler/AbstractIL/ilpars.fsy"
resolveMethodSpecScopeThen _1 (fun x ->
resolveMethodSpecScopeThen _3 (fun y ->
noMethodSpecScope (x @ [ y])))
)
-//# 338 "src/Compiler/AbstractIL/ilpars.fsy"
+//# 339 "src/Compiler/AbstractIL/ilpars.fsy"
: 'gentype_actualTypSpecs));
|]
-//# 1519 "ilpars.fs"
+//# 1520 "ilpars.fs"
let tables : Internal.Utilities.Text.Parsing.Tables<_> =
{ reductions = _fsyacc_reductions.Value;
endOfInputTag = _fsyacc_endOfInputTag;
diff --git a/src/fcs-fable/codegen/ilpars.fsi b/src/fcs-fable/codegen/ilpars.fsi
index 35bd74ce2d..7165a93c72 100644
--- a/src/fcs-fable/codegen/ilpars.fsi
+++ b/src/fcs-fable/codegen/ilpars.fsi
@@ -38,7 +38,7 @@ type token =
| FIELD
| EXPLICIT
| EOF
- | ELIPSES
+ | ELLIPSES
| DOT
| DEFAULT
| DCOLON
@@ -65,7 +65,7 @@ type token =
| INSTR_I32_I32 of (Int32Int32Instr)
| INSTR_I of (Int32Instr)
| VAL_FLOAT64 of (double)
- | VAL_INT32_ELIPSES of (int32)
+ | VAL_INT32_ELLIPSES of (int32)
| VAL_INT64 of (int64)
type tokenId =
| TOKEN_VOID
@@ -103,7 +103,7 @@ type tokenId =
| TOKEN_FIELD
| TOKEN_EXPLICIT
| TOKEN_EOF
- | TOKEN_ELIPSES
+ | TOKEN_ELLIPSES
| TOKEN_DOT
| TOKEN_DEFAULT
| TOKEN_DCOLON
@@ -130,7 +130,7 @@ type tokenId =
| TOKEN_INSTR_I32_I32
| TOKEN_INSTR_I
| TOKEN_VAL_FLOAT64
- | TOKEN_VAL_INT32_ELIPSES
+ | TOKEN_VAL_INT32_ELLIPSES
| TOKEN_VAL_INT64
| TOKEN_end_of_input
| TOKEN_error
diff --git a/src/fcs-fable/codegen/lex.fs b/src/fcs-fable/codegen/lex.fs
index dddb25db9b..f34e0f36c5 100644
--- a/src/fcs-fable/codegen/lex.fs
+++ b/src/fcs-fable/codegen/lex.fs
@@ -5,6 +5,7 @@ open Internal.Utilities.Text.Lexing
open FSharp.Compiler.Parser
open FSharp.Compiler.Text
open FSharp.Compiler.ParseHelpers
+open FSharp.Compiler.LexerStore
//# 3 "src/Compiler/lex.fsl"
@@ -184,10 +185,14 @@ let startString args (lexbuf: UnicodeLexing.Lexbuf) =
if kind.IsInterpolated then
fail args lexbuf (FSComp.SR.lexByteStringMayNotBeInterpolated()) ()
BYTEARRAY (Lexhelp.stringBufferAsBytes buf, synByteStringKind, cont)
- elif Lexhelp.stringBufferIsBytes buf then
- BYTEARRAY (Lexhelp.stringBufferAsBytes buf, synByteStringKind, cont)
else
- fail args lexbuf (FSComp.SR.lexByteArrayCannotEncode()) ()
+ match Lexhelp.errorsInByteStringBuffer buf with
+ | Some (largerThanOneByte, largerThan127) ->
+ if largerThanOneByte > 0 then
+ fail args lexbuf (FSComp.SR.lexByteArrayCannotEncode(largerThanOneByte)) ()
+ if largerThan127 > 0 then
+ warning (Error(FSComp.SR.lexByteArrayOutisdeAscii(largerThan127), lexbuf.LexemeRange))
+ | None -> ()
BYTEARRAY (Lexhelp.stringBufferAsBytes buf, synByteStringKind, cont)
elif kind.IsInterpolated then
let s = Lexhelp.stringBufferAsString buf
@@ -232,7 +237,7 @@ let trySaveXmlDoc (lexbuf: LexBuffer) (buff: (range * StringBuilder) optio
| None -> ()
| Some (start, sb) ->
let xmlCommentLineRange = mkFileIndexRange start.FileIndex start.Start (posOfLexPosition lexbuf.StartPos)
- LexbufLocalXmlDocStore.SaveXmlDocLine (lexbuf, sb.ToString(), xmlCommentLineRange)
+ XmlDocStore.SaveXmlDocLine (lexbuf, sb.ToString(), xmlCommentLineRange)
let tryAppendXmlDoc (buff: (range * StringBuilder) option) (s:string) =
match buff with
@@ -241,9 +246,8 @@ let tryAppendXmlDoc (buff: (range * StringBuilder) option) (s:string) =
// Utilities for parsing #if/#else/#endif
-let shouldStartLine args lexbuf (m:range) err tok =
- if (m.StartColumn <> 0) then fail args lexbuf err tok
- else tok
+let shouldStartLine args lexbuf (m:range) err =
+ if (m.StartColumn <> 0) then fail args lexbuf err ()
let shouldStartFile args lexbuf (m:range) err tok =
if (m.StartColumn <> 0 || m.StartLine <> 1) then fail args lexbuf err tok
@@ -268,7 +272,7 @@ let evalFloat args lexbuf =
fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0f
-//# 271 "lex.fs"
+//# 275 "lex.fs"
let trans : uint16[] array =
[|
(* State 0 *)
@@ -1076,27 +1080,27 @@ let trans : uint16[] array =
(* State 401 *)
[| 448us;448us;448us;448us;448us;448us;448us;448us;448us;419us;421us;448us;448us;422us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;418us;446us;415us;424us;416us;442us;426us;413us;414us;428us;429us;444us;430us;431us;433us;420us;412us;411us;411us;411us;411us;411us;411us;411us;411us;411us;434us;436us;425us;437us;435us;432us;417us;402us;402us;402us;402us;403us;404us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;438us;448us;440us;445us;402us;423us;405us;402us;402us;406us;402us;402us;402us;402us;402us;402us;402us;402us;407us;402us;402us;402us;402us;408us;402us;402us;402us;402us;409us;402us;410us;402us;439us;427us;441us;443us;448us;402us;402us;402us;402us;402us;448us;448us;448us;411us;402us;448us;448us;448us;448us;448us;448us;447us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;449us;|];
(* State 402 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 403 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;822us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;824us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 404 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;819us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;821us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 405 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;816us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;818us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 406 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;814us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;816us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 407 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;809us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;811us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 408 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;803us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;805us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 409 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;798us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;800us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 410 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;793us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;795us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 411 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;713us;713us;713us;713us;713us;713us;713us;713us;713us;713us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;722us;723us;725us;726us;725us;726us;726us;719us;724us;725us;726us;726us;725us;725us;726us;726us;720us;726us;726us;726us;726us;725us;65535us;65535us;65535us;65535us;714us;65535us;726us;726us;726us;726us;722us;723us;726us;726us;726us;726us;726us;718us;724us;721us;726us;726us;726us;726us;716us;726us;715us;726us;726us;726us;712us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;713us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;719us;65535us;715us;715us;715us;715us;715us;715us;715us;715us;715us;715us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;724us;725us;727us;728us;727us;728us;728us;721us;726us;727us;728us;728us;727us;727us;728us;728us;722us;728us;728us;728us;728us;727us;65535us;65535us;65535us;65535us;716us;65535us;728us;728us;728us;728us;724us;725us;728us;728us;728us;728us;728us;720us;726us;723us;728us;728us;728us;728us;718us;728us;717us;728us;728us;728us;714us;728us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;65535us;715us;728us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 412 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;713us;713us;713us;713us;713us;713us;713us;713us;713us;713us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;768us;726us;726us;722us;723us;725us;726us;725us;726us;726us;719us;724us;725us;767us;726us;725us;725us;726us;726us;720us;726us;726us;766us;726us;725us;65535us;65535us;65535us;65535us;714us;65535us;726us;768us;726us;726us;722us;723us;726us;726us;726us;726us;726us;718us;724us;721us;767us;726us;726us;726us;716us;726us;715us;726us;726us;766us;712us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;713us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;719us;65535us;715us;715us;715us;715us;715us;715us;715us;715us;715us;715us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;770us;728us;728us;724us;725us;727us;728us;727us;728us;728us;721us;726us;727us;769us;728us;727us;727us;728us;728us;722us;728us;728us;768us;728us;727us;65535us;65535us;65535us;65535us;716us;65535us;728us;770us;728us;728us;724us;725us;728us;728us;728us;728us;728us;720us;726us;723us;769us;728us;728us;728us;718us;728us;717us;728us;728us;768us;714us;728us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;65535us;715us;728us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 413 *)
[| 682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;682us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;683us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;|];
(* State 414 *)
@@ -1636,15 +1640,15 @@ let trans : uint16[] array =
(* State 681 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 682 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;710us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;712us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 683 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;684us;684us;684us;684us;684us;684us;684us;684us;684us;684us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;687us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;682us;682us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;682us;65535us;682us;685us;682us;65535us;686us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;684us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 684 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;706us;706us;706us;706us;706us;706us;706us;706us;706us;706us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;706us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;708us;708us;708us;708us;708us;708us;708us;708us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 685 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;700us;700us;700us;700us;700us;700us;700us;700us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;700us;700us;700us;700us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;700us;700us;700us;700us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 686 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;697us;697us;697us;697us;697us;697us;697us;697us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;697us;697us;697us;697us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;697us;697us;697us;697us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 687 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;688us;688us;688us;688us;688us;688us;688us;688us;688us;688us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;688us;688us;688us;688us;688us;688us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;688us;688us;688us;688us;688us;688us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 688 *)
@@ -1664,396 +1668,400 @@ let trans : uint16[] array =
(* State 695 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;696us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 696 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 697 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 698 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;699us;699us;699us;699us;699us;699us;699us;699us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;699us;699us;699us;699us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;699us;699us;699us;699us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 699 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 700 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;701us;701us;701us;701us;701us;701us;701us;701us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;701us;701us;701us;701us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;701us;701us;701us;701us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 701 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 702 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;703us;703us;703us;703us;703us;703us;703us;703us;703us;703us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;703us;703us;703us;703us;703us;703us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;703us;703us;703us;703us;703us;703us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 703 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;704us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;704us;704us;704us;704us;704us;704us;704us;704us;704us;704us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;704us;704us;704us;704us;704us;704us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;704us;704us;704us;704us;704us;704us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 704 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;705us;705us;705us;705us;705us;705us;705us;705us;705us;705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;705us;705us;705us;705us;705us;705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;705us;705us;705us;705us;705us;705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 705 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;706us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 706 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;707us;707us;707us;707us;707us;707us;707us;707us;707us;707us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;707us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;707us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 707 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 708 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;709us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;709us;709us;709us;709us;709us;709us;709us;709us;709us;709us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;709us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 709 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;710us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 710 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;711us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 711 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 712 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;713us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 713 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;756us;756us;756us;756us;756us;756us;756us;756us;756us;756us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;764us;765us;740us;765us;740us;740us;761us;739us;765us;740us;740us;765us;765us;740us;740us;762us;740us;740us;740us;740us;765us;65535us;65535us;65535us;65535us;757us;65535us;740us;740us;740us;740us;746us;764us;740us;740us;740us;740us;740us;760us;739us;763us;740us;740us;740us;740us;759us;740us;758us;740us;740us;740us;755us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;756us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 714 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;753us;753us;753us;753us;753us;753us;753us;753us;753us;753us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;754us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;753us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 715 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;751us;727us;752us;727us;727us;727us;727us;750us;727us;727us;727us;727us;727us;749us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;719us;65535us;758us;758us;758us;758us;758us;758us;758us;758us;758us;758us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;748us;766us;767us;742us;767us;742us;742us;763us;741us;767us;742us;742us;767us;767us;742us;742us;764us;742us;742us;742us;742us;767us;65535us;65535us;65535us;65535us;759us;65535us;742us;742us;742us;742us;748us;766us;742us;742us;742us;742us;742us;762us;741us;765us;742us;742us;742us;742us;761us;742us;760us;742us;742us;742us;757us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;758us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 716 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;755us;755us;755us;755us;755us;755us;755us;755us;755us;755us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;756us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;755us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 717 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;743us;743us;743us;743us;743us;743us;743us;743us;743us;743us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;722us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;726us;65535us;726us;726us;726us;726us;722us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;743us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;743us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;753us;729us;754us;729us;729us;729us;729us;752us;729us;729us;729us;729us;729us;751us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 718 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 719 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;744us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;724us;733us;728us;728us;728us;728us;728us;728us;726us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;728us;65535us;728us;728us;728us;728us;724us;733us;728us;728us;728us;728us;728us;728us;726us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;65535us;745us;728us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 720 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 721 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 722 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;729us;65535us;729us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;728us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;743us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 723 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 724 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;731us;65535us;731us;65535us;65535us;730us;730us;730us;730us;730us;730us;730us;730us;730us;730us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;730us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 725 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 726 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 727 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 728 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 729 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;730us;730us;730us;730us;730us;730us;730us;730us;730us;730us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;730us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 730 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;732us;732us;732us;732us;732us;732us;732us;732us;732us;732us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;733us;65535us;726us;726us;726us;726us;726us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;732us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;739us;739us;739us;739us;739us;739us;739us;739us;739us;739us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;740us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;739us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 731 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;732us;732us;732us;732us;732us;732us;732us;732us;732us;732us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;732us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 732 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;728us;733us;728us;728us;728us;728us;728us;728us;726us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;735us;65535us;728us;728us;728us;728us;728us;733us;728us;728us;728us;728us;728us;728us;726us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;65535us;734us;728us;65535us;65535us;65535us;65535us;65535us;728us;65535us;65535us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 733 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;735us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;734us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 734 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;739us;739us;739us;739us;739us;739us;739us;739us;739us;739us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;740us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;739us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 735 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;735us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;734us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;736us;736us;736us;736us;736us;736us;736us;736us;736us;736us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;737us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;736us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 736 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;739us;739us;739us;739us;739us;739us;739us;739us;739us;739us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;740us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;739us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 737 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;736us;736us;736us;736us;736us;736us;736us;736us;736us;736us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;737us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;736us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 738 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;735us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;734us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 739 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;739us;739us;739us;739us;739us;739us;739us;739us;739us;739us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;740us;65535us;742us;742us;742us;742us;742us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;739us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 740 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;736us;736us;736us;736us;736us;736us;736us;736us;736us;736us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;737us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;736us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 741 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 742 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 743 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;744us;744us;744us;744us;744us;744us;744us;744us;744us;744us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;745us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;744us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 744 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;744us;744us;744us;744us;744us;744us;744us;744us;744us;744us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;745us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;744us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 745 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;747us;747us;747us;747us;747us;747us;747us;747us;747us;747us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;748us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;747us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;746us;746us;746us;746us;746us;746us;746us;746us;746us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;748us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;747us;65535us;742us;742us;742us;742us;748us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;746us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 746 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;729us;65535us;729us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;728us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;746us;746us;746us;746us;746us;746us;746us;746us;746us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;748us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;747us;65535us;742us;742us;742us;742us;748us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;746us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 747 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;744us;744us;744us;744us;744us;744us;744us;744us;744us;744us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;745us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;744us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;749us;749us;749us;749us;749us;749us;749us;749us;749us;749us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;750us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;749us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 748 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;747us;747us;747us;747us;747us;747us;747us;747us;747us;747us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;748us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;747us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;731us;65535us;731us;65535us;65535us;730us;730us;730us;730us;730us;730us;730us;730us;730us;730us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;730us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 749 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;746us;746us;746us;746us;746us;746us;746us;746us;746us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;748us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;747us;65535us;742us;742us;742us;742us;748us;738us;742us;742us;742us;742us;742us;742us;741us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;746us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 750 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;749us;749us;749us;749us;749us;749us;749us;749us;749us;749us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;750us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;749us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 751 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 752 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 753 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;756us;756us;756us;756us;756us;756us;756us;756us;756us;756us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;764us;765us;740us;765us;740us;740us;761us;739us;765us;740us;740us;765us;765us;740us;740us;762us;740us;740us;740us;740us;765us;65535us;65535us;65535us;65535us;757us;65535us;740us;740us;740us;740us;746us;764us;740us;740us;740us;740us;740us;760us;739us;763us;740us;740us;740us;740us;759us;740us;758us;740us;740us;740us;755us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;756us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 754 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;753us;753us;753us;753us;753us;753us;753us;753us;753us;753us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;754us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;753us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 755 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;719us;65535us;758us;758us;758us;758us;758us;758us;758us;758us;758us;758us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;748us;766us;767us;742us;767us;742us;742us;763us;741us;767us;742us;742us;767us;767us;742us;742us;764us;742us;742us;742us;742us;767us;65535us;65535us;65535us;65535us;759us;65535us;742us;742us;742us;742us;748us;766us;742us;742us;742us;742us;742us;762us;741us;765us;742us;742us;742us;742us;761us;742us;760us;742us;742us;742us;757us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;758us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 756 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;756us;756us;756us;756us;756us;756us;756us;756us;756us;756us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;764us;765us;740us;765us;740us;740us;761us;739us;765us;740us;740us;765us;765us;740us;740us;762us;740us;740us;740us;740us;765us;65535us;65535us;65535us;65535us;757us;65535us;740us;740us;740us;740us;746us;764us;740us;740us;740us;740us;740us;760us;739us;763us;740us;740us;740us;740us;759us;740us;758us;740us;740us;740us;755us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;756us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;755us;755us;755us;755us;755us;755us;755us;755us;755us;755us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;756us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;755us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 757 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;753us;753us;753us;753us;753us;753us;753us;753us;753us;753us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;754us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;753us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 758 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;751us;727us;752us;727us;727us;727us;727us;750us;727us;727us;727us;727us;727us;749us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;719us;65535us;758us;758us;758us;758us;758us;758us;758us;758us;758us;758us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;748us;766us;767us;742us;767us;742us;742us;763us;741us;767us;742us;742us;767us;767us;742us;742us;764us;742us;742us;742us;742us;767us;65535us;65535us;65535us;65535us;759us;65535us;742us;742us;742us;742us;748us;766us;742us;742us;742us;742us;742us;762us;741us;765us;742us;742us;742us;742us;761us;742us;760us;742us;742us;742us;757us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;758us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 759 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;755us;755us;755us;755us;755us;755us;755us;755us;755us;755us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;756us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;755us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 760 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;743us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;753us;729us;754us;729us;729us;729us;729us;752us;729us;729us;729us;729us;729us;751us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 761 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 762 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 763 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 764 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;743us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 765 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 766 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;785us;785us;785us;785us;785us;785us;785us;785us;785us;785us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;785us;785us;785us;785us;785us;785us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;785us;785us;785us;785us;785us;785us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 767 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;780us;780us;780us;780us;780us;780us;780us;780us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 768 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;769us;769us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;787us;787us;787us;787us;787us;787us;787us;787us;787us;787us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;787us;787us;787us;787us;787us;787us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;787us;787us;787us;787us;787us;787us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 769 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;772us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;782us;782us;782us;782us;782us;782us;782us;782us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 770 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 771 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;772us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;773us;773us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;774us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 772 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;778us;778us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;779us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 773 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;773us;773us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;774us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 774 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;777us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;780us;780us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;781us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 775 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;776us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 776 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;779us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 777 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;778us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 778 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;772us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 779 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;778us;778us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;779us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;729us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 780 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;781us;781us;781us;781us;781us;781us;781us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;782us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;773us;773us;742us;742us;742us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;774us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 781 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;781us;781us;781us;781us;781us;781us;781us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;782us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;780us;780us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;781us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 782 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;784us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;742us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;784us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 783 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;781us;781us;781us;781us;781us;781us;781us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;782us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;742us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;784us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 784 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;784us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;785us;785us;785us;785us;785us;785us;785us;785us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;786us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 785 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;786us;786us;786us;786us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;787us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;742us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;784us;65535us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 786 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;786us;786us;786us;786us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;787us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;785us;785us;785us;785us;785us;785us;785us;785us;729us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;786us;65535us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 787 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 788 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;786us;786us;786us;786us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;787us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 789 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;791us;65535us;790us;790us;790us;790us;790us;790us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 790 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;742us;742us;742us;742us;742us;777us;742us;742us;742us;742us;742us;742us;742us;742us;764us;742us;742us;742us;742us;742us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;742us;742us;742us;742us;742us;776us;742us;765us;742us;742us;742us;742us;775us;742us;760us;742us;742us;742us;772us;742us;65535us;65535us;65535us;65535us;65535us;742us;742us;742us;742us;742us;742us;742us;65535us;742us;742us;65535us;65535us;65535us;65535us;65535us;742us;65535us;65535us;742us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 791 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;791us;65535us;790us;790us;790us;790us;790us;790us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;729us;729us;729us;729us;729us;729us;65535us;729us;729us;65535us;65535us;65535us;65535us;65535us;729us;65535us;65535us;729us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 792 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 793 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;794us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 794 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;795us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 795 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;796us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;796us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 796 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;797us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;797us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 797 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;798us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 798 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;799us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;799us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 799 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;800us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 800 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;801us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;801us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 801 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;802us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;802us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 802 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;803us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 803 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;804us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;804us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 804 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;805us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 805 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;806us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;806us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 806 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;807us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;807us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 807 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;808us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;808us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 808 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;809us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 809 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;810us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;810us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 810 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;811us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 811 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;812us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;812us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 812 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;813us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;813us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 813 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;814us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 814 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;815us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;815us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 815 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 816 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;817us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;817us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 817 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;818us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
- (* State 818 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ (* State 818 *)
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;819us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 819 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;820us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;820us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 820 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;821us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
- (* State 821 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ (* State 821 *)
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;822us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 822 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;823us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;823us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 823 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;824us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 824 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;825us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;825us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 825 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;826us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;826us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 826 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;827us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;827us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 827 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;828us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;793us;65535us;794us;65535us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;828us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;792us;65535us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;792us;792us;792us;792us;792us;792us;65535us;792us;792us;65535us;65535us;65535us;65535us;65535us;792us;65535us;65535us;792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 828 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;829us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;829us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 829 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;830us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;830us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 830 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;831us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;831us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 831 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;832us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;832us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 832 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;833us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;833us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 833 *)
- [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;834us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;834us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
(* State 834 *)
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;835us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ (* State 835 *)
+ [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;836us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
+ (* State 836 *)
[| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|]
-let actions : uint16[] = [|65535us;0us;1us;6us;6us;4us;4us;5us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;3us;65535us;65535us;65535us;65535us;2us;1us;65535us;4us;1us;1us;1us;1us;2us;4us;3us;4us;4us;2us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;65535us;0us;65535us;1us;2us;2us;2us;2us;3us;5us;4us;5us;5us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;0us;65535us;5us;1us;1us;1us;1us;2us;3us;5us;4us;5us;5us;3us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;0us;65535us;10us;1us;10us;10us;6us;10us;10us;8us;8us;8us;9us;10us;8us;8us;8us;7us;6us;5us;4us;3us;65535us;2us;65535us;65535us;0us;65535us;0us;3us;1us;2us;2us;2us;2us;2us;2us;2us;2us;0us;65535us;7us;1us;7us;2us;2us;2us;2us;3us;4us;5us;6us;7us;7us;5us;4us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;1us;65535us;0us;65535us;9us;1us;9us;2us;3us;3us;4us;6us;7us;8us;9us;9us;5us;4us;3us;65535us;65535us;65535us;65535us;3us;3us;65535us;3us;3us;65535us;3us;3us;65535us;2us;1us;65535us;0us;65535us;1us;3us;11us;5us;6us;7us;8us;8us;9us;10us;11us;11us;9us;8us;65535us;65535us;65535us;65535us;8us;8us;65535us;8us;8us;65535us;8us;8us;65535us;7us;4us;3us;0us;2us;65535us;16us;6us;9us;10us;11us;16us;12us;13us;13us;14us;15us;16us;16us;14us;13us;65535us;65535us;65535us;65535us;13us;13us;65535us;13us;13us;65535us;13us;13us;65535us;12us;11us;8us;7us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;5us;65535us;65535us;65535us;4us;65535us;3us;65535us;2us;0us;65535us;0us;2us;1us;2us;2us;0us;65535us;4us;4us;4us;3us;4us;4us;4us;5us;4us;3us;4us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;2us;65535us;2us;2us;2us;65535us;1us;65535us;1us;1us;1us;65535us;0us;0us;0us;4us;4us;4us;4us;4us;4us;2us;4us;2us;2us;2us;4us;1us;4us;1us;1us;1us;4us;0us;0us;0us;65535us;0us;0us;0us;0us;0us;0us;0us;0us;0us;16us;16us;73us;74us;47us;110us;118us;54us;55us;116us;59us;133us;63us;69us;100us;70us;108us;75us;76us;77us;113us;79us;83us;84us;101us;94us;96us;97us;107us;103us;109us;111us;114us;117us;118us;123us;133us;133us;134us;119us;123us;119us;118us;117us;112us;116us;99us;98us;102us;119us;93us;120us;106us;120us;89us;85us;86us;91us;92us;90us;81us;116us;119us;65535us;116us;117us;118us;119us;123us;120us;121us;122us;123us;65535us;65535us;124us;65535us;124us;124us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;124us;65535us;124us;65535us;124us;65535us;65535us;65535us;65535us;122us;121us;116us;119us;119us;116us;117us;118us;119us;119us;119us;119us;119us;119us;119us;119us;119us;119us;118us;117us;116us;115us;115us;115us;115us;82us;80us;78us;72us;104us;105us;71us;65us;95us;66us;65535us;65535us;65535us;125us;65535us;65535us;65535us;65535us;65535us;65535us;130us;65535us;130us;132us;132us;130us;130us;65535us;129us;65535us;129us;132us;132us;129us;129us;65535us;131us;128us;132us;132us;128us;128us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;127us;126us;125us;65535us;65535us;65535us;65535us;126us;126us;132us;132us;126us;65535us;65535us;65535us;64us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;63us;62us;63us;63us;61us;62us;60us;59us;58us;57us;58us;56us;57us;56us;55us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;54us;52us;118us;67us;118us;68us;88us;87us;53us;50us;119us;118us;65535us;65535us;49us;65535us;48us;65535us;51us;45us;65535us;65535us;44us;41us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;46us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;40us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;39us;65535us;65535us;37us;65535us;65535us;65535us;65535us;38us;36us;65535us;65535us;34us;35us;32us;33us;9us;16us;31us;18us;12us;26us;17us;20us;31us;22us;31us;25us;27us;30us;31us;31us;26us;65535us;26us;24us;26us;31us;26us;31us;24us;26us;31us;27us;31us;21us;15us;26us;26us;31us;31us;26us;31us;11us;14us;19us;23us;16us;31us;9us;16us;31us;18us;12us;17us;20us;31us;22us;25us;30us;31us;31us;31us;16us;10us;16us;31us;13us;17us;20us;29us;28us;16us;31us;16us;16us;31us;16us;31us;16us;16us;31us;16us;31us;0us;7us;8us;0us;0us;0us;0us;2us;0us;0us;0us;0us;6us;0us;0us;0us;0us;0us;3us;0us;0us;0us;0us;4us;0us;1us;0us;0us;5us;8us;65535us;43us;0us;0us;0us;0us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;42us;|]
+let actions : uint16[] = [|65535us;0us;1us;6us;6us;4us;4us;5us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;3us;65535us;65535us;65535us;65535us;2us;1us;65535us;4us;1us;1us;1us;1us;2us;4us;3us;4us;4us;2us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;65535us;0us;65535us;1us;2us;2us;2us;2us;3us;5us;4us;5us;5us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;0us;65535us;5us;1us;1us;1us;1us;2us;3us;5us;4us;5us;5us;3us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;0us;65535us;10us;1us;10us;10us;6us;10us;10us;8us;8us;8us;9us;10us;8us;8us;8us;7us;6us;5us;4us;3us;65535us;2us;65535us;65535us;0us;65535us;0us;3us;1us;2us;2us;2us;2us;2us;2us;2us;2us;0us;65535us;7us;1us;7us;2us;2us;2us;2us;3us;4us;5us;6us;7us;7us;5us;4us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;1us;65535us;0us;65535us;9us;1us;9us;2us;3us;3us;4us;6us;7us;8us;9us;9us;5us;4us;3us;65535us;65535us;65535us;65535us;3us;3us;65535us;3us;3us;65535us;3us;3us;65535us;2us;1us;65535us;0us;65535us;1us;3us;11us;5us;6us;7us;8us;8us;9us;10us;11us;11us;9us;8us;65535us;65535us;65535us;65535us;8us;8us;65535us;8us;8us;65535us;8us;8us;65535us;7us;4us;3us;0us;2us;65535us;16us;6us;9us;10us;11us;16us;12us;13us;13us;14us;15us;16us;16us;14us;13us;65535us;65535us;65535us;65535us;13us;13us;65535us;13us;13us;65535us;13us;13us;65535us;12us;11us;8us;7us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;5us;65535us;65535us;65535us;4us;65535us;3us;65535us;2us;0us;65535us;0us;2us;1us;2us;2us;0us;65535us;4us;4us;4us;3us;4us;4us;4us;5us;4us;3us;4us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;2us;65535us;2us;2us;2us;65535us;1us;65535us;1us;1us;1us;65535us;0us;0us;0us;4us;4us;4us;4us;4us;4us;2us;4us;2us;2us;2us;4us;1us;4us;1us;1us;1us;4us;0us;0us;0us;65535us;0us;0us;0us;0us;0us;0us;0us;0us;0us;16us;16us;75us;76us;49us;112us;120us;56us;57us;118us;61us;135us;65us;71us;102us;72us;110us;77us;78us;79us;115us;81us;85us;86us;103us;96us;98us;99us;109us;105us;111us;113us;116us;119us;120us;125us;135us;135us;136us;121us;125us;121us;120us;119us;114us;118us;101us;100us;104us;121us;95us;122us;108us;122us;91us;87us;88us;93us;94us;92us;83us;118us;121us;65535us;118us;119us;120us;121us;125us;122us;123us;124us;125us;65535us;65535us;126us;65535us;126us;126us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;126us;65535us;126us;65535us;126us;65535us;65535us;65535us;65535us;124us;123us;118us;121us;121us;118us;119us;120us;121us;121us;121us;121us;121us;121us;121us;121us;121us;121us;120us;119us;118us;117us;117us;117us;117us;84us;82us;80us;74us;106us;107us;73us;67us;97us;68us;65535us;65535us;65535us;127us;65535us;65535us;65535us;65535us;65535us;65535us;132us;65535us;132us;134us;134us;132us;132us;65535us;131us;65535us;131us;134us;134us;131us;131us;65535us;133us;130us;134us;134us;130us;130us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;129us;128us;127us;65535us;65535us;65535us;65535us;128us;128us;134us;134us;128us;65535us;65535us;65535us;66us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65us;64us;65us;65us;63us;64us;62us;61us;60us;59us;60us;58us;59us;58us;57us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;56us;54us;120us;69us;120us;70us;90us;89us;55us;52us;121us;120us;65535us;65535us;51us;65535us;50us;65535us;53us;47us;65535us;65535us;46us;43us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;48us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;42us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;40us;41us;65535us;65535us;38us;39us;65535us;65535us;65535us;65535us;36us;37us;65535us;65535us;34us;35us;32us;33us;9us;16us;31us;18us;12us;26us;17us;20us;31us;22us;31us;25us;27us;30us;31us;31us;26us;65535us;26us;24us;26us;31us;26us;31us;24us;26us;31us;27us;31us;21us;15us;26us;26us;31us;31us;26us;31us;11us;14us;19us;23us;16us;31us;9us;16us;31us;18us;12us;17us;20us;31us;22us;25us;30us;31us;31us;31us;16us;10us;16us;31us;13us;17us;20us;29us;28us;16us;31us;16us;16us;31us;16us;31us;16us;16us;31us;16us;31us;0us;7us;8us;0us;0us;0us;0us;2us;0us;0us;0us;0us;6us;0us;0us;0us;0us;0us;3us;0us;0us;0us;0us;4us;0us;1us;0us;0us;5us;8us;65535us;45us;0us;0us;0us;0us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;44us;|]
let _fslex_tables = Internal.Utilities.Text.Lexing.UnicodeTables.Create(trans,actions)
let rec _fslex_dummy () = _fslex_dummy()
// Rule token
and token (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(401,lexbuf) with
| 0 -> (
-//# 383 "src/Compiler/lex.fsl"
+//# 388 "src/Compiler/lex.fsl"
Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)
-//# 1954 "lex.fs"
+//# 1962 "lex.fs"
)
| 1 -> (
-//# 386 "src/Compiler/lex.fsl"
+//# 391 "src/Compiler/lex.fsl"
DO_BANG
-//# 1959 "lex.fs"
+//# 1967 "lex.fs"
)
| 2 -> (
-//# 389 "src/Compiler/lex.fsl"
+//# 394 "src/Compiler/lex.fsl"
YIELD_BANG(true)
-//# 1964 "lex.fs"
+//# 1972 "lex.fs"
)
| 3 -> (
-//# 392 "src/Compiler/lex.fsl"
+//# 397 "src/Compiler/lex.fsl"
YIELD_BANG(false)
-//# 1969 "lex.fs"
+//# 1977 "lex.fs"
)
| 4 -> (
-//# 395 "src/Compiler/lex.fsl"
+//# 400 "src/Compiler/lex.fsl"
MATCH_BANG
-//# 1974 "lex.fs"
+//# 1982 "lex.fs"
)
| 5 -> (
-//# 398 "src/Compiler/lex.fsl"
+//# 403 "src/Compiler/lex.fsl"
AND_BANG(false)
-//# 1979 "lex.fs"
+//# 1987 "lex.fs"
)
| 6 -> (
-//# 401 "src/Compiler/lex.fsl"
+//# 406 "src/Compiler/lex.fsl"
WHILE_BANG
-//# 1984 "lex.fs"
+//# 1992 "lex.fs"
)
| 7 -> (
-//# 404 "src/Compiler/lex.fsl"
+//# 409 "src/Compiler/lex.fsl"
let tok = Keywords.KeywordOrIdentifierToken args lexbuf (lexemeTrimRight lexbuf 1)
match tok with
| LET _ -> BINDER (lexemeTrimRight lexbuf 1)
| _ -> fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("!")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf))
-//# 1992 "lex.fs"
+//# 2000 "lex.fs"
)
| 8 -> (
-//# 410 "src/Compiler/lex.fsl"
+//# 415 "src/Compiler/lex.fsl"
fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("#")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf))
-//# 1997 "lex.fs"
+//# 2005 "lex.fs"
)
| 9 -> (
-//# 413 "src/Compiler/lex.fsl"
+//# 418 "src/Compiler/lex.fsl"
let n = lexemeTrimRightToInt32 args lexbuf 1
// Allow to parse as min_int. Allowed only because we parse '-' as an operator.
if Ranges.isInt8BadMax n then INT8(SByte.MinValue, true (* 'true' = 'bad'*) )
else if n > int SByte.MaxValue || n < int SByte.MinValue then fail args lexbuf (FSComp.SR.lexOutsideEightBitSigned()) (INT8(0y, false))
else INT8(sbyte n, false)
-//# 2006 "lex.fs"
+//# 2014 "lex.fs"
)
| 10 -> (
-//# 420 "src/Compiler/lex.fsl"
+//# 425 "src/Compiler/lex.fsl"
let n = lexemeTrimRightToInt32 args lexbuf 1
if n > int Byte.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitSignedHex()) (INT8(0y, false))
else INT8(sbyte(byte(n)), false)
-//# 2013 "lex.fs"
+//# 2021 "lex.fs"
)
| 11 -> (
-//# 425 "src/Compiler/lex.fsl"
+//# 430 "src/Compiler/lex.fsl"
let n = lexemeTrimRightToInt32 args lexbuf 2
if n > int Byte.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitUnsigned()) (UINT8(0uy))
else UINT8(byte n)
-//# 2020 "lex.fs"
+//# 2028 "lex.fs"
)
| 12 -> (
-//# 430 "src/Compiler/lex.fsl"
+//# 435 "src/Compiler/lex.fsl"
let n = lexemeTrimRightToInt32 args lexbuf 1
// Allow to parse as min_int. Allowed only because we parse '-' as an operator.
if Ranges.isInt16BadMax n then INT16(Int16.MinValue, true (* 'true' = 'bad'*) )
else if n > int Int16.MaxValue || n < int Int16.MinValue then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s, false))
else INT16(int16 n, false)
-//# 2029 "lex.fs"
+//# 2037 "lex.fs"
)
| 13 -> (
-//# 437 "src/Compiler/lex.fsl"
+//# 442 "src/Compiler/lex.fsl"
let n = lexemeTrimRightToInt32 args lexbuf 1
if n > int UInt16.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s,false))
else INT16(int16(uint16(n)), false)
-//# 2036 "lex.fs"
+//# 2044 "lex.fs"
)
| 14 -> (
-//# 442 "src/Compiler/lex.fsl"
+//# 447 "src/Compiler/lex.fsl"
let n = lexemeTrimRightToInt32 args lexbuf 2
if n > int UInt16.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitUnsigned()) (UINT16(0us))
else UINT16(uint16 n)
-//# 2043 "lex.fs"
+//# 2051 "lex.fs"
)
| 15 -> (
-//# 447 "src/Compiler/lex.fsl"
+//# 452 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 2)
// Allow to parse as min_int. Allowed only because we parse '-' as an operator.
if Ranges.isInt32BadMax s then INT32_DOT_DOT(Int32.MinValue, true (* 'true' = 'bad'*) ) else
let n = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0
INT32_DOT_DOT(n, false)
-//# 2053 "lex.fs"
+//# 2061 "lex.fs"
)
| 16 -> (
-//# 456 "src/Compiler/lex.fsl"
+//# 461 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexeme lexbuf)
// Allow to parse as min_int. Allowed only because we parse '-' as an operator.
if Ranges.isInt32BadMax s then INT32(Int32.MinValue, true (* 'true' = 'bad'*) ) else
@@ -2061,10 +2069,10 @@ and token (args: LexArgs) (skip: bool) lexbuf =
try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0
INT32(n, false)
-//# 2064 "lex.fs"
+//# 2072 "lex.fs"
)
| 17 -> (
-//# 466 "src/Compiler/lex.fsl"
+//# 471 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 1)
// Allow to parse as min_int. Allowed only because we parse '-' as an operator.
if Ranges.isInt32BadMax s then INT32(Int32.MinValue, true (* 'true' = 'bad'*) ) else
@@ -2072,30 +2080,30 @@ and token (args: LexArgs) (skip: bool) lexbuf =
try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0
INT32(n, false)
-//# 2075 "lex.fs"
+//# 2083 "lex.fs"
)
| 18 -> (
-//# 475 "src/Compiler/lex.fsl"
+//# 480 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 1)
let n =
try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L
if n > int64 UInt32.MaxValue || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else
UINT32(uint32 (uint64 n))
-//# 2085 "lex.fs"
+//# 2093 "lex.fs"
)
| 19 -> (
-//# 483 "src/Compiler/lex.fsl"
+//# 488 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 2)
let n =
try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L
if n > int64 UInt32.MaxValue || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else
UINT32(uint32 (uint64 n))
-//# 2095 "lex.fs"
+//# 2103 "lex.fs"
)
| 20 -> (
-//# 491 "src/Compiler/lex.fsl"
+//# 496 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 1)
// Allow to parse as min_int. Stupid but allowed because we parse '-' as an operator.
if Ranges.isInt64BadMax s then INT64(Int64.MinValue, true (* 'true' = 'bad'*) ) else
@@ -2103,18 +2111,18 @@ and token (args: LexArgs) (skip: bool) lexbuf =
try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitSigned()) 0L
INT64(n,false)
-//# 2106 "lex.fs"
+//# 2114 "lex.fs"
)
| 21 -> (
-//# 500 "src/Compiler/lex.fsl"
+//# 505 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 2)
let n =
try uint64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitUnsigned()) 0UL
UINT64(n)
-//# 2114 "lex.fs"
+//# 2122 "lex.fs"
)
| 22 -> (
-//# 506 "src/Compiler/lex.fsl"
+//# 511 "src/Compiler/lex.fsl"
let s = removeUnderscores (lexemeTrimRight lexbuf 1)
// Allow to parse as min_nativeint. Stupid but allowed because we parse '-' as an operator.
if Ranges.isInt64BadMax s then NATIVEINT(Int64.MinValue, true) else
@@ -2122,48 +2130,48 @@ and token (args: LexArgs) (skip: bool) lexbuf =
try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeSigned()) 0L
NATIVEINT(n,false)
-//# 2125 "lex.fs"
+//# 2133 "lex.fs"
)
| 23 -> (
-//# 515 "src/Compiler/lex.fsl"
+//# 520 "src/Compiler/lex.fsl"
try
UNATIVEINT(uint64 (removeUnderscores (lexemeTrimRight lexbuf 2)))
with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeUnsigned()) (UNATIVEINT(0UL))
-//# 2132 "lex.fs"
+//# 2140 "lex.fs"
)
| 24 -> (
-//# 520 "src/Compiler/lex.fsl"
+//# 525 "src/Compiler/lex.fsl"
IEEE32 (evalFloat args lexbuf)
-//# 2137 "lex.fs"
+//# 2145 "lex.fs"
)
| 25 -> (
-//# 523 "src/Compiler/lex.fsl"
+//# 528 "src/Compiler/lex.fsl"
if lexbuf.SupportsFeature LanguageFeature.DotlessFloat32Literal then
IEEE32 (evalFloat args lexbuf)
else
fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE32 0.0f)
-//# 2146 "lex.fs"
+//# 2154 "lex.fs"
)
| 26 -> (
-//# 530 "src/Compiler/lex.fsl"
+//# 535 "src/Compiler/lex.fsl"
IEEE64 (try float(lexeme lexbuf) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0)
-//# 2151 "lex.fs"
+//# 2159 "lex.fs"
)
| 27 -> (
-//# 533 "src/Compiler/lex.fsl"
+//# 538 "src/Compiler/lex.fsl"
try
let s = removeUnderscores (lexemeTrimRight lexbuf 1)
// This implements a range check for decimal literals
let d = System.Decimal.Parse(s,System.Globalization.NumberStyles.AllowExponent ||| System.Globalization.NumberStyles.Number,System.Globalization.CultureInfo.InvariantCulture)
DECIMAL d
with
- e -> fail args lexbuf (FSComp.SR.lexOusideDecimal()) (DECIMAL (decimal 0))
+ e -> fail args lexbuf (FSComp.SR.lexOutsideDecimal()) (DECIMAL (decimal 0))
-//# 2163 "lex.fs"
+//# 2171 "lex.fs"
)
| 28 -> (
-//# 542 "src/Compiler/lex.fsl"
+//# 547 "src/Compiler/lex.fsl"
#if FABLE_COMPILER
fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE32 0.0f)
@@ -2171,14 +2179,14 @@ and token (args: LexArgs) (skip: bool) lexbuf =
let s = removeUnderscores (lexemeTrimRight lexbuf 2)
// Even though the intermediate step is an int64, display the "invalid float" message, since it will be less confusing to the user
let n64 = (try (int64 s) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0L)
- if n64 > 0xFFFFFFFFL || n64 < 0L then fail args lexbuf (FSComp.SR.lexOusideThirtyTwoBitFloat()) (IEEE32 0.0f) else
+ if n64 > 0xFFFFFFFFL || n64 < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitFloat()) (IEEE32 0.0f) else
IEEE32 (System.BitConverter.ToSingle(System.BitConverter.GetBytes(int32 (uint32 (uint64 n64))),0))
#endif
-//# 2178 "lex.fs"
+//# 2186 "lex.fs"
)
| 29 -> (
-//# 555 "src/Compiler/lex.fsl"
+//# 560 "src/Compiler/lex.fsl"
#if FABLE_COMPILER
fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE64 0.0)
@@ -2187,37 +2195,37 @@ and token (args: LexArgs) (skip: bool) lexbuf =
IEEE64 (System.BitConverter.Int64BitsToDouble(n64))
#endif
-//# 2190 "lex.fs"
+//# 2198 "lex.fs"
)
| 30 -> (
-//# 565 "src/Compiler/lex.fsl"
+//# 570 "src/Compiler/lex.fsl"
let s = lexeme lexbuf
BIGNUM (removeUnderscores (lexemeTrimRight lexbuf 1), s.[s.Length-1..s.Length-1])
-//# 2196 "lex.fs"
+//# 2204 "lex.fs"
)
| 31 -> (
-//# 569 "src/Compiler/lex.fsl"
+//# 574 "src/Compiler/lex.fsl"
fail args lexbuf (FSComp.SR.lexInvalidNumericLiteral()) (INT32(0,false))
-//# 2201 "lex.fs"
+//# 2209 "lex.fs"
)
| 32 -> (
-//# 572 "src/Compiler/lex.fsl"
+//# 577 "src/Compiler/lex.fsl"
let s = lexeme lexbuf
CHAR (if s.[1] = '\\' then escape s.[2] else s.[1])
-//# 2207 "lex.fs"
+//# 2215 "lex.fs"
)
| 33 -> (
-//# 576 "src/Compiler/lex.fsl"
+//# 581 "src/Compiler/lex.fsl"
let s = lexeme lexbuf
let x = int32 (if s.[1] = '\\' then escape s.[2] else s.[1])
if x < 0 || x > 127 then
- fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0))
+ fail args lexbuf (FSComp.SR.lexInvalidAsciiByteLiteral()) (UINT8(byte 0))
else
UINT8 (byte(x))
-//# 2217 "lex.fs"
+//# 2225 "lex.fs"
)
| 34 -> (
-//# 584 "src/Compiler/lex.fsl"
+//# 589 "src/Compiler/lex.fsl"
let s = lexeme lexbuf
let c = trigraph s.[2] s.[3] s.[4]
let x = int32 c
@@ -2225,104 +2233,132 @@ and token (args: LexArgs) (skip: bool) lexbuf =
fail args lexbuf (FSComp.SR.lexInvalidCharLiteral()) (CHAR c)
else
CHAR c
-//# 2228 "lex.fs"
+//# 2236 "lex.fs"
)
| 35 -> (
-//# 593 "src/Compiler/lex.fsl"
+//# 598 "src/Compiler/lex.fsl"
let s = lexeme lexbuf
let x = int32 (trigraph s.[2] s.[3] s.[4])
if x < 0 || x > 255 then
- fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0))
+ fail args lexbuf (FSComp.SR.lexInvalidAsciiByteLiteral()) (UINT8(byte 0))
+ elif x > 127 then
+ // TODO: Promote to Error:
+ // * Adjust range check in `if` above to `x > 127`
+ // * Remove this `elif` expression
+ // * Remove `lexInvalidTrigraphAsciiByteLiteral` from `FSComp.txt`
+ warning (Error(FSComp.SR.lexInvalidTrigraphAsciiByteLiteral(), lexbuf.LexemeRange))
+ UINT8 (byte(x))
else
UINT8 (byte(x))
-//# 2238 "lex.fs"
+//# 2253 "lex.fs"
)
| 36 -> (
-//# 601 "src/Compiler/lex.fsl"
+//# 612 "src/Compiler/lex.fsl"
+ CHAR (char (int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 1))))
+//# 2258 "lex.fs"
+ )
+ | 37 -> (
+//# 615 "src/Compiler/lex.fsl"
let x = int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 2))
if x < 0 || x > 127 then
- fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0))
+ fail args lexbuf (FSComp.SR.lexInvalidAsciiByteLiteral()) (UINT8(byte 0))
else
UINT8 (byte(x))
-//# 2247 "lex.fs"
- )
- | 37 -> (
-//# 607 "src/Compiler/lex.fsl"
- CHAR (char (int32 (hexGraphShort (lexemeTrimBoth lexbuf 3 1))))
-//# 2252 "lex.fs"
+//# 2267 "lex.fs"
)
| 38 -> (
-//# 609 "src/Compiler/lex.fsl"
- CHAR (char (int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 1))))
-//# 2257 "lex.fs"
+//# 621 "src/Compiler/lex.fsl"
+ CHAR (char (int32 (hexGraphShort (lexemeTrimBoth lexbuf 3 1))))
+//# 2272 "lex.fs"
)
| 39 -> (
-//# 612 "src/Compiler/lex.fsl"
+//# 624 "src/Compiler/lex.fsl"
+ let x = int32 (hexGraphShort (lexemeTrimBoth lexbuf 3 2))
+ if x < 0 || x > 127 then
+ fail args lexbuf (FSComp.SR.lexInvalidAsciiByteLiteral()) (UINT8(byte 0))
+ else
+ UINT8 (byte(x))
+//# 2281 "lex.fs"
+ )
+ | 40 -> (
+//# 631 "src/Compiler/lex.fsl"
match unicodeGraphLong (lexemeTrimBoth lexbuf 3 1) with
| SingleChar(c) -> CHAR (char c)
| _ -> fail args lexbuf (FSComp.SR.lexThisUnicodeOnlyInStringLiterals()) (CHAR (char 0))
-//# 2264 "lex.fs"
+//# 2288 "lex.fs"
)
- | 40 -> (
-//# 617 "src/Compiler/lex.fsl"
+ | 41 -> (
+//# 636 "src/Compiler/lex.fsl"
+ match unicodeGraphLong (lexemeTrimBoth lexbuf 3 2) with
+ | SingleChar(c) ->
+ let x = int32 c
+ if x < 0 || x > 127 then
+ fail args lexbuf (FSComp.SR.lexInvalidAsciiByteLiteral()) (UINT8(byte 0))
+ else
+ UINT8 (byte(x))
+ | _ -> fail args lexbuf (FSComp.SR.lexInvalidAsciiByteLiteral()) (UINT8(byte 0))
+//# 2300 "lex.fs"
+ )
+ | 42 -> (
+//# 646 "src/Compiler/lex.fsl"
if lexbuf.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange
if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2272 "lex.fs"
+//# 2308 "lex.fs"
)
- | 41 -> (
-//# 623 "src/Compiler/lex.fsl"
+ | 43 -> (
+//# 652 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2278 "lex.fs"
+//# 2314 "lex.fs"
)
- | 42 -> (
-//# 627 "src/Compiler/lex.fsl"
+ | 44 -> (
+//# 656 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2284 "lex.fs"
+//# 2320 "lex.fs"
)
- | 43 -> (
-//# 631 "src/Compiler/lex.fsl"
+ | 45 -> (
+//# 660 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2290 "lex.fs"
+//# 2326 "lex.fs"
)
- | 44 -> (
-//# 635 "src/Compiler/lex.fsl"
+ | 46 -> (
+//# 664 "src/Compiler/lex.fsl"
LPAREN_STAR_RPAREN
-//# 2295 "lex.fs"
+//# 2331 "lex.fs"
)
- | 45 -> (
-//# 638 "src/Compiler/lex.fsl"
+ | 47 -> (
+//# 667 "src/Compiler/lex.fsl"
let m = lexbuf.LexemeRange
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, 1, m))
else comment (1,m,args) skip lexbuf
-//# 2302 "lex.fs"
+//# 2338 "lex.fs"
)
- | 46 -> (
-//# 643 "src/Compiler/lex.fsl"
+ | 48 -> (
+//# 672 "src/Compiler/lex.fsl"
let m = lexbuf.LexemeRange
if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m))
else mlOnly m args skip lexbuf
-//# 2309 "lex.fs"
+//# 2345 "lex.fs"
)
- | 47 -> (
-//# 648 "src/Compiler/lex.fsl"
+ | 49 -> (
+//# 677 "src/Compiler/lex.fsl"
let buf, fin, m = startString args lexbuf
// Single quote in triple quote ok, others disallowed
match args.stringNest with
- | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _
- | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> ()
+ | (_, LexerStringStyle.ExtendedInterpolated, _, _, _) :: _
+ | (_, LexerStringStyle.TripleQuote, _, _, _) :: _ -> ()
| _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m))
| [] -> ()
if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.String, args.interpolationDelimiterLength, m))
else singleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf
-//# 2322 "lex.fs"
+//# 2358 "lex.fs"
)
- | 48 -> (
-//# 661 "src/Compiler/lex.fsl"
+ | 50 -> (
+//# 690 "src/Compiler/lex.fsl"
let buf, fin, m = startString args lexbuf
// Single quote in triple quote ok, others disallowed
match args.stringNest with
@@ -2331,10 +2367,10 @@ and token (args: LexArgs) (skip: bool) lexbuf =
args.interpolationDelimiterLength <- 1
if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, 1, m))
else tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf
-//# 2334 "lex.fs"
+//# 2370 "lex.fs"
)
- | 49 -> (
-//# 673 "src/Compiler/lex.fsl"
+ | 51 -> (
+//# 702 "src/Compiler/lex.fsl"
let buf, fin, m = startString args lexbuf
if lexbuf.SupportsFeature LanguageFeature.ExtendedStringInterpolation then
// Single quote in triple quote ok, others disallowed
@@ -2354,24 +2390,24 @@ and token (args: LexArgs) (skip: bool) lexbuf =
tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf
fail args lexbuf (FSComp.SR.lexExtendedStringInterpolationNotSupported()) result
-//# 2357 "lex.fs"
+//# 2393 "lex.fs"
)
- | 50 -> (
-//# 696 "src/Compiler/lex.fsl"
+ | 52 -> (
+//# 725 "src/Compiler/lex.fsl"
let buf,fin,m = startString args lexbuf
// Single quote in triple quote ok, others disallowed
match args.stringNest with
- | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> ()
+ | (_, style, _, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> ()
| _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m))
| _ -> ()
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m))
else
singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf
-//# 2371 "lex.fs"
+//# 2407 "lex.fs"
)
- | 51 -> (
-//# 710 "src/Compiler/lex.fsl"
+ | 53 -> (
+//# 739 "src/Compiler/lex.fsl"
let buf, fin, m = startString args lexbuf
args.interpolationDelimiterLength <- 0
// Single quote in triple quote ok, others disallowed
@@ -2382,110 +2418,110 @@ and token (args: LexArgs) (skip: bool) lexbuf =
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.String, args.interpolationDelimiterLength, m))
else
tripleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf
-//# 2385 "lex.fs"
+//# 2421 "lex.fs"
)
- | 52 -> (
-//# 725 "src/Compiler/lex.fsl"
+ | 54 -> (
+//# 754 "src/Compiler/lex.fsl"
let buf, fin, m = startString args lexbuf
// Single quote in triple quote ok, others disallowed
match args.stringNest with
- | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _
- | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> ()
+ | (_, LexerStringStyle.ExtendedInterpolated, _, _, _) :: _
+ | (_, LexerStringStyle.TripleQuote, _, _, _) :: _ -> ()
| _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m))
| _ -> ()
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.String, args.interpolationDelimiterLength, m))
else
verbatimString (buf, fin, m, LexerStringKind.String, args) skip lexbuf
-//# 2400 "lex.fs"
+//# 2436 "lex.fs"
)
- | 53 -> (
-//# 740 "src/Compiler/lex.fsl"
+ | 55 -> (
+//# 769 "src/Compiler/lex.fsl"
let buf, fin, m = startString args lexbuf
// Single quote in triple quote ok, others disallowed
match args.stringNest with
- | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> ()
+ | (_, style, _, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> ()
| _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m))
| _ -> ()
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m))
else
verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf
-//# 2414 "lex.fs"
+//# 2450 "lex.fs"
)
- | 54 -> (
-//# 754 "src/Compiler/lex.fsl"
+ | 56 -> (
+//# 783 "src/Compiler/lex.fsl"
if skip then token args skip lexbuf
else WHITESPACE (LexCont.Token(args.ifdefStack, args.stringNest))
-//# 2420 "lex.fs"
+//# 2456 "lex.fs"
)
- | 55 -> (
-//# 758 "src/Compiler/lex.fsl"
+ | 57 -> (
+//# 787 "src/Compiler/lex.fsl"
if args.indentationSyntaxStatus.Status then errorR(Error(FSComp.SR.lexTabsNotAllowed(), lexbuf.LexemeRange))
if not skip then WHITESPACE (LexCont.Token(args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2427 "lex.fs"
+//# 2463 "lex.fs"
)
- | 56 -> (
-//# 763 "src/Compiler/lex.fsl"
+ | 58 -> (
+//# 792 "src/Compiler/lex.fsl"
// 4+ slash are 1-line comments, online 3 slash are XmlDoc
let m = lexbuf.LexemeRange
- LexbufLocalXmlDocStore.AddGrabPointDelayed(lexbuf)
+ XmlDocStore.AddGrabPointDelayed(lexbuf)
if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m))
else singleLineComment (None,1,m,m,args) skip lexbuf
-//# 2436 "lex.fs"
+//# 2472 "lex.fs"
)
- | 57 -> (
-//# 770 "src/Compiler/lex.fsl"
+ | 59 -> (
+//# 799 "src/Compiler/lex.fsl"
// Match exactly 3 slash, 4+ slash caught by preceding rule
let m = lexbuf.LexemeRange
let doc = lexemeTrimLeft lexbuf 3
let sb = (new StringBuilder(100)).Append(doc)
if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m))
else singleLineComment (Some (m, sb),1,m,m,args) skip lexbuf
-//# 2446 "lex.fs"
+//# 2482 "lex.fs"
)
- | 58 -> (
-//# 778 "src/Compiler/lex.fsl"
+ | 60 -> (
+//# 807 "src/Compiler/lex.fsl"
// Need to read all operator symbols too, otherwise it might be parsed by a rule below
let m = lexbuf.LexemeRange
- LexbufLocalXmlDocStore.AddGrabPointDelayed(lexbuf)
+ XmlDocStore.AddGrabPointDelayed(lexbuf)
if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m))
else singleLineComment (None,1,m,m,args) skip lexbuf
-//# 2455 "lex.fs"
+//# 2491 "lex.fs"
)
- | 59 -> (
-//# 785 "src/Compiler/lex.fsl"
- newline lexbuf
+ | 61 -> (
+//# 814 "src/Compiler/lex.fsl"
+ incrLine lexbuf
if not skip then WHITESPACE (LexCont.Token(args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2462 "lex.fs"
+//# 2498 "lex.fs"
)
- | 60 -> (
-//# 790 "src/Compiler/lex.fsl"
+ | 62 -> (
+//# 819 "src/Compiler/lex.fsl"
Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 2)
-//# 2467 "lex.fs"
+//# 2503 "lex.fs"
)
- | 61 -> (
-//# 793 "src/Compiler/lex.fsl"
+ | 63 -> (
+//# 822 "src/Compiler/lex.fsl"
errorR(Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange))
Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 1)
-//# 2473 "lex.fs"
+//# 2509 "lex.fs"
)
- | 62 -> (
-//# 797 "src/Compiler/lex.fsl"
+ | 64 -> (
+//# 826 "src/Compiler/lex.fsl"
errorR(Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange))
Keywords.IdentifierToken args lexbuf (lexemeTrimLeft lexbuf 2)
-//# 2479 "lex.fs"
+//# 2515 "lex.fs"
)
- | 63 -> (
-//# 801 "src/Compiler/lex.fsl"
+ | 65 -> (
+//# 830 "src/Compiler/lex.fsl"
errorR(Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange))
Keywords.IdentifierToken args lexbuf ""
-//# 2485 "lex.fs"
+//# 2521 "lex.fs"
)
- | 64 -> (
-//# 805 "src/Compiler/lex.fsl"
+ | 66 -> (
+//# 834 "src/Compiler/lex.fsl"
let pos = lexbuf.EndPos
if skip then
let s = lexeme lexbuf
@@ -2525,256 +2561,265 @@ and token (args: LexArgs) (skip: bool) lexbuf =
lexbuf.EndPos <- pos.ApplyLineDirective((match file with Some f -> FileIndex.fileIndexOfFile f | None -> pos.FileIndex), line)
else
// add a newline when we don't apply a directive since we consumed a newline getting here
- newline lexbuf
+ incrLine lexbuf
token args skip lexbuf
else
// add a newline when we don't apply a directive since we consumed a newline getting here
- newline lexbuf
+ incrLine lexbuf
HASH_LINE (LexCont.Token (args.ifdefStack, args.stringNest))
-//# 2535 "lex.fs"
+//# 2571 "lex.fs"
)
- | 65 -> (
-//# 861 "src/Compiler/lex.fsl"
+ | 67 -> (
+//# 890 "src/Compiler/lex.fsl"
checkExprOp lexbuf; LQUOTE ("<@ @>", false)
-//# 2540 "lex.fs"
+//# 2576 "lex.fs"
)
- | 66 -> (
-//# 863 "src/Compiler/lex.fsl"
+ | 68 -> (
+//# 892 "src/Compiler/lex.fsl"
checkExprOp lexbuf; LQUOTE ("<@@ @@>", true)
-//# 2545 "lex.fs"
+//# 2581 "lex.fs"
)
- | 67 -> (
-//# 865 "src/Compiler/lex.fsl"
+ | 69 -> (
+//# 894 "src/Compiler/lex.fsl"
checkExprOp lexbuf; RQUOTE ("<@ @>", false)
-//# 2550 "lex.fs"
+//# 2586 "lex.fs"
)
- | 68 -> (
-//# 867 "src/Compiler/lex.fsl"
+ | 70 -> (
+//# 896 "src/Compiler/lex.fsl"
checkExprOp lexbuf; RQUOTE ("<@@ @@>", true)
-//# 2555 "lex.fs"
+//# 2591 "lex.fs"
)
- | 69 -> (
-//# 869 "src/Compiler/lex.fsl"
+ | 71 -> (
+//# 898 "src/Compiler/lex.fsl"
HASH
-//# 2560 "lex.fs"
+//# 2596 "lex.fs"
)
- | 70 -> (
-//# 871 "src/Compiler/lex.fsl"
+ | 72 -> (
+//# 900 "src/Compiler/lex.fsl"
AMP
-//# 2565 "lex.fs"
+//# 2601 "lex.fs"
)
- | 71 -> (
-//# 873 "src/Compiler/lex.fsl"
+ | 73 -> (
+//# 902 "src/Compiler/lex.fsl"
AMP_AMP
-//# 2570 "lex.fs"
+//# 2606 "lex.fs"
)
- | 72 -> (
-//# 875 "src/Compiler/lex.fsl"
+ | 74 -> (
+//# 904 "src/Compiler/lex.fsl"
BAR_BAR
-//# 2575 "lex.fs"
+//# 2611 "lex.fs"
)
- | 73 -> (
-//# 877 "src/Compiler/lex.fsl"
+ | 75 -> (
+//# 906 "src/Compiler/lex.fsl"
QUOTE
-//# 2580 "lex.fs"
+//# 2616 "lex.fs"
)
- | 74 -> (
-//# 879 "src/Compiler/lex.fsl"
+ | 76 -> (
+//# 908 "src/Compiler/lex.fsl"
LPAREN
-//# 2585 "lex.fs"
+//# 2621 "lex.fs"
)
- | 75 -> (
-//# 881 "src/Compiler/lex.fsl"
+ | 77 -> (
+//# 910 "src/Compiler/lex.fsl"
RPAREN
-//# 2590 "lex.fs"
+//# 2626 "lex.fs"
)
- | 76 -> (
-//# 883 "src/Compiler/lex.fsl"
+ | 78 -> (
+//# 912 "src/Compiler/lex.fsl"
STAR
-//# 2595 "lex.fs"
+//# 2631 "lex.fs"
)
- | 77 -> (
-//# 885 "src/Compiler/lex.fsl"
+ | 79 -> (
+//# 914 "src/Compiler/lex.fsl"
COMMA
-//# 2600 "lex.fs"
+//# 2636 "lex.fs"
)
- | 78 -> (
-//# 887 "src/Compiler/lex.fsl"
+ | 80 -> (
+//# 916 "src/Compiler/lex.fsl"
RARROW
-//# 2605 "lex.fs"
+//# 2641 "lex.fs"
)
- | 79 -> (
-//# 889 "src/Compiler/lex.fsl"
+ | 81 -> (
+//# 918 "src/Compiler/lex.fsl"
QMARK
-//# 2610 "lex.fs"
+//# 2646 "lex.fs"
)
- | 80 -> (
-//# 891 "src/Compiler/lex.fsl"
+ | 82 -> (
+//# 920 "src/Compiler/lex.fsl"
QMARK_QMARK
-//# 2615 "lex.fs"
+//# 2651 "lex.fs"
)
- | 81 -> (
-//# 893 "src/Compiler/lex.fsl"
+ | 83 -> (
+//# 922 "src/Compiler/lex.fsl"
DOT_DOT
-//# 2620 "lex.fs"
+//# 2656 "lex.fs"
)
- | 82 -> (
-//# 895 "src/Compiler/lex.fsl"
+ | 84 -> (
+//# 924 "src/Compiler/lex.fsl"
DOT_DOT_HAT
-//# 2625 "lex.fs"
+//# 2661 "lex.fs"
)
- | 83 -> (
-//# 897 "src/Compiler/lex.fsl"
+ | 85 -> (
+//# 926 "src/Compiler/lex.fsl"
DOT
-//# 2630 "lex.fs"
+//# 2666 "lex.fs"
)
- | 84 -> (
-//# 899 "src/Compiler/lex.fsl"
+ | 86 -> (
+//# 928 "src/Compiler/lex.fsl"
COLON
-//# 2635 "lex.fs"
+//# 2671 "lex.fs"
)
- | 85 -> (
-//# 901 "src/Compiler/lex.fsl"
+ | 87 -> (
+//# 930 "src/Compiler/lex.fsl"
COLON_COLON
-//# 2640 "lex.fs"
+//# 2676 "lex.fs"
)
- | 86 -> (
-//# 903 "src/Compiler/lex.fsl"
+ | 88 -> (
+//# 932 "src/Compiler/lex.fsl"
COLON_GREATER
-//# 2645 "lex.fs"
+//# 2681 "lex.fs"
)
- | 87 -> (
-//# 905 "src/Compiler/lex.fsl"
+ | 89 -> (
+//# 934 "src/Compiler/lex.fsl"
RQUOTE_DOT ("<@ @>",false)
-//# 2650 "lex.fs"
+//# 2686 "lex.fs"
)
- | 88 -> (
-//# 907 "src/Compiler/lex.fsl"
+ | 90 -> (
+//# 936 "src/Compiler/lex.fsl"
RQUOTE_DOT ("<@@ @@>",true)
-//# 2655 "lex.fs"
+//# 2691 "lex.fs"
)
- | 89 -> (
-//# 909 "src/Compiler/lex.fsl"
+ | 91 -> (
+//# 938 "src/Compiler/lex.fsl"
GREATER_BAR_RBRACK
-//# 2660 "lex.fs"
+//# 2696 "lex.fs"
)
- | 90 -> (
-//# 911 "src/Compiler/lex.fsl"
+ | 92 -> (
+//# 940 "src/Compiler/lex.fsl"
COLON_QMARK_GREATER
-//# 2665 "lex.fs"
+//# 2701 "lex.fs"
)
- | 91 -> (
-//# 913 "src/Compiler/lex.fsl"
+ | 93 -> (
+//# 942 "src/Compiler/lex.fsl"
COLON_QMARK
-//# 2670 "lex.fs"
+//# 2706 "lex.fs"
)
- | 92 -> (
-//# 915 "src/Compiler/lex.fsl"
+ | 94 -> (
+//# 944 "src/Compiler/lex.fsl"
COLON_EQUALS
-//# 2675 "lex.fs"
+//# 2711 "lex.fs"
)
- | 93 -> (
-//# 917 "src/Compiler/lex.fsl"
+ | 95 -> (
+//# 946 "src/Compiler/lex.fsl"
SEMICOLON_SEMICOLON
-//# 2680 "lex.fs"
+//# 2716 "lex.fs"
)
- | 94 -> (
-//# 919 "src/Compiler/lex.fsl"
+ | 96 -> (
+//# 948 "src/Compiler/lex.fsl"
SEMICOLON
-//# 2685 "lex.fs"
+//# 2721 "lex.fs"
)
- | 95 -> (
-//# 921 "src/Compiler/lex.fsl"
+ | 97 -> (
+//# 950 "src/Compiler/lex.fsl"
LARROW
-//# 2690 "lex.fs"
+//# 2726 "lex.fs"
)
- | 96 -> (
-//# 923 "src/Compiler/lex.fsl"
+ | 98 -> (
+//# 952 "src/Compiler/lex.fsl"
EQUALS
-//# 2695 "lex.fs"
+//# 2731 "lex.fs"
)
- | 97 -> (
-//# 925 "src/Compiler/lex.fsl"
+ | 99 -> (
+//# 954 "src/Compiler/lex.fsl"
LBRACK
-//# 2700 "lex.fs"
+//# 2736 "lex.fs"
)
- | 98 -> (
-//# 927 "src/Compiler/lex.fsl"
+ | 100 -> (
+//# 956 "src/Compiler/lex.fsl"
LBRACK_BAR
-//# 2705 "lex.fs"
+//# 2741 "lex.fs"
)
- | 99 -> (
-//# 929 "src/Compiler/lex.fsl"
+ | 101 -> (
+//# 958 "src/Compiler/lex.fsl"
LBRACE_BAR
-//# 2710 "lex.fs"
+//# 2746 "lex.fs"
)
- | 100 -> (
-//# 931 "src/Compiler/lex.fsl"
+ | 102 -> (
+//# 960 "src/Compiler/lex.fsl"
LESS false
-//# 2715 "lex.fs"
+//# 2751 "lex.fs"
)
- | 101 -> (
-//# 933 "src/Compiler/lex.fsl"
+ | 103 -> (
+//# 962 "src/Compiler/lex.fsl"
GREATER false
-//# 2720 "lex.fs"
+//# 2756 "lex.fs"
)
- | 102 -> (
-//# 935 "src/Compiler/lex.fsl"
+ | 104 -> (
+//# 964 "src/Compiler/lex.fsl"
LBRACK_LESS
-//# 2725 "lex.fs"
+//# 2761 "lex.fs"
)
- | 103 -> (
-//# 937 "src/Compiler/lex.fsl"
+ | 105 -> (
+//# 966 "src/Compiler/lex.fsl"
RBRACK
-//# 2730 "lex.fs"
+//# 2766 "lex.fs"
)
- | 104 -> (
-//# 939 "src/Compiler/lex.fsl"
+ | 106 -> (
+//# 968 "src/Compiler/lex.fsl"
BAR_RBRACK
-//# 2735 "lex.fs"
+//# 2771 "lex.fs"
)
- | 105 -> (
-//# 941 "src/Compiler/lex.fsl"
+ | 107 -> (
+//# 970 "src/Compiler/lex.fsl"
BAR_RBRACE
-//# 2740 "lex.fs"
+//# 2776 "lex.fs"
)
- | 106 -> (
-//# 943 "src/Compiler/lex.fsl"
+ | 108 -> (
+//# 972 "src/Compiler/lex.fsl"
GREATER_RBRACK
-//# 2745 "lex.fs"
+//# 2781 "lex.fs"
)
- | 107 -> (
-//# 946 "src/Compiler/lex.fsl"
+ | 109 -> (
+//# 975 "src/Compiler/lex.fsl"
match args.stringNest with
| [] -> ()
- | (counter, style, d, m) :: rest ->
+ | (counter, style, d, _, m) :: rest ->
// Note, we do not update the 'm', any incomplete-interpolation error
// will be reported w.r.t. the first '{'
- args.stringNest <- (counter + 1, style, d, m) :: rest
+ args.stringNest <- (counter + 1, style, d, None, m) :: rest
// To continue token-by-token lexing may involve picking up the new args.stringNes
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
LBRACE cont
-//# 2760 "lex.fs"
+//# 2796 "lex.fs"
)
- | 108 -> (
-//# 958 "src/Compiler/lex.fsl"
+ | 110 -> (
+//# 987 "src/Compiler/lex.fsl"
BAR
-//# 2765 "lex.fs"
+//# 2801 "lex.fs"
)
- | 109 -> (
-//# 961 "src/Compiler/lex.fsl"
+ | 111 -> (
+//# 990 "src/Compiler/lex.fsl"
// We encounter a '}' in the expression token stream. First check if we're in an interpolated string expression
// and continue the string if necessary
match args.stringNest with
- | (1, LexerStringStyle.ExtendedInterpolated, delimLength, r) :: rest when delimLength > 1 ->
- args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, delimLength - 1, r) :: rest
+ | (1, LexerStringStyle.ExtendedInterpolated, delimLength, altR, r) :: rest when delimLength > 1 ->
+ // On the first "}" of multiple "}", keep the range of the starting "}" for later processing in startString
+ let altStart =
+ match altR with
+ | None -> Some lexbuf.LexemeRange
+ | _ -> altR
+ args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, delimLength - 1, altStart, r) :: rest
token args skip lexbuf
- | (1, style, _, _) :: rest ->
+ | (1, style, _, altR, _r) :: rest ->
args.stringNest <- rest
+ altR
+ |> Option.iter (fun r ->
+ let n = r.StartColumn - lexbuf.StartPos.Column
+ lexbuf.StartPos <- lexbuf.StartPos.ShiftColumnBy(n))
let buf, fin, m = startString args lexbuf
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, style, LexerStringKind.InterpolatedStringPart, args.interpolationDelimiterLength, m))
@@ -2784,105 +2829,105 @@ and token (args: LexArgs) (skip: bool) lexbuf =
| LexerStringStyle.SingleQuote -> singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf
| LexerStringStyle.TripleQuote -> tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf
| LexerStringStyle.ExtendedInterpolated -> extendedInterpolatedString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf
- | (counter, style, d, m) :: rest ->
+ | (counter, style, d, altR, m) :: rest ->
// Note, we do not update the 'm', any incomplete-interpolation error
// will be reported w.r.t. the first '{'
- args.stringNest <- (counter - 1, style, d, m) :: rest
+ args.stringNest <- (counter - 1, style, d, altR, m) :: rest
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
RBRACE cont
| _ ->
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
RBRACE cont
-//# 2797 "lex.fs"
+//# 2842 "lex.fs"
)
- | 110 -> (
-//# 992 "src/Compiler/lex.fsl"
+ | 112 -> (
+//# 1029 "src/Compiler/lex.fsl"
DOLLAR
-//# 2802 "lex.fs"
+//# 2847 "lex.fs"
)
- | 111 -> (
-//# 994 "src/Compiler/lex.fsl"
+ | 113 -> (
+//# 1031 "src/Compiler/lex.fsl"
PERCENT_OP("%")
-//# 2807 "lex.fs"
+//# 2852 "lex.fs"
)
- | 112 -> (
-//# 996 "src/Compiler/lex.fsl"
+ | 114 -> (
+//# 1033 "src/Compiler/lex.fsl"
PERCENT_OP("%%")
-//# 2812 "lex.fs"
+//# 2857 "lex.fs"
)
- | 113 -> (
-//# 998 "src/Compiler/lex.fsl"
+ | 115 -> (
+//# 1035 "src/Compiler/lex.fsl"
MINUS
-//# 2817 "lex.fs"
+//# 2862 "lex.fs"
)
- | 114 -> (
-//# 1001 "src/Compiler/lex.fsl"
+ | 116 -> (
+//# 1038 "src/Compiler/lex.fsl"
errorR (Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange))
RESERVED
-//# 2823 "lex.fs"
+//# 2868 "lex.fs"
)
- | 115 -> (
-//# 1004 "src/Compiler/lex.fsl"
+ | 117 -> (
+//# 1041 "src/Compiler/lex.fsl"
checkExprOp lexbuf; INFIX_STAR_STAR_OP(lexeme lexbuf)
-//# 2828 "lex.fs"
+//# 2873 "lex.fs"
)
- | 116 -> (
-//# 1006 "src/Compiler/lex.fsl"
+ | 118 -> (
+//# 1043 "src/Compiler/lex.fsl"
checkExprOp lexbuf; INFIX_STAR_DIV_MOD_OP(lexeme lexbuf)
-//# 2833 "lex.fs"
+//# 2878 "lex.fs"
)
- | 117 -> (
-//# 1008 "src/Compiler/lex.fsl"
+ | 119 -> (
+//# 1045 "src/Compiler/lex.fsl"
checkExprOp lexbuf; PLUS_MINUS_OP(lexeme lexbuf)
-//# 2838 "lex.fs"
+//# 2883 "lex.fs"
)
- | 118 -> (
-//# 1010 "src/Compiler/lex.fsl"
+ | 120 -> (
+//# 1047 "src/Compiler/lex.fsl"
checkExprOp lexbuf; INFIX_AT_HAT_OP(lexeme lexbuf)
-//# 2843 "lex.fs"
+//# 2888 "lex.fs"
)
- | 119 -> (
-//# 1012 "src/Compiler/lex.fsl"
+ | 121 -> (
+//# 1049 "src/Compiler/lex.fsl"
checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf)
-//# 2848 "lex.fs"
+//# 2893 "lex.fs"
)
- | 120 -> (
-//# 1014 "src/Compiler/lex.fsl"
+ | 122 -> (
+//# 1051 "src/Compiler/lex.fsl"
checkExprGreaterColonOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf)
-//# 2853 "lex.fs"
+//# 2898 "lex.fs"
)
- | 121 -> (
-//# 1016 "src/Compiler/lex.fsl"
+ | 123 -> (
+//# 1053 "src/Compiler/lex.fsl"
checkExprOp lexbuf; INFIX_AMP_OP(lexeme lexbuf)
-//# 2858 "lex.fs"
+//# 2903 "lex.fs"
)
- | 122 -> (
-//# 1018 "src/Compiler/lex.fsl"
+ | 124 -> (
+//# 1055 "src/Compiler/lex.fsl"
checkExprOp lexbuf; INFIX_BAR_OP(lexeme lexbuf)
-//# 2863 "lex.fs"
+//# 2908 "lex.fs"
)
- | 123 -> (
-//# 1020 "src/Compiler/lex.fsl"
+ | 125 -> (
+//# 1057 "src/Compiler/lex.fsl"
checkExprOp lexbuf; PREFIX_OP(lexeme lexbuf)
-//# 2868 "lex.fs"
+//# 2913 "lex.fs"
)
- | 124 -> (
-//# 1024 "src/Compiler/lex.fsl"
+ | 126 -> (
+//# 1061 "src/Compiler/lex.fsl"
FUNKY_OPERATOR_NAME(lexeme lexbuf)
-//# 2873 "lex.fs"
+//# 2918 "lex.fs"
)
- | 125 -> (
-//# 1027 "src/Compiler/lex.fsl"
+ | 127 -> (
+//# 1064 "src/Compiler/lex.fsl"
// Treat shebangs like regular comments, but they are only allowed at the start of a file
let m = lexbuf.LexemeRange
let tok = LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m))
let tok = shouldStartFile args lexbuf m (0,FSComp.SR.lexHashBangMustBeFirstInFile()) tok
if not skip then tok else singleLineComment (None,1,m,m,args) skip lexbuf
-//# 2882 "lex.fs"
+//# 2927 "lex.fs"
)
- | 126 -> (
-//# 1035 "src/Compiler/lex.fsl"
+ | 128 -> (
+//# 1072 "src/Compiler/lex.fsl"
if args.indentationSyntaxStatus.ExplicitlySet && args.indentationSyntaxStatus.WarnOnMultipleTokens then
let s = lexeme lexbuf
warning(Error((0, sprintf "%s should only be set once in an F# source file." s), lexbuf.LexemeRange))
@@ -2891,10 +2936,10 @@ and token (args: LexArgs) (skip: bool) lexbuf =
args.indentationSyntaxStatus.Status <- true
if not skip then HASH_LIGHT (LexCont.Token(args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2894 "lex.fs"
+//# 2939 "lex.fs"
)
- | 127 -> (
-//# 1045 "src/Compiler/lex.fsl"
+ | 129 -> (
+//# 1082 "src/Compiler/lex.fsl"
args.indentationSyntaxStatus.Status <- false
if lexbuf.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatError (FSComp.SR.mlCompatLightOffNoLongerSupported()) lexbuf.LexemeRange
@@ -2902,105 +2947,97 @@ and token (args: LexArgs) (skip: bool) lexbuf =
mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange
if not skip then HASH_LIGHT (LexCont.Token (args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 2905 "lex.fs"
+//# 2950 "lex.fs"
)
- | 128 -> (
-//# 1054 "src/Compiler/lex.fsl"
+ | 130 -> (
+//# 1091 "src/Compiler/lex.fsl"
let m = lexbuf.LexemeRange
+ shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst())
let lookup id = List.contains id args.conditionalDefines
let lexed = lexeme lexbuf
let isTrue, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion lexbuf.StrictIndentation args lookup lexed
args.ifdefStack <- (IfDefIf,m) :: args.ifdefStack
- LexbufIfdefStore.SaveIfHash(lexbuf, lexed, expr, m)
- // Get the token; make sure it starts at zero position & return
- let cont, f =
- if isTrue then
- let cont = LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Token)
- let f = endline LexerEndlineContinuation.Token args skip
- cont, f
- else
- let cont = LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(0, m))
- let f = endline (LexerEndlineContinuation.Skip(0, m)) args skip
- cont, f
- let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst()) (HASH_IF(m,lexed,cont))
- if not skip then tok else f lexbuf
-//# 2927 "lex.fs"
+ IfdefStore.SaveIfHash(lexbuf, lexed, expr, m)
+ let contCase = if isTrue then LexerEndlineContinuation.Token else LexerEndlineContinuation.IfdefSkip(0, m)
+ let tok = HASH_IF(m, lexed, LexCont.EndLine(args.ifdefStack, args.stringNest, contCase))
+ if skip then endline contCase args skip lexbuf else tok
+//# 2964 "lex.fs"
)
- | 129 -> (
-//# 1076 "src/Compiler/lex.fsl"
+ | 131 -> (
+//# 1103 "src/Compiler/lex.fsl"
let lexed = (lexeme lexbuf)
match args.ifdefStack with
| [] -> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf())
| (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse())
| (IfDefIf,_) :: rest ->
let m = lexbuf.LexemeRange
+ shouldStartLine args lexbuf m (FSComp.SR.lexHashElseMustBeFirst())
args.ifdefStack <- (IfDefElse,m) :: rest
- LexbufIfdefStore.SaveElseHash(lexbuf, lexed, m)
- let tok = HASH_ELSE(m, lexed, LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(0, m)))
- let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashElseMustBeFirst()) tok
- if not skip then tok else endline (LexerEndlineContinuation.Skip(0, m)) args skip lexbuf
-//# 2942 "lex.fs"
+ IfdefStore.SaveElseHash(lexbuf, lexed, m)
+ let tok = HASH_ELSE(m, lexed, LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.IfdefSkip(0, m)))
+ if skip then endline (LexerEndlineContinuation.IfdefSkip(0, m)) args skip lexbuf else tok
+//# 2979 "lex.fs"
)
- | 130 -> (
-//# 1089 "src/Compiler/lex.fsl"
+ | 132 -> (
+//# 1116 "src/Compiler/lex.fsl"
let lexed = (lexeme lexbuf)
let m = lexbuf.LexemeRange
match args.ifdefStack with
| []-> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf())
| _ :: rest ->
+ shouldStartLine args lexbuf m (FSComp.SR.lexHashEndifMustBeFirst())
args.ifdefStack <- rest
- LexbufIfdefStore.SaveEndIfHash(lexbuf, lexed, m)
+ IfdefStore.SaveEndIfHash(lexbuf, lexed, m)
let tok = HASH_ENDIF(m,lexed,LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Token))
- let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashEndifMustBeFirst()) tok
if not skip then tok else endline LexerEndlineContinuation.Token args skip lexbuf
-//# 2956 "lex.fs"
+//# 2993 "lex.fs"
)
- | 131 -> (
-//# 1101 "src/Compiler/lex.fsl"
+ | 133 -> (
+//# 1128 "src/Compiler/lex.fsl"
let tok = WHITESPACE (LexCont.Token (args.ifdefStack, args.stringNest))
let tok = fail args lexbuf (FSComp.SR.lexHashIfMustHaveIdent()) tok
- if not skip then tok else token args skip lexbuf
-//# 2963 "lex.fs"
+ if skip then token args skip lexbuf else tok
+//# 3000 "lex.fs"
)
- | 132 -> (
-//# 1109 "src/Compiler/lex.fsl"
+ | 134 -> (
+//# 1137 "src/Compiler/lex.fsl"
let n = (lexeme lexbuf).IndexOf('#')
lexbuf.StartPos <- lexbuf.StartPos.ShiftColumnBy(n)
HASH_IDENT(lexemeTrimLeft lexbuf (n+1))
-//# 2970 "lex.fs"
+//# 3007 "lex.fs"
)
- | 133 -> (
-//# 1116 "src/Compiler/lex.fsl"
+ | 135 -> (
+//# 1144 "src/Compiler/lex.fsl"
unexpectedChar lexbuf
-//# 2975 "lex.fs"
+//# 3012 "lex.fs"
)
- | 134 -> (
-//# 1119 "src/Compiler/lex.fsl"
+ | 136 -> (
+//# 1147 "src/Compiler/lex.fsl"
EOF (LexCont.Token(args.ifdefStack, args.stringNest))
-//# 2980 "lex.fs"
+//# 3017 "lex.fs"
)
| _ -> failwith "token"
// Rule ifdefSkip
and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(344,lexbuf) with
| 0 -> (
-//# 1125 "src/Compiler/lex.fsl"
+//# 1153 "src/Compiler/lex.fsl"
let m = lexbuf.LexemeRange
// If #if is the first thing on the line then increase depth, otherwise skip, because it is invalid (e.g. "(**) #if ...")
if (m.StartColumn <> 0) then
- if not skip then INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m))
- else ifdefSkip n m args skip lexbuf
+ if skip then ifdefSkip n m args skip lexbuf
+ else INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m))
else
let lexed = lexeme lexbuf
let lookup id = List.contains id args.conditionalDefines
let _, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion lexbuf.StrictIndentation args lookup lexed
- LexbufIfdefStore.SaveIfHash(lexbuf, lexed, expr, m)
- let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n+1, m)))
- if not skip then tok else endline (LexerEndlineContinuation.Skip(n+1, m)) args skip lexbuf
-//# 3000 "lex.fs"
+ IfdefStore.SaveIfHash(lexbuf, lexed, expr, m)
+ let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.IfdefSkip(n+1, m)))
+ if skip then endline (LexerEndlineContinuation.IfdefSkip(n+1, m)) args skip lexbuf else tok
+//# 3037 "lex.fs"
)
| 1 -> (
-//# 1140 "src/Compiler/lex.fsl"
+//# 1168 "src/Compiler/lex.fsl"
let lexed = (lexeme lexbuf)
let m = lexbuf.LexemeRange
// If #else is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #else ...")
@@ -3013,18 +3050,18 @@ and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf =
| (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse())
| (IfDefIf,_) :: rest ->
let m = lexbuf.LexemeRange
- LexbufIfdefStore.SaveElseHash(lexbuf, lexed, m)
+ IfdefStore.SaveElseHash(lexbuf, lexed, m)
args.ifdefStack <- (IfDefElse,m) :: rest
if not skip then HASH_ELSE(m,lexed,LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Token))
else endline LexerEndlineContinuation.Token args skip lexbuf
- else
- LexbufIfdefStore.SaveElseHash(lexbuf, lexed, m)
- if not skip then INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n, m)))
- else endline (LexerEndlineContinuation.Skip(n, m)) args skip lexbuf
-//# 3024 "lex.fs"
+ else
+ IfdefStore.SaveElseHash(lexbuf, lexed, m)
+ if not skip then INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.IfdefSkip(n, m)))
+ else endline (LexerEndlineContinuation.IfdefSkip(n, m)) args skip lexbuf
+//# 3061 "lex.fs"
)
| 2 -> (
-//# 1163 "src/Compiler/lex.fsl"
+//# 1191 "src/Compiler/lex.fsl"
let lexed = lexeme lexbuf
let m = lexbuf.LexemeRange
// If #endif is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #endif ...")
@@ -3035,76 +3072,76 @@ and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf =
match args.ifdefStack with
| [] -> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf())
| _ :: rest ->
- LexbufIfdefStore.SaveEndIfHash(lexbuf, lexed, m)
+ IfdefStore.SaveEndIfHash(lexbuf, lexed, m)
args.ifdefStack <- rest
if not skip then HASH_ENDIF(m,lexed,LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Token))
else endline LexerEndlineContinuation.Token args skip lexbuf
else
- LexbufIfdefStore.SaveEndIfHash(lexbuf, lexed, m)
- let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n-1, m)))
- let tok = shouldStartLine args lexbuf m (FSComp.SR.lexWrongNestedHashEndif()) tok
- if not skip then tok else endline (LexerEndlineContinuation.Skip(n-1, m)) args skip lexbuf
-//# 3047 "lex.fs"
+ shouldStartLine args lexbuf m (FSComp.SR.lexWrongNestedHashEndif())
+ IfdefStore.SaveEndIfHash(lexbuf, lexed, m)
+ let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.IfdefSkip(n-1, m)))
+ if not skip then tok else endline (LexerEndlineContinuation.IfdefSkip(n-1, m)) args skip lexbuf
+//# 3084 "lex.fs"
)
| 3 -> (
-//# 1185 "src/Compiler/lex.fsl"
- newline lexbuf; ifdefSkip n m args skip lexbuf
-//# 3052 "lex.fs"
+//# 1213 "src/Compiler/lex.fsl"
+ incrLine lexbuf; ifdefSkip n m args skip lexbuf
+//# 3089 "lex.fs"
)
| 4 -> (
-//# 1194 "src/Compiler/lex.fsl"
+//# 1222 "src/Compiler/lex.fsl"
// This tries to be nice and get tokens as 'words' because VS uses this when selecting stuff
if not skip then INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m))
else ifdefSkip n m args skip lexbuf
-//# 3059 "lex.fs"
+//# 3096 "lex.fs"
)
| 5 -> (
-//# 1199 "src/Compiler/lex.fsl"
+//# 1227 "src/Compiler/lex.fsl"
EOF (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m))
-//# 3064 "lex.fs"
+//# 3101 "lex.fs"
)
| _ -> failwith "ifdefSkip"
// Rule endline
and endline (cont: LexerEndlineContinuation) (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(337,lexbuf) with
| 0 -> (
-//# 1205 "src/Compiler/lex.fsl"
- newline lexbuf
+//# 1233 "src/Compiler/lex.fsl"
+ incrLine lexbuf
match cont with
| LexerEndlineContinuation.Token ->
if not skip then WHITESPACE(LexCont.Token (args.ifdefStack, args.stringNest))
else token args skip lexbuf
- | LexerEndlineContinuation.Skip(n, m) ->
+ | LexerEndlineContinuation.IfdefSkip(n, m) ->
if not skip then INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m))
else ifdefSkip n m args skip lexbuf
-//# 3081 "lex.fs"
+//# 3118 "lex.fs"
)
| 1 -> (
-//# 1217 "src/Compiler/lex.fsl"
+//# 1245 "src/Compiler/lex.fsl"
match cont with
| LexerEndlineContinuation.Token ->
EOF(LexCont.Token(args.ifdefStack, args.stringNest))
- | LexerEndlineContinuation.Skip(n, m) ->
+ | LexerEndlineContinuation.IfdefSkip(n, m) ->
EOF(LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m))
-//# 3091 "lex.fs"
+//# 3128 "lex.fs"
)
| 2 -> (
-//# 1227 "src/Compiler/lex.fsl"
+//# 1255 "src/Compiler/lex.fsl"
let tok = WHITESPACE (LexCont.Token (args.ifdefStack, args.stringNest))
let tok = fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) tok
if not skip then tok else token args skip lexbuf
-//# 3098 "lex.fs"
+//# 3135 "lex.fs"
)
| _ -> failwith "endline"
// Rule singleQuoteString
and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(280,lexbuf) with
| 0 -> (
-//# 1233 "src/Compiler/lex.fsl"
+//# 1261 "src/Compiler/lex.fsl"
let (_buf, _fin, m, kind, args) = sargs
- newline lexbuf
+ incrLine lexbuf
let text = lexeme lexbuf
let text2 = text |> String.filter (fun c -> c <> ' ' && c <> '\t')
advanceColumnBy lexbuf (text.Length - text2.Length)
@@ -3112,51 +3149,66 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3115 "lex.fs"
+//# 3152 "lex.fs"
)
| 1 -> (
-//# 1244 "src/Compiler/lex.fsl"
+//# 1272 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addByteChar buf (escape (lexeme lexbuf).[1])
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3125 "lex.fs"
+//# 3162 "lex.fs"
)
| 2 -> (
-//# 1252 "src/Compiler/lex.fsl"
+//# 1280 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let s = lexeme lexbuf
- addByteChar buf (trigraph s.[1] s.[2] s.[3])
- if not skip then
- STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
+ let result() =
+ if not skip then
+ STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
+ else
+ singleQuoteString sargs skip lexbuf
+ let c = trigraph s.[1] s.[2] s.[3]
+ let x = int c
+ if x < 0 || x > 255 then
+ // TODO: Promote to Error:
+ // * remove `addByteChar ...`
+ // * remove `warning ...`
+ // * Adjust `lexInvalidCharLiteralInString` in `FSComp.txt`: remove `Note` (incl. 2nd placeholder)
+ // * uncomment `fail ...`
+ addByteChar buf c
+ warning (Error(FSComp.SR.lexInvalidCharLiteralInString (s[0..3], sprintf "\\%03i" (x % 256)), lexbuf.LexemeRange))
+ //fail args lexbuf (FSComp.SR.lexInvalidCharLiteralInString (s[0..3])) ()
+ result()
else
- singleQuoteString sargs skip lexbuf
-//# 3136 "lex.fs"
+ addByteChar buf c
+ result()
+//# 3188 "lex.fs"
)
| 3 -> (
-//# 1261 "src/Compiler/lex.fsl"
+//# 1304 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeChar buf (int (hexGraphShort (lexemeTrimLeft lexbuf 2)))
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3146 "lex.fs"
+//# 3198 "lex.fs"
)
| 4 -> (
-//# 1269 "src/Compiler/lex.fsl"
+//# 1312 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeChar buf (int (unicodeGraphShort (lexemeTrimLeft lexbuf 2)))
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3156 "lex.fs"
+//# 3208 "lex.fs"
)
| 5 -> (
-//# 1277 "src/Compiler/lex.fsl"
+//# 1320 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let hexChars = lexemeTrimLeft lexbuf 2
let result() =
@@ -3166,7 +3218,8 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
singleQuoteString sargs skip lexbuf
match unicodeGraphLong hexChars with
| Invalid ->
- fail args lexbuf (FSComp.SR.lexInvalidUnicodeLiteral hexChars) (result())
+ fail args lexbuf (FSComp.SR.lexInvalidUnicodeLiteral hexChars) ()
+ result()
| SingleChar(c) ->
addUnicodeChar buf (int c)
result()
@@ -3174,26 +3227,26 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
addUnicodeChar buf (int hi)
addUnicodeChar buf (int lo)
result()
-//# 3177 "lex.fs"
+//# 3230 "lex.fs"
)
| 6 -> (
-//# 1296 "src/Compiler/lex.fsl"
+//# 1340 "src/Compiler/lex.fsl"
let (buf, fin, _m, kind, args) = sargs
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind (LexerStringFinisherContext()) cont
-//# 3185 "lex.fs"
+//# 3238 "lex.fs"
)
| 7 -> (
-//# 1302 "src/Compiler/lex.fsl"
+//# 1346 "src/Compiler/lex.fsl"
let (buf, fin, _m, kind, args) = sargs
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf { kind with IsByteString = true } (LexerStringFinisherContext()) cont
-//# 3193 "lex.fs"
+//# 3246 "lex.fs"
)
| 8 -> (
-//# 1308 "src/Compiler/lex.fsl"
+//# 1352 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let s = lexeme lexbuf
addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s)
@@ -3201,15 +3254,15 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3204 "lex.fs"
+//# 3257 "lex.fs"
)
| 9 -> (
-//# 1317 "src/Compiler/lex.fsl"
+//# 1361 "src/Compiler/lex.fsl"
let (buf, fin, m, kind, args) = sargs
if kind.IsInterpolated then
// get a new range for where the fill starts
let m2 = lexbuf.LexemeRange
- args.stringNest <- (1, LexerStringStyle.SingleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest
+ args.stringNest <- (1, LexerStringStyle.SingleQuote, args.interpolationDelimiterLength, None, m2) :: args.stringNest
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind LexerStringFinisherContext.InterpolatedPart cont
else
@@ -3219,10 +3272,10 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
else
singleQuoteString sargs skip lexbuf
-//# 3222 "lex.fs"
+//# 3275 "lex.fs"
)
| 10 -> (
-//# 1333 "src/Compiler/lex.fsl"
+//# 1377 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let result() =
if not skip then
@@ -3234,108 +3287,108 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
else
addUnicodeString buf (lexeme lexbuf)
(result())
-//# 3237 "lex.fs"
+//# 3290 "lex.fs"
)
| 11 -> (
-//# 1346 "src/Compiler/lex.fsl"
+//# 1390 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
- newline lexbuf
+ incrLine lexbuf
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3248 "lex.fs"
+//# 3301 "lex.fs"
)
| 12 -> (
-//# 1355 "src/Compiler/lex.fsl"
+//# 1399 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3258 "lex.fs"
+//# 3311 "lex.fs"
)
| 13 -> (
-//# 1364 "src/Compiler/lex.fsl"
+//# 1408 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3268 "lex.fs"
+//# 3321 "lex.fs"
)
| 14 -> (
-//# 1372 "src/Compiler/lex.fsl"
+//# 1416 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3278 "lex.fs"
+//# 3331 "lex.fs"
)
| 15 -> (
-//# 1380 "src/Compiler/lex.fsl"
+//# 1424 "src/Compiler/lex.fsl"
let (_buf, _fin, m, kind, args) = sargs
EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
-//# 3284 "lex.fs"
+//# 3337 "lex.fs"
)
| 16 -> (
-//# 1386 "src/Compiler/lex.fsl"
+//# 1430 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m))
else
singleQuoteString sargs skip lexbuf
-//# 3294 "lex.fs"
+//# 3347 "lex.fs"
)
| _ -> failwith "singleQuoteString"
// Rule verbatimString
and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(247,lexbuf) with
| 0 -> (
-//# 1395 "src/Compiler/lex.fsl"
+//# 1439 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addByteChar buf '\"'
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3308 "lex.fs"
+//# 3361 "lex.fs"
)
| 1 -> (
-//# 1403 "src/Compiler/lex.fsl"
+//# 1447 "src/Compiler/lex.fsl"
let (buf, fin, _m, kind, args) = sargs
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind LexerStringFinisherContext.Verbatim cont
-//# 3316 "lex.fs"
+//# 3369 "lex.fs"
)
| 2 -> (
-//# 1409 "src/Compiler/lex.fsl"
+//# 1453 "src/Compiler/lex.fsl"
let (buf, fin, _m, kind, args) = sargs
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf { kind with IsByteString = true } LexerStringFinisherContext.Verbatim cont
-//# 3324 "lex.fs"
+//# 3377 "lex.fs"
)
| 3 -> (
-//# 1415 "src/Compiler/lex.fsl"
+//# 1459 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
- newline lexbuf
+ incrLine lexbuf
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3335 "lex.fs"
+//# 3388 "lex.fs"
)
| 4 -> (
-//# 1424 "src/Compiler/lex.fsl"
+//# 1468 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let s = lexeme lexbuf
addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s)
@@ -3343,15 +3396,15 @@ and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf =
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3346 "lex.fs"
+//# 3399 "lex.fs"
)
| 5 -> (
-//# 1433 "src/Compiler/lex.fsl"
+//# 1477 "src/Compiler/lex.fsl"
let (buf, fin, m, kind, args) = sargs
if kind.IsInterpolated then
// get a new range for where the fill starts
let m2 = lexbuf.LexemeRange
- args.stringNest <- (1, LexerStringStyle.Verbatim, args.interpolationDelimiterLength, m2) :: args.stringNest
+ args.stringNest <- (1, LexerStringStyle.Verbatim, args.interpolationDelimiterLength, None, m2) :: args.stringNest
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.Verbatim) cont
else
@@ -3361,10 +3414,10 @@ and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf =
else
verbatimString sargs skip lexbuf
-//# 3364 "lex.fs"
+//# 3417 "lex.fs"
)
| 6 -> (
-//# 1449 "src/Compiler/lex.fsl"
+//# 1493 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let result() =
if not skip then
@@ -3377,109 +3430,109 @@ and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf =
addUnicodeString buf (lexeme lexbuf)
(result())
-//# 3380 "lex.fs"
+//# 3433 "lex.fs"
)
| 7 -> (
-//# 1463 "src/Compiler/lex.fsl"
+//# 1507 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3390 "lex.fs"
+//# 3443 "lex.fs"
)
| 8 -> (
-//# 1472 "src/Compiler/lex.fsl"
+//# 1516 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3400 "lex.fs"
+//# 3453 "lex.fs"
)
| 9 -> (
-//# 1480 "src/Compiler/lex.fsl"
+//# 1524 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3410 "lex.fs"
+//# 3463 "lex.fs"
)
| 10 -> (
-//# 1488 "src/Compiler/lex.fsl"
+//# 1532 "src/Compiler/lex.fsl"
let (_buf, _fin, m, kind, args) = sargs
EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
-//# 3416 "lex.fs"
+//# 3469 "lex.fs"
)
| 11 -> (
-//# 1493 "src/Compiler/lex.fsl"
+//# 1537 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m))
else
verbatimString sargs skip lexbuf
-//# 3426 "lex.fs"
+//# 3479 "lex.fs"
)
| _ -> failwith "verbatimString"
// Rule tripleQuoteString
and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(214,lexbuf) with
| 0 -> (
-//# 1502 "src/Compiler/lex.fsl"
+//# 1546 "src/Compiler/lex.fsl"
let (buf, fin, _m, kind, args) = sargs
args.interpolationDelimiterLength <- 0
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind LexerStringFinisherContext.TripleQuote cont
-//# 3438 "lex.fs"
+//# 3491 "lex.fs"
)
| 1 -> (
-//# 1508 "src/Compiler/lex.fsl"
+//# 1552 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
- newline lexbuf
+ incrLine lexbuf
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
else
tripleQuoteString sargs skip lexbuf
-//# 3449 "lex.fs"
+//# 3502 "lex.fs"
)
| 2 -> (
-//# 1518 "src/Compiler/lex.fsl"
+//# 1562 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
else
tripleQuoteString sargs skip lexbuf
-//# 3459 "lex.fs"
+//# 3512 "lex.fs"
)
| 3 -> (
-//# 1527 "src/Compiler/lex.fsl"
+//# 1571 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
else
tripleQuoteString sargs skip lexbuf
-//# 3469 "lex.fs"
+//# 3522 "lex.fs"
)
| 4 -> (
-//# 1535 "src/Compiler/lex.fsl"
+//# 1579 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
else
tripleQuoteString sargs skip lexbuf
-//# 3479 "lex.fs"
+//# 3532 "lex.fs"
)
| 5 -> (
-//# 1543 "src/Compiler/lex.fsl"
+//# 1587 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let s = lexeme lexbuf
addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s)
@@ -3487,15 +3540,15 @@ and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
else
tripleQuoteString sargs skip lexbuf
-//# 3490 "lex.fs"
+//# 3543 "lex.fs"
)
| 6 -> (
-//# 1552 "src/Compiler/lex.fsl"
+//# 1596 "src/Compiler/lex.fsl"
let (buf, fin, m, kind, args) = sargs
if kind.IsInterpolated then
// get a new range for where the fill starts
let m2 = lexbuf.LexemeRange
- args.stringNest <- (1, LexerStringStyle.TripleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest
+ args.stringNest <- (1, LexerStringStyle.TripleQuote, args.interpolationDelimiterLength, None, m2) :: args.stringNest
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont
else
@@ -3505,10 +3558,10 @@ and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
else
tripleQuoteString sargs skip lexbuf
-//# 3508 "lex.fs"
+//# 3561 "lex.fs"
)
| 7 -> (
-//# 1568 "src/Compiler/lex.fsl"
+//# 1612 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let result() =
if not skip then
@@ -3521,59 +3574,59 @@ and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf =
addUnicodeString buf (lexeme lexbuf)
(result())
-//# 3524 "lex.fs"
+//# 3577 "lex.fs"
)
| 8 -> (
-//# 1582 "src/Compiler/lex.fsl"
+//# 1626 "src/Compiler/lex.fsl"
let (_buf, _fin, m, kind, args) = sargs
EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
-//# 3530 "lex.fs"
+//# 3583 "lex.fs"
)
| 9 -> (
-//# 1587 "src/Compiler/lex.fsl"
+//# 1631 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m))
else
tripleQuoteString sargs skip lexbuf
-//# 3540 "lex.fs"
+//# 3593 "lex.fs"
)
| _ -> failwith "tripleQuoteString"
// Rule extendedInterpolatedString
and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(178,lexbuf) with
| 0 -> (
-//# 1596 "src/Compiler/lex.fsl"
+//# 1640 "src/Compiler/lex.fsl"
let (buf, fin, _m, kind, args) = sargs
args.interpolationDelimiterLength <- 0
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind LexerStringFinisherContext.TripleQuote cont
-//# 3552 "lex.fs"
+//# 3605 "lex.fs"
)
| 1 -> (
-//# 1602 "src/Compiler/lex.fsl"
+//# 1646 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
- newline lexbuf
+ incrLine lexbuf
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m))
else
extendedInterpolatedString sargs skip lexbuf
-//# 3563 "lex.fs"
+//# 3616 "lex.fs"
)
| 2 -> (
-//# 1615 "src/Compiler/lex.fsl"
+//# 1659 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m))
else
extendedInterpolatedString sargs skip lexbuf
-//# 3573 "lex.fs"
+//# 3626 "lex.fs"
)
| 3 -> (
-//# 1623 "src/Compiler/lex.fsl"
+//# 1667 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let numPercents = lexeme lexbuf |> String.length
let result() =
@@ -3602,10 +3655,10 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf =
let s = String.replicate percentsToEmit "%"
addUnicodeString buf s
result()
-//# 3605 "lex.fs"
+//# 3658 "lex.fs"
)
| 4 -> (
-//# 1653 "src/Compiler/lex.fsl"
+//# 1697 "src/Compiler/lex.fsl"
let (buf, fin, m, kind, args) = sargs
let numBraces = String.length (lexeme lexbuf)
// Extended interpolated strings starts with at least 2 $
@@ -3614,7 +3667,7 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf =
let maxBraces = 2 * args.interpolationDelimiterLength - 1
if numBraces > maxBraces then
let m2 = lexbuf.LexemeRange
- args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest
+ args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, None, m2) :: args.stringNest
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fail args lexbuf
(FSComp.SR.lexTooManyLBracesInTripleQuote())
@@ -3635,14 +3688,14 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf =
String.replicate extraBraces "{" |> addUnicodeString buf
// get a new range for where the fill starts
let m2 = lexbuf.LexemeRange
- args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest
+ args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, None, m2) :: args.stringNest
let cont = LexCont.Token(args.ifdefStack, args.stringNest)
fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont
-//# 3642 "lex.fs"
+//# 3695 "lex.fs"
)
| 5 -> (
-//# 1688 "src/Compiler/lex.fsl"
+//# 1732 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
let numBraces = lexeme lexbuf |> String.length
let result() =
@@ -3656,318 +3709,318 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf =
else
fail args lexbuf (FSComp.SR.lexUnmatchedRBracesInTripleQuote()) (result())
-//# 3659 "lex.fs"
+//# 3712 "lex.fs"
)
| 6 -> (
-//# 1703 "src/Compiler/lex.fsl"
+//# 1747 "src/Compiler/lex.fsl"
let (_buf, _fin, m, kind, args) = sargs
EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m))
-//# 3665 "lex.fs"
+//# 3718 "lex.fs"
)
| 7 -> (
-//# 1708 "src/Compiler/lex.fsl"
+//# 1752 "src/Compiler/lex.fsl"
let (buf, _fin, m, kind, args) = sargs
addUnicodeString buf (lexeme lexbuf)
if not skip then
STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m))
else
extendedInterpolatedString sargs skip lexbuf
-//# 3675 "lex.fs"
+//# 3728 "lex.fs"
)
| _ -> failwith "extendedInterpolatedString"
// Rule singleLineComment
and singleLineComment (cargs: SingleLineCommentArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(165,lexbuf) with
| 0 -> (
-//# 1718 "src/Compiler/lex.fsl"
+//# 1762 "src/Compiler/lex.fsl"
let buff,_n, mStart, mEnd, args = cargs
trySaveXmlDoc lexbuf buff
- newline lexbuf
+ incrLine lexbuf
// Saves the documentation (if we're collecting any) into a buffer-local variable.
if not skip then LINE_COMMENT (LexCont.Token(args.ifdefStack, args.stringNest))
else
- if Option.isNone buff then LexbufCommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd)
+ if Option.isNone buff then CommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd)
token args skip lexbuf
-//# 3691 "lex.fs"
+//# 3744 "lex.fs"
)
| 1 -> (
-//# 1728 "src/Compiler/lex.fsl"
+//# 1772 "src/Compiler/lex.fsl"
let buff, _n, mStart, mEnd, args = cargs
trySaveXmlDoc lexbuf buff
- LexbufCommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd)
+ CommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd)
// NOTE: it is legal to end a file with this comment, so we'll return EOF as a token
EOF (LexCont.Token(args.ifdefStack, args.stringNest))
-//# 3700 "lex.fs"
+//# 3753 "lex.fs"
)
| 2 -> (
-//# 1736 "src/Compiler/lex.fsl"
+//# 1780 "src/Compiler/lex.fsl"
let buff, n, m, _, args = cargs
// Append the current token to the XML documentation if we're collecting it
tryAppendXmlDoc buff (lexeme lexbuf)
if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, n, m))
else singleLineComment (buff, n, m, lexbuf.LexemeRange, args) skip lexbuf
-//# 3709 "lex.fs"
+//# 3762 "lex.fs"
)
| 3 -> (
-//# 1743 "src/Compiler/lex.fsl"
+//# 1787 "src/Compiler/lex.fsl"
let _, _n, _mStart, _mEnd, args = cargs
if not skip then LINE_COMMENT (LexCont.Token(args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 3716 "lex.fs"
+//# 3769 "lex.fs"
)
| _ -> failwith "singleLineComment"
// Rule comment
and comment (cargs: BlockCommentArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(139,lexbuf) with
| 0 -> (
-//# 1750 "src/Compiler/lex.fsl"
+//# 1794 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment (n, m, args) skip lexbuf
-//# 3727 "lex.fs"
+//# 3780 "lex.fs"
)
| 1 -> (
-//# 1755 "src/Compiler/lex.fsl"
+//# 1799 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m))
else stringInComment n m args skip lexbuf
-//# 3734 "lex.fs"
+//# 3787 "lex.fs"
)
| 2 -> (
-//# 1760 "src/Compiler/lex.fsl"
+//# 1804 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m))
else tripleQuoteStringInComment n m args skip lexbuf
-//# 3741 "lex.fs"
+//# 3794 "lex.fs"
)
| 3 -> (
-//# 1765 "src/Compiler/lex.fsl"
+//# 1809 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m))
else verbatimStringInComment n m args skip lexbuf
-//# 3748 "lex.fs"
+//# 3801 "lex.fs"
)
| 4 -> (
-//# 1770 "src/Compiler/lex.fsl"
+//# 1814 "src/Compiler/lex.fsl"
let n, m, args = cargs
- LexbufLocalXmlDocStore.AddGrabPoint(lexbuf)
+ XmlDocStore.AddGrabPoint(lexbuf)
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment cargs skip lexbuf
-//# 3756 "lex.fs"
+//# 3809 "lex.fs"
)
| 5 -> (
-//# 1776 "src/Compiler/lex.fsl"
+//# 1820 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n+1, m))
else comment (n+1,m,args) skip lexbuf
-//# 3763 "lex.fs"
+//# 3816 "lex.fs"
)
| 6 -> (
-//# 1781 "src/Compiler/lex.fsl"
+//# 1825 "src/Compiler/lex.fsl"
let n, m, args = cargs
- newline lexbuf
+ incrLine lexbuf
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment cargs skip lexbuf
-//# 3771 "lex.fs"
+//# 3824 "lex.fs"
)
| 7 -> (
-//# 1786 "src/Compiler/lex.fsl"
+//# 1830 "src/Compiler/lex.fsl"
let n, m, args = cargs
if n > 1 then
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n-1, m))
else comment (n-1,m,args) skip lexbuf
else
- LexbufLocalXmlDocStore.AddGrabPointDelayed(lexbuf)
+ XmlDocStore.AddGrabPointDelayed(lexbuf)
if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest))
else
- LexbufCommentStore.SaveBlockComment(lexbuf, m, lexbuf.LexemeRange)
+ CommentStore.SaveBlockComment(lexbuf, m, lexbuf.LexemeRange)
token args skip lexbuf
-//# 3786 "lex.fs"
+//# 3839 "lex.fs"
)
| 8 -> (
-//# 1800 "src/Compiler/lex.fsl"
+//# 1844 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment cargs skip lexbuf
-//# 3793 "lex.fs"
+//# 3846 "lex.fs"
)
| 9 -> (
-//# 1805 "src/Compiler/lex.fsl"
+//# 1849 "src/Compiler/lex.fsl"
let n, m, args = cargs
EOF (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
-//# 3799 "lex.fs"
+//# 3852 "lex.fs"
)
| 10 -> (
-//# 1809 "src/Compiler/lex.fsl"
+//# 1853 "src/Compiler/lex.fsl"
let n, m, args = cargs
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment (n, m, args) skip lexbuf
-//# 3806 "lex.fs"
+//# 3859 "lex.fs"
)
| _ -> failwith "comment"
// Rule stringInComment
and stringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(90,lexbuf) with
| 0 -> (
-//# 1816 "src/Compiler/lex.fsl"
- newline lexbuf
+//# 1860 "src/Compiler/lex.fsl"
+ incrLine lexbuf
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m))
else stringInComment n m args skip lexbuf
-//# 3817 "lex.fs"
+//# 3870 "lex.fs"
)
| 1 -> (
-//# 1829 "src/Compiler/lex.fsl"
+//# 1873 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m))
else stringInComment n m args skip lexbuf
-//# 3823 "lex.fs"
+//# 3876 "lex.fs"
)
| 2 -> (
-//# 1834 "src/Compiler/lex.fsl"
+//# 1878 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment (n, m, args) skip lexbuf
-//# 3829 "lex.fs"
+//# 3882 "lex.fs"
)
| 3 -> (
-//# 1838 "src/Compiler/lex.fsl"
- newline lexbuf
+//# 1882 "src/Compiler/lex.fsl"
+ incrLine lexbuf
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m))
else stringInComment n m args skip lexbuf
-//# 3836 "lex.fs"
+//# 3889 "lex.fs"
)
| 4 -> (
-//# 1843 "src/Compiler/lex.fsl"
+//# 1887 "src/Compiler/lex.fsl"
EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m))
-//# 3841 "lex.fs"
+//# 3894 "lex.fs"
)
| 5 -> (
-//# 1847 "src/Compiler/lex.fsl"
+//# 1891 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m))
else stringInComment n m args skip lexbuf
-//# 3847 "lex.fs"
+//# 3900 "lex.fs"
)
| _ -> failwith "stringInComment"
// Rule verbatimStringInComment
and verbatimStringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(61,lexbuf) with
| 0 -> (
-//# 1853 "src/Compiler/lex.fsl"
+//# 1897 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m))
else verbatimStringInComment n m args skip lexbuf
-//# 3857 "lex.fs"
+//# 3910 "lex.fs"
)
| 1 -> (
-//# 1857 "src/Compiler/lex.fsl"
+//# 1901 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment (n, m, args) skip lexbuf
-//# 3863 "lex.fs"
+//# 3916 "lex.fs"
)
| 2 -> (
-//# 1864 "src/Compiler/lex.fsl"
+//# 1908 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m))
else verbatimStringInComment n m args skip lexbuf
-//# 3869 "lex.fs"
+//# 3922 "lex.fs"
)
| 3 -> (
-//# 1868 "src/Compiler/lex.fsl"
- newline lexbuf
+//# 1912 "src/Compiler/lex.fsl"
+ incrLine lexbuf
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m))
else verbatimStringInComment n m args skip lexbuf
-//# 3876 "lex.fs"
+//# 3929 "lex.fs"
)
| 4 -> (
-//# 1873 "src/Compiler/lex.fsl"
+//# 1917 "src/Compiler/lex.fsl"
EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m))
-//# 3881 "lex.fs"
+//# 3934 "lex.fs"
)
| 5 -> (
-//# 1877 "src/Compiler/lex.fsl"
+//# 1921 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m))
else verbatimStringInComment n m args skip lexbuf
-//# 3887 "lex.fs"
+//# 3940 "lex.fs"
)
| _ -> failwith "verbatimStringInComment"
// Rule tripleQuoteStringInComment
and tripleQuoteStringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(31,lexbuf) with
| 0 -> (
-//# 1883 "src/Compiler/lex.fsl"
+//# 1927 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m))
else comment (n, m, args) skip lexbuf
-//# 3897 "lex.fs"
+//# 3950 "lex.fs"
)
| 1 -> (
-//# 1890 "src/Compiler/lex.fsl"
+//# 1934 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m))
else tripleQuoteStringInComment n m args skip lexbuf
-//# 3903 "lex.fs"
+//# 3956 "lex.fs"
)
| 2 -> (
-//# 1894 "src/Compiler/lex.fsl"
- newline lexbuf
+//# 1938 "src/Compiler/lex.fsl"
+ incrLine lexbuf
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m))
else tripleQuoteStringInComment n m args skip lexbuf
-//# 3910 "lex.fs"
+//# 3963 "lex.fs"
)
| 3 -> (
-//# 1899 "src/Compiler/lex.fsl"
+//# 1943 "src/Compiler/lex.fsl"
EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m))
-//# 3915 "lex.fs"
+//# 3968 "lex.fs"
)
| 4 -> (
-//# 1903 "src/Compiler/lex.fsl"
+//# 1947 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m))
else tripleQuoteStringInComment n m args skip lexbuf
-//# 3921 "lex.fs"
+//# 3974 "lex.fs"
)
| _ -> failwith "tripleQuoteStringInComment"
// Rule mlOnly
and mlOnly (m: range) (args: LexArgs) (skip: bool) lexbuf =
match _fslex_tables.Interpret(0,lexbuf) with
| 0 -> (
-//# 1909 "src/Compiler/lex.fsl"
+//# 1953 "src/Compiler/lex.fsl"
let buf = ByteBuffer.Create StringCapacity
let m2 = lexbuf.LexemeRange
let _ = singleQuoteString (buf, LexerStringFinisher.Default, m2, LexerStringKind.String, args) skip lexbuf
if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m))
else mlOnly m args skip lexbuf
-//# 3934 "lex.fs"
+//# 3987 "lex.fs"
)
| 1 -> (
-//# 1916 "src/Compiler/lex.fsl"
- newline lexbuf
+//# 1960 "src/Compiler/lex.fsl"
+ incrLine lexbuf
if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m))
else mlOnly m args skip lexbuf
-//# 3941 "lex.fs"
+//# 3994 "lex.fs"
)
| 2 -> (
-//# 1921 "src/Compiler/lex.fsl"
+//# 1965 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 3947 "lex.fs"
+//# 4000 "lex.fs"
)
| 3 -> (
-//# 1925 "src/Compiler/lex.fsl"
+//# 1969 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest))
else token args skip lexbuf
-//# 3953 "lex.fs"
+//# 4006 "lex.fs"
)
| 4 -> (
-//# 1929 "src/Compiler/lex.fsl"
+//# 1973 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m))
else mlOnly m args skip lexbuf
-//# 3959 "lex.fs"
+//# 4012 "lex.fs"
)
| 5 -> (
-//# 1933 "src/Compiler/lex.fsl"
+//# 1977 "src/Compiler/lex.fsl"
EOF (LexCont.MLOnly(args.ifdefStack, args.stringNest, m))
-//# 3964 "lex.fs"
+//# 4017 "lex.fs"
)
| 6 -> (
-//# 1937 "src/Compiler/lex.fsl"
+//# 1981 "src/Compiler/lex.fsl"
if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m))
else mlOnly m args skip lexbuf
-//# 3970 "lex.fs"
+//# 4023 "lex.fs"
)
| _ -> failwith "mlOnly"
diff --git a/src/fcs-fable/codegen/lex.fsi b/src/fcs-fable/codegen/lex.fsi
index 1c9bc90684..ab2d5e3381 100644
--- a/src/fcs-fable/codegen/lex.fsi
+++ b/src/fcs-fable/codegen/lex.fsi
@@ -5,6 +5,7 @@ open Internal.Utilities.Text.Lexing
open FSharp.Compiler.Parser
open FSharp.Compiler.Text
open FSharp.Compiler.ParseHelpers
+open FSharp.Compiler.LexerStore
/// Rule token
val token: args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token
diff --git a/src/fcs-fable/codegen/pars.fs b/src/fcs-fable/codegen/pars.fs
index 9d1485fbea..a060fa430c 100644
--- a/src/fcs-fable/codegen/pars.fs
+++ b/src/fcs-fable/codegen/pars.fs
@@ -10,6 +10,7 @@ open Internal.Utilities.Text.Parsing.ParseHelpers
#nowarn "1182" // generated code has lots of unused "parseState"
+#nowarn "3261" // the generated code would need to properly annotate nulls, e.g. changing System.Object to `obj|null`
open System
@@ -23,11 +24,13 @@ open FSharp.Compiler.AbstractIL
open FSharp.Compiler.AbstractIL
open FSharp.Compiler.DiagnosticsLogger
open FSharp.Compiler.Features
+open FSharp.Compiler.LexerStore
open FSharp.Compiler.ParseHelpers
open FSharp.Compiler.Syntax
open FSharp.Compiler.SyntaxTrivia
open FSharp.Compiler.Syntax.PrettyNaming
open FSharp.Compiler.SyntaxTreeOps
+open FSharp.Compiler.Text
open FSharp.Compiler.Text.Position
open FSharp.Compiler.Text.Range
open FSharp.Compiler.Xml
@@ -38,7 +41,7 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) ->
errorR(SyntaxError(box ctxt, ctxt.ParseState.LexBuffer.LexemeRange)))
-//# 41 "pars.fs"
+//# 44 "pars.fs"
// This type is the type of tokens accepted by the parser
type token =
| HASH_IF of (range * string * ParseHelpers.LexerContinuation)
@@ -82,6 +85,7 @@ type token =
| TYPE_IS_HERE
| MODULE_COMING_SOON
| MODULE_IS_HERE
+ | BAR_JUST_BEFORE_NULL
| EXTERN
| VOID
| PUBLIC
@@ -287,6 +291,7 @@ type tokenId =
| TOKEN_TYPE_IS_HERE
| TOKEN_MODULE_COMING_SOON
| TOKEN_MODULE_IS_HERE
+ | TOKEN_BAR_JUST_BEFORE_NULL
| TOKEN_EXTERN
| TOKEN_VOID
| TOKEN_PUBLIC
@@ -568,6 +573,7 @@ type nonTerminalId =
| NONTERM_explicitValTyparDeclsCore
| NONTERM_explicitValTyparDecls
| NONTERM_opt_explicitValTyparDecls
+ | NONTERM_hashConstraint
| NONTERM_opt_typeConstraints
| NONTERM_typeConstraints
| NONTERM_intersectionConstraints
@@ -618,10 +624,9 @@ type nonTerminalId =
| NONTERM_atomicRationalConstant
| NONTERM_constant
| NONTERM_bindingPattern
- | NONTERM_simplePattern
- | NONTERM_simplePatternCommaList
| NONTERM_opt_simplePatterns
| NONTERM_simplePatterns
+ | NONTERM_barCanBeRightBeforeNull
| NONTERM_headBindingPattern
| NONTERM_tuplePatternElements
| NONTERM_conjPatternElements
@@ -719,7 +724,9 @@ type nonTerminalId =
| NONTERM_intersectionType
| NONTERM_appTypeCon
| NONTERM_appTypeConPower
- | NONTERM_appType
+ | NONTERM_appTypeCanBeNullable
+ | NONTERM_appTypeNullableInParens
+ | NONTERM_appTypeWithoutNull
| NONTERM_arrayTypeSuffix
| NONTERM_appTypePrefixArguments
| NONTERM_typeArgListElements
@@ -756,11 +763,9 @@ type nonTerminalId =
| NONTERM_opt_declEnd
| NONTERM_opt_ODECLEND
| NONTERM_deprecated_opt_equals
- | NONTERM_opt_equals
| NONTERM_opt_OBLOCKSEP
| NONTERM_opt_seps
| NONTERM_opt_rec
- | NONTERM_opt_bar
| NONTERM_opt_inline
| NONTERM_opt_mutable
| NONTERM_doToken
@@ -828,168 +833,169 @@ let tagOfToken (t:token) =
| TYPE_IS_HERE -> 38
| MODULE_COMING_SOON -> 39
| MODULE_IS_HERE -> 40
- | EXTERN -> 41
- | VOID -> 42
- | PUBLIC -> 43
- | PRIVATE -> 44
- | INTERNAL -> 45
- | GLOBAL -> 46
- | STATIC -> 47
- | MEMBER -> 48
- | CLASS -> 49
- | ABSTRACT -> 50
- | OVERRIDE -> 51
- | DEFAULT -> 52
- | CONSTRUCTOR -> 53
- | INHERIT -> 54
- | GREATER_RBRACK -> 55
- | STRUCT -> 56
- | SIG -> 57
- | BAR -> 58
- | RBRACK -> 59
- | RBRACE_COMING_SOON -> 60
- | RBRACE_IS_HERE -> 61
- | MINUS -> 62
- | DOLLAR -> 63
- | BAR_RBRACK -> 64
- | BAR_RBRACE -> 65
- | UNDERSCORE -> 66
- | SEMICOLON_SEMICOLON -> 67
- | LARROW -> 68
- | EQUALS -> 69
- | LBRACK -> 70
- | LBRACK_BAR -> 71
- | LBRACE_BAR -> 72
- | LBRACK_LESS -> 73
- | QMARK -> 74
- | QMARK_QMARK -> 75
- | DOT -> 76
- | COLON -> 77
- | COLON_COLON -> 78
- | COLON_GREATER -> 79
- | COLON_QMARK_GREATER -> 80
- | COLON_QMARK -> 81
- | COLON_EQUALS -> 82
- | SEMICOLON -> 83
- | WHEN -> 84
- | WHILE -> 85
- | WHILE_BANG -> 86
- | WITH -> 87
- | HASH -> 88
- | AMP -> 89
- | AMP_AMP -> 90
- | QUOTE -> 91
- | LPAREN -> 92
- | RPAREN -> 93
- | RPAREN_COMING_SOON -> 94
- | RPAREN_IS_HERE -> 95
- | STAR -> 96
- | COMMA -> 97
- | RARROW -> 98
- | GREATER_BAR_RBRACK -> 99
- | LPAREN_STAR_RPAREN -> 100
- | OPEN -> 101
- | OR -> 102
- | REC -> 103
- | THEN -> 104
- | TO -> 105
- | TRUE -> 106
- | TRY -> 107
- | TYPE -> 108
- | VAL -> 109
- | INLINE -> 110
- | INTERFACE -> 111
- | INSTANCE -> 112
- | CONST -> 113
- | LAZY -> 114
- | OLAZY -> 115
- | MATCH -> 116
- | MATCH_BANG -> 117
- | MUTABLE -> 118
- | NEW -> 119
- | OF -> 120
- | EXCEPTION -> 121
- | FALSE -> 122
- | FOR -> 123
- | FUN -> 124
- | FUNCTION -> 125
- | IF -> 126
- | IN -> 127
- | JOIN_IN -> 128
- | FINALLY -> 129
- | DO_BANG -> 130
- | AND -> 131
- | AS -> 132
- | ASSERT -> 133
- | OASSERT -> 134
- | ASR -> 135
- | BEGIN -> 136
- | DO -> 137
- | DONE -> 138
- | DOWNTO -> 139
- | ELSE -> 140
- | ELIF -> 141
- | END -> 142
- | DOT_DOT -> 143
- | DOT_DOT_HAT -> 144
- | BAR_BAR -> 145
- | UPCAST -> 146
- | DOWNCAST -> 147
- | NULL -> 148
- | RESERVED -> 149
- | MODULE -> 150
- | NAMESPACE -> 151
- | DELEGATE -> 152
- | CONSTRAINT -> 153
- | BASE -> 154
- | LQUOTE _ -> 155
- | RQUOTE _ -> 156
- | RQUOTE_DOT _ -> 157
- | PERCENT_OP _ -> 158
- | BINDER _ -> 159
- | LESS _ -> 160
- | GREATER _ -> 161
- | LET _ -> 162
- | YIELD _ -> 163
- | YIELD_BANG _ -> 164
- | AND_BANG _ -> 165
- | BIGNUM _ -> 166
- | DECIMAL _ -> 167
- | CHAR _ -> 168
- | IEEE64 _ -> 169
- | IEEE32 _ -> 170
- | UNATIVEINT _ -> 171
- | UINT64 _ -> 172
- | UINT32 _ -> 173
- | UINT16 _ -> 174
- | UINT8 _ -> 175
- | NATIVEINT _ -> 176
- | INT64 _ -> 177
- | INT32 _ -> 178
- | INT32_DOT_DOT _ -> 179
- | INT16 _ -> 180
- | INT8 _ -> 181
- | FUNKY_OPERATOR_NAME _ -> 182
- | ADJACENT_PREFIX_OP _ -> 183
- | PLUS_MINUS_OP _ -> 184
- | INFIX_AMP_OP _ -> 185
- | INFIX_STAR_DIV_MOD_OP _ -> 186
- | PREFIX_OP _ -> 187
- | INFIX_BAR_OP _ -> 188
- | INFIX_AT_HAT_OP _ -> 189
- | INFIX_COMPARE_OP _ -> 190
- | INFIX_STAR_STAR_OP _ -> 191
- | HASH_IDENT _ -> 192
- | IDENT _ -> 193
- | KEYWORD_STRING _ -> 194
- | LBRACE _ -> 195
- | RBRACE _ -> 196
- | INTERP_STRING_END _ -> 197
- | INTERP_STRING_PART _ -> 198
- | INTERP_STRING_BEGIN_PART _ -> 199
- | INTERP_STRING_BEGIN_END _ -> 200
- | STRING _ -> 201
- | BYTEARRAY _ -> 202
+ | BAR_JUST_BEFORE_NULL -> 41
+ | EXTERN -> 42
+ | VOID -> 43
+ | PUBLIC -> 44
+ | PRIVATE -> 45
+ | INTERNAL -> 46
+ | GLOBAL -> 47
+ | STATIC -> 48
+ | MEMBER -> 49
+ | CLASS -> 50
+ | ABSTRACT -> 51
+ | OVERRIDE -> 52
+ | DEFAULT -> 53
+ | CONSTRUCTOR -> 54
+ | INHERIT -> 55
+ | GREATER_RBRACK -> 56
+ | STRUCT -> 57
+ | SIG -> 58
+ | BAR -> 59
+ | RBRACK -> 60
+ | RBRACE_COMING_SOON -> 61
+ | RBRACE_IS_HERE -> 62
+ | MINUS -> 63
+ | DOLLAR -> 64
+ | BAR_RBRACK -> 65
+ | BAR_RBRACE -> 66
+ | UNDERSCORE -> 67
+ | SEMICOLON_SEMICOLON -> 68
+ | LARROW -> 69
+ | EQUALS -> 70
+ | LBRACK -> 71
+ | LBRACK_BAR -> 72
+ | LBRACE_BAR -> 73
+ | LBRACK_LESS -> 74
+ | QMARK -> 75
+ | QMARK_QMARK -> 76
+ | DOT -> 77
+ | COLON -> 78
+ | COLON_COLON -> 79
+ | COLON_GREATER -> 80
+ | COLON_QMARK_GREATER -> 81
+ | COLON_QMARK -> 82
+ | COLON_EQUALS -> 83
+ | SEMICOLON -> 84
+ | WHEN -> 85
+ | WHILE -> 86
+ | WHILE_BANG -> 87
+ | WITH -> 88
+ | HASH -> 89
+ | AMP -> 90
+ | AMP_AMP -> 91
+ | QUOTE -> 92
+ | LPAREN -> 93
+ | RPAREN -> 94
+ | RPAREN_COMING_SOON -> 95
+ | RPAREN_IS_HERE -> 96
+ | STAR -> 97
+ | COMMA -> 98
+ | RARROW -> 99
+ | GREATER_BAR_RBRACK -> 100
+ | LPAREN_STAR_RPAREN -> 101
+ | OPEN -> 102
+ | OR -> 103
+ | REC -> 104
+ | THEN -> 105
+ | TO -> 106
+ | TRUE -> 107
+ | TRY -> 108
+ | TYPE -> 109
+ | VAL -> 110
+ | INLINE -> 111
+ | INTERFACE -> 112
+ | INSTANCE -> 113
+ | CONST -> 114
+ | LAZY -> 115
+ | OLAZY -> 116
+ | MATCH -> 117
+ | MATCH_BANG -> 118
+ | MUTABLE -> 119
+ | NEW -> 120
+ | OF -> 121
+ | EXCEPTION -> 122
+ | FALSE -> 123
+ | FOR -> 124
+ | FUN -> 125
+ | FUNCTION -> 126
+ | IF -> 127
+ | IN -> 128
+ | JOIN_IN -> 129
+ | FINALLY -> 130
+ | DO_BANG -> 131
+ | AND -> 132
+ | AS -> 133
+ | ASSERT -> 134
+ | OASSERT -> 135
+ | ASR -> 136
+ | BEGIN -> 137
+ | DO -> 138
+ | DONE -> 139
+ | DOWNTO -> 140
+ | ELSE -> 141
+ | ELIF -> 142
+ | END -> 143
+ | DOT_DOT -> 144
+ | DOT_DOT_HAT -> 145
+ | BAR_BAR -> 146
+ | UPCAST -> 147
+ | DOWNCAST -> 148
+ | NULL -> 149
+ | RESERVED -> 150
+ | MODULE -> 151
+ | NAMESPACE -> 152
+ | DELEGATE -> 153
+ | CONSTRAINT -> 154
+ | BASE -> 155
+ | LQUOTE _ -> 156
+ | RQUOTE _ -> 157
+ | RQUOTE_DOT _ -> 158
+ | PERCENT_OP _ -> 159
+ | BINDER _ -> 160
+ | LESS _ -> 161
+ | GREATER _ -> 162
+ | LET _ -> 163
+ | YIELD _ -> 164
+ | YIELD_BANG _ -> 165
+ | AND_BANG _ -> 166
+ | BIGNUM _ -> 167
+ | DECIMAL _ -> 168
+ | CHAR _ -> 169
+ | IEEE64 _ -> 170
+ | IEEE32 _ -> 171
+ | UNATIVEINT _ -> 172
+ | UINT64 _ -> 173
+ | UINT32 _ -> 174
+ | UINT16 _ -> 175
+ | UINT8 _ -> 176
+ | NATIVEINT _ -> 177
+ | INT64 _ -> 178
+ | INT32 _ -> 179
+ | INT32_DOT_DOT _ -> 180
+ | INT16 _ -> 181
+ | INT8 _ -> 182
+ | FUNKY_OPERATOR_NAME _ -> 183
+ | ADJACENT_PREFIX_OP _ -> 184
+ | PLUS_MINUS_OP _ -> 185
+ | INFIX_AMP_OP _ -> 186
+ | INFIX_STAR_DIV_MOD_OP _ -> 187
+ | PREFIX_OP _ -> 188
+ | INFIX_BAR_OP _ -> 189
+ | INFIX_AT_HAT_OP _ -> 190
+ | INFIX_COMPARE_OP _ -> 191
+ | INFIX_STAR_STAR_OP _ -> 192
+ | HASH_IDENT _ -> 193
+ | IDENT _ -> 194
+ | KEYWORD_STRING _ -> 195
+ | LBRACE _ -> 196
+ | RBRACE _ -> 197
+ | INTERP_STRING_END _ -> 198
+ | INTERP_STRING_PART _ -> 199
+ | INTERP_STRING_BEGIN_PART _ -> 200
+ | INTERP_STRING_BEGIN_END _ -> 201
+ | STRING _ -> 202
+ | BYTEARRAY _ -> 203
// This function maps integer indexes to symbolic token ids
let tokenTagToTokenId (tokenIdx:int) =
@@ -1035,170 +1041,171 @@ let tokenTagToTokenId (tokenIdx:int) =
| 38 -> TOKEN_TYPE_IS_HERE
| 39 -> TOKEN_MODULE_COMING_SOON
| 40 -> TOKEN_MODULE_IS_HERE
- | 41 -> TOKEN_EXTERN
- | 42 -> TOKEN_VOID
- | 43 -> TOKEN_PUBLIC
- | 44 -> TOKEN_PRIVATE
- | 45 -> TOKEN_INTERNAL
- | 46 -> TOKEN_GLOBAL
- | 47 -> TOKEN_STATIC
- | 48 -> TOKEN_MEMBER
- | 49 -> TOKEN_CLASS
- | 50 -> TOKEN_ABSTRACT
- | 51 -> TOKEN_OVERRIDE
- | 52 -> TOKEN_DEFAULT
- | 53 -> TOKEN_CONSTRUCTOR
- | 54 -> TOKEN_INHERIT
- | 55 -> TOKEN_GREATER_RBRACK
- | 56 -> TOKEN_STRUCT
- | 57 -> TOKEN_SIG
- | 58 -> TOKEN_BAR
- | 59 -> TOKEN_RBRACK
- | 60 -> TOKEN_RBRACE_COMING_SOON
- | 61 -> TOKEN_RBRACE_IS_HERE
- | 62 -> TOKEN_MINUS
- | 63 -> TOKEN_DOLLAR
- | 64 -> TOKEN_BAR_RBRACK
- | 65 -> TOKEN_BAR_RBRACE
- | 66 -> TOKEN_UNDERSCORE
- | 67 -> TOKEN_SEMICOLON_SEMICOLON
- | 68 -> TOKEN_LARROW
- | 69 -> TOKEN_EQUALS
- | 70 -> TOKEN_LBRACK
- | 71 -> TOKEN_LBRACK_BAR
- | 72 -> TOKEN_LBRACE_BAR
- | 73 -> TOKEN_LBRACK_LESS
- | 74 -> TOKEN_QMARK
- | 75 -> TOKEN_QMARK_QMARK
- | 76 -> TOKEN_DOT
- | 77 -> TOKEN_COLON
- | 78 -> TOKEN_COLON_COLON
- | 79 -> TOKEN_COLON_GREATER
- | 80 -> TOKEN_COLON_QMARK_GREATER
- | 81 -> TOKEN_COLON_QMARK
- | 82 -> TOKEN_COLON_EQUALS
- | 83 -> TOKEN_SEMICOLON
- | 84 -> TOKEN_WHEN
- | 85 -> TOKEN_WHILE
- | 86 -> TOKEN_WHILE_BANG
- | 87 -> TOKEN_WITH
- | 88 -> TOKEN_HASH
- | 89 -> TOKEN_AMP
- | 90 -> TOKEN_AMP_AMP
- | 91 -> TOKEN_QUOTE
- | 92 -> TOKEN_LPAREN
- | 93 -> TOKEN_RPAREN
- | 94 -> TOKEN_RPAREN_COMING_SOON
- | 95 -> TOKEN_RPAREN_IS_HERE
- | 96 -> TOKEN_STAR
- | 97 -> TOKEN_COMMA
- | 98 -> TOKEN_RARROW
- | 99 -> TOKEN_GREATER_BAR_RBRACK
- | 100 -> TOKEN_LPAREN_STAR_RPAREN
- | 101 -> TOKEN_OPEN
- | 102 -> TOKEN_OR
- | 103 -> TOKEN_REC
- | 104 -> TOKEN_THEN
- | 105 -> TOKEN_TO
- | 106 -> TOKEN_TRUE
- | 107 -> TOKEN_TRY
- | 108 -> TOKEN_TYPE
- | 109 -> TOKEN_VAL
- | 110 -> TOKEN_INLINE
- | 111 -> TOKEN_INTERFACE
- | 112 -> TOKEN_INSTANCE
- | 113 -> TOKEN_CONST
- | 114 -> TOKEN_LAZY
- | 115 -> TOKEN_OLAZY
- | 116 -> TOKEN_MATCH
- | 117 -> TOKEN_MATCH_BANG
- | 118 -> TOKEN_MUTABLE
- | 119 -> TOKEN_NEW
- | 120 -> TOKEN_OF
- | 121 -> TOKEN_EXCEPTION
- | 122 -> TOKEN_FALSE
- | 123 -> TOKEN_FOR
- | 124 -> TOKEN_FUN
- | 125 -> TOKEN_FUNCTION
- | 126 -> TOKEN_IF
- | 127 -> TOKEN_IN
- | 128 -> TOKEN_JOIN_IN
- | 129 -> TOKEN_FINALLY
- | 130 -> TOKEN_DO_BANG
- | 131 -> TOKEN_AND
- | 132 -> TOKEN_AS
- | 133 -> TOKEN_ASSERT
- | 134 -> TOKEN_OASSERT
- | 135 -> TOKEN_ASR
- | 136 -> TOKEN_BEGIN
- | 137 -> TOKEN_DO
- | 138 -> TOKEN_DONE
- | 139 -> TOKEN_DOWNTO
- | 140 -> TOKEN_ELSE
- | 141 -> TOKEN_ELIF
- | 142 -> TOKEN_END
- | 143 -> TOKEN_DOT_DOT
- | 144 -> TOKEN_DOT_DOT_HAT
- | 145 -> TOKEN_BAR_BAR
- | 146 -> TOKEN_UPCAST
- | 147 -> TOKEN_DOWNCAST
- | 148 -> TOKEN_NULL
- | 149 -> TOKEN_RESERVED
- | 150 -> TOKEN_MODULE
- | 151 -> TOKEN_NAMESPACE
- | 152 -> TOKEN_DELEGATE
- | 153 -> TOKEN_CONSTRAINT
- | 154 -> TOKEN_BASE
- | 155 -> TOKEN_LQUOTE
- | 156 -> TOKEN_RQUOTE
- | 157 -> TOKEN_RQUOTE_DOT
- | 158 -> TOKEN_PERCENT_OP
- | 159 -> TOKEN_BINDER
- | 160 -> TOKEN_LESS
- | 161 -> TOKEN_GREATER
- | 162 -> TOKEN_LET
- | 163 -> TOKEN_YIELD
- | 164 -> TOKEN_YIELD_BANG
- | 165 -> TOKEN_AND_BANG
- | 166 -> TOKEN_BIGNUM
- | 167 -> TOKEN_DECIMAL
- | 168 -> TOKEN_CHAR
- | 169 -> TOKEN_IEEE64
- | 170 -> TOKEN_IEEE32
- | 171 -> TOKEN_UNATIVEINT
- | 172 -> TOKEN_UINT64
- | 173 -> TOKEN_UINT32
- | 174 -> TOKEN_UINT16
- | 175 -> TOKEN_UINT8
- | 176 -> TOKEN_NATIVEINT
- | 177 -> TOKEN_INT64
- | 178 -> TOKEN_INT32
- | 179 -> TOKEN_INT32_DOT_DOT
- | 180 -> TOKEN_INT16
- | 181 -> TOKEN_INT8
- | 182 -> TOKEN_FUNKY_OPERATOR_NAME
- | 183 -> TOKEN_ADJACENT_PREFIX_OP
- | 184 -> TOKEN_PLUS_MINUS_OP
- | 185 -> TOKEN_INFIX_AMP_OP
- | 186 -> TOKEN_INFIX_STAR_DIV_MOD_OP
- | 187 -> TOKEN_PREFIX_OP
- | 188 -> TOKEN_INFIX_BAR_OP
- | 189 -> TOKEN_INFIX_AT_HAT_OP
- | 190 -> TOKEN_INFIX_COMPARE_OP
- | 191 -> TOKEN_INFIX_STAR_STAR_OP
- | 192 -> TOKEN_HASH_IDENT
- | 193 -> TOKEN_IDENT
- | 194 -> TOKEN_KEYWORD_STRING
- | 195 -> TOKEN_LBRACE
- | 196 -> TOKEN_RBRACE
- | 197 -> TOKEN_INTERP_STRING_END
- | 198 -> TOKEN_INTERP_STRING_PART
- | 199 -> TOKEN_INTERP_STRING_BEGIN_PART
- | 200 -> TOKEN_INTERP_STRING_BEGIN_END
- | 201 -> TOKEN_STRING
- | 202 -> TOKEN_BYTEARRAY
- | 205 -> TOKEN_end_of_input
- | 203 -> TOKEN_error
+ | 41 -> TOKEN_BAR_JUST_BEFORE_NULL
+ | 42 -> TOKEN_EXTERN
+ | 43 -> TOKEN_VOID
+ | 44 -> TOKEN_PUBLIC
+ | 45 -> TOKEN_PRIVATE
+ | 46 -> TOKEN_INTERNAL
+ | 47 -> TOKEN_GLOBAL
+ | 48 -> TOKEN_STATIC
+ | 49 -> TOKEN_MEMBER
+ | 50 -> TOKEN_CLASS
+ | 51 -> TOKEN_ABSTRACT
+ | 52 -> TOKEN_OVERRIDE
+ | 53 -> TOKEN_DEFAULT
+ | 54 -> TOKEN_CONSTRUCTOR
+ | 55 -> TOKEN_INHERIT
+ | 56 -> TOKEN_GREATER_RBRACK
+ | 57 -> TOKEN_STRUCT
+ | 58 -> TOKEN_SIG
+ | 59 -> TOKEN_BAR
+ | 60 -> TOKEN_RBRACK
+ | 61 -> TOKEN_RBRACE_COMING_SOON
+ | 62 -> TOKEN_RBRACE_IS_HERE
+ | 63 -> TOKEN_MINUS
+ | 64 -> TOKEN_DOLLAR
+ | 65 -> TOKEN_BAR_RBRACK
+ | 66 -> TOKEN_BAR_RBRACE
+ | 67 -> TOKEN_UNDERSCORE
+ | 68 -> TOKEN_SEMICOLON_SEMICOLON
+ | 69 -> TOKEN_LARROW
+ | 70 -> TOKEN_EQUALS
+ | 71 -> TOKEN_LBRACK
+ | 72 -> TOKEN_LBRACK_BAR
+ | 73 -> TOKEN_LBRACE_BAR
+ | 74 -> TOKEN_LBRACK_LESS
+ | 75 -> TOKEN_QMARK
+ | 76 -> TOKEN_QMARK_QMARK
+ | 77 -> TOKEN_DOT
+ | 78 -> TOKEN_COLON
+ | 79 -> TOKEN_COLON_COLON
+ | 80 -> TOKEN_COLON_GREATER
+ | 81 -> TOKEN_COLON_QMARK_GREATER
+ | 82 -> TOKEN_COLON_QMARK
+ | 83 -> TOKEN_COLON_EQUALS
+ | 84 -> TOKEN_SEMICOLON
+ | 85 -> TOKEN_WHEN
+ | 86 -> TOKEN_WHILE
+ | 87 -> TOKEN_WHILE_BANG
+ | 88 -> TOKEN_WITH
+ | 89 -> TOKEN_HASH
+ | 90 -> TOKEN_AMP
+ | 91 -> TOKEN_AMP_AMP
+ | 92 -> TOKEN_QUOTE
+ | 93 -> TOKEN_LPAREN
+ | 94 -> TOKEN_RPAREN
+ | 95 -> TOKEN_RPAREN_COMING_SOON
+ | 96 -> TOKEN_RPAREN_IS_HERE
+ | 97 -> TOKEN_STAR
+ | 98 -> TOKEN_COMMA
+ | 99 -> TOKEN_RARROW
+ | 100 -> TOKEN_GREATER_BAR_RBRACK
+ | 101 -> TOKEN_LPAREN_STAR_RPAREN
+ | 102 -> TOKEN_OPEN
+ | 103 -> TOKEN_OR
+ | 104 -> TOKEN_REC
+ | 105 -> TOKEN_THEN
+ | 106 -> TOKEN_TO
+ | 107 -> TOKEN_TRUE
+ | 108 -> TOKEN_TRY
+ | 109 -> TOKEN_TYPE
+ | 110 -> TOKEN_VAL
+ | 111 -> TOKEN_INLINE
+ | 112 -> TOKEN_INTERFACE
+ | 113 -> TOKEN_INSTANCE
+ | 114 -> TOKEN_CONST
+ | 115 -> TOKEN_LAZY
+ | 116 -> TOKEN_OLAZY
+ | 117 -> TOKEN_MATCH
+ | 118 -> TOKEN_MATCH_BANG
+ | 119 -> TOKEN_MUTABLE
+ | 120 -> TOKEN_NEW
+ | 121 -> TOKEN_OF
+ | 122 -> TOKEN_EXCEPTION
+ | 123 -> TOKEN_FALSE
+ | 124 -> TOKEN_FOR
+ | 125 -> TOKEN_FUN
+ | 126 -> TOKEN_FUNCTION
+ | 127 -> TOKEN_IF
+ | 128 -> TOKEN_IN
+ | 129 -> TOKEN_JOIN_IN
+ | 130 -> TOKEN_FINALLY
+ | 131 -> TOKEN_DO_BANG
+ | 132 -> TOKEN_AND
+ | 133 -> TOKEN_AS
+ | 134 -> TOKEN_ASSERT
+ | 135 -> TOKEN_OASSERT
+ | 136 -> TOKEN_ASR
+ | 137 -> TOKEN_BEGIN
+ | 138 -> TOKEN_DO
+ | 139 -> TOKEN_DONE
+ | 140 -> TOKEN_DOWNTO
+ | 141 -> TOKEN_ELSE
+ | 142 -> TOKEN_ELIF
+ | 143 -> TOKEN_END
+ | 144 -> TOKEN_DOT_DOT
+ | 145 -> TOKEN_DOT_DOT_HAT
+ | 146 -> TOKEN_BAR_BAR
+ | 147 -> TOKEN_UPCAST
+ | 148 -> TOKEN_DOWNCAST
+ | 149 -> TOKEN_NULL
+ | 150 -> TOKEN_RESERVED
+ | 151 -> TOKEN_MODULE
+ | 152 -> TOKEN_NAMESPACE
+ | 153 -> TOKEN_DELEGATE
+ | 154 -> TOKEN_CONSTRAINT
+ | 155 -> TOKEN_BASE
+ | 156 -> TOKEN_LQUOTE
+ | 157 -> TOKEN_RQUOTE
+ | 158 -> TOKEN_RQUOTE_DOT
+ | 159 -> TOKEN_PERCENT_OP
+ | 160 -> TOKEN_BINDER
+ | 161 -> TOKEN_LESS
+ | 162 -> TOKEN_GREATER
+ | 163 -> TOKEN_LET
+ | 164 -> TOKEN_YIELD
+ | 165 -> TOKEN_YIELD_BANG
+ | 166 -> TOKEN_AND_BANG
+ | 167 -> TOKEN_BIGNUM
+ | 168 -> TOKEN_DECIMAL
+ | 169 -> TOKEN_CHAR
+ | 170 -> TOKEN_IEEE64
+ | 171 -> TOKEN_IEEE32
+ | 172 -> TOKEN_UNATIVEINT
+ | 173 -> TOKEN_UINT64
+ | 174 -> TOKEN_UINT32
+ | 175 -> TOKEN_UINT16
+ | 176 -> TOKEN_UINT8
+ | 177 -> TOKEN_NATIVEINT
+ | 178 -> TOKEN_INT64
+ | 179 -> TOKEN_INT32
+ | 180 -> TOKEN_INT32_DOT_DOT
+ | 181 -> TOKEN_INT16
+ | 182 -> TOKEN_INT8
+ | 183 -> TOKEN_FUNKY_OPERATOR_NAME
+ | 184 -> TOKEN_ADJACENT_PREFIX_OP
+ | 185 -> TOKEN_PLUS_MINUS_OP
+ | 186 -> TOKEN_INFIX_AMP_OP
+ | 187 -> TOKEN_INFIX_STAR_DIV_MOD_OP
+ | 188 -> TOKEN_PREFIX_OP
+ | 189 -> TOKEN_INFIX_BAR_OP
+ | 190 -> TOKEN_INFIX_AT_HAT_OP
+ | 191 -> TOKEN_INFIX_COMPARE_OP
+ | 192 -> TOKEN_INFIX_STAR_STAR_OP
+ | 193 -> TOKEN_HASH_IDENT
+ | 194 -> TOKEN_IDENT
+ | 195 -> TOKEN_KEYWORD_STRING
+ | 196 -> TOKEN_LBRACE
+ | 197 -> TOKEN_RBRACE
+ | 198 -> TOKEN_INTERP_STRING_END
+ | 199 -> TOKEN_INTERP_STRING_PART
+ | 200 -> TOKEN_INTERP_STRING_BEGIN_PART
+ | 201 -> TOKEN_INTERP_STRING_BEGIN_END
+ | 202 -> TOKEN_STRING
+ | 203 -> TOKEN_BYTEARRAY
+ | 206 -> TOKEN_end_of_input
+ | 204 -> TOKEN_error
| _ -> failwith "tokenTagToTokenId: bad token"
/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production
@@ -1234,210 +1241,210 @@ let prodIdxToNonTerminal (prodIdx:int) =
| 27 -> NONTERM_hashDirectiveArgs
| 28 -> NONTERM_hashDirectiveArg
| 29 -> NONTERM_hashDirectiveArg
- | 30 -> NONTERM_signatureFile
- | 31 -> NONTERM_signatureFile
- | 32 -> NONTERM_signatureFile
- | 33 -> NONTERM_moduleIntro
- | 34 -> NONTERM_moduleIntro
- | 35 -> NONTERM_moduleIntro
- | 36 -> NONTERM_namespaceIntro
- | 37 -> NONTERM_namespaceIntro
- | 38 -> NONTERM_fileNamespaceSpecs
- | 39 -> NONTERM_fileNamespaceSpecs
- | 40 -> NONTERM_fileNamespaceSpecList
- | 41 -> NONTERM_fileNamespaceSpecList
- | 42 -> NONTERM_fileNamespaceSpec
- | 43 -> NONTERM_fileModuleSpec
- | 44 -> NONTERM_fileModuleSpec
- | 45 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
- | 46 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
- | 47 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
+ | 30 -> NONTERM_hashDirectiveArg
+ | 31 -> NONTERM_hashDirectiveArg
+ | 32 -> NONTERM_hashDirectiveArg
+ | 33 -> NONTERM_signatureFile
+ | 34 -> NONTERM_signatureFile
+ | 35 -> NONTERM_signatureFile
+ | 36 -> NONTERM_moduleIntro
+ | 37 -> NONTERM_moduleIntro
+ | 38 -> NONTERM_moduleIntro
+ | 39 -> NONTERM_namespaceIntro
+ | 40 -> NONTERM_namespaceIntro
+ | 41 -> NONTERM_fileNamespaceSpecs
+ | 42 -> NONTERM_fileNamespaceSpecs
+ | 43 -> NONTERM_fileNamespaceSpecList
+ | 44 -> NONTERM_fileNamespaceSpecList
+ | 45 -> NONTERM_fileNamespaceSpec
+ | 46 -> NONTERM_fileModuleSpec
+ | 47 -> NONTERM_fileModuleSpec
| 48 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
- | 49 -> NONTERM_moduleSpfnsPossiblyEmpty
- | 50 -> NONTERM_moduleSpfnsPossiblyEmpty
- | 51 -> NONTERM_moduleSpfnsPossiblyEmpty
- | 52 -> NONTERM_moduleSpfns
- | 53 -> NONTERM_moduleSpfns
- | 54 -> NONTERM_moduleSpfns
- | 55 -> NONTERM_moduleSpfn
- | 56 -> NONTERM_moduleSpfn
- | 57 -> NONTERM_moduleSpfn
+ | 49 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
+ | 50 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
+ | 51 -> NONTERM_moduleSpfnsPossiblyEmptyBlock
+ | 52 -> NONTERM_moduleSpfnsPossiblyEmpty
+ | 53 -> NONTERM_moduleSpfnsPossiblyEmpty
+ | 54 -> NONTERM_moduleSpfnsPossiblyEmpty
+ | 55 -> NONTERM_moduleSpfns
+ | 56 -> NONTERM_moduleSpfns
+ | 57 -> NONTERM_moduleSpfns
| 58 -> NONTERM_moduleSpfn
| 59 -> NONTERM_moduleSpfn
| 60 -> NONTERM_moduleSpfn
| 61 -> NONTERM_moduleSpfn
| 62 -> NONTERM_moduleSpfn
- | 63 -> NONTERM_valSpfn
- | 64 -> NONTERM_optLiteralValueSpfn
- | 65 -> NONTERM_optLiteralValueSpfn
- | 66 -> NONTERM_optLiteralValueSpfn
- | 67 -> NONTERM_moduleSpecBlock
- | 68 -> NONTERM_moduleSpecBlock
- | 69 -> NONTERM_moduleSpecBlock
- | 70 -> NONTERM_tyconSpfnList
- | 71 -> NONTERM_tyconSpfnList
- | 72 -> NONTERM_tyconSpfn
- | 73 -> NONTERM_tyconSpfn
- | 74 -> NONTERM_tyconSpfnRhsBlock
- | 75 -> NONTERM_tyconSpfnRhsBlock
- | 76 -> NONTERM_tyconSpfnRhs
- | 77 -> NONTERM_tyconSpfnRhs
- | 78 -> NONTERM_tyconSpfnRhs
- | 79 -> NONTERM_tyconClassSpfn
- | 80 -> NONTERM_tyconClassSpfn
- | 81 -> NONTERM_tyconClassSpfn
+ | 63 -> NONTERM_moduleSpfn
+ | 64 -> NONTERM_moduleSpfn
+ | 65 -> NONTERM_moduleSpfn
+ | 66 -> NONTERM_valSpfn
+ | 67 -> NONTERM_optLiteralValueSpfn
+ | 68 -> NONTERM_optLiteralValueSpfn
+ | 69 -> NONTERM_optLiteralValueSpfn
+ | 70 -> NONTERM_moduleSpecBlock
+ | 71 -> NONTERM_moduleSpecBlock
+ | 72 -> NONTERM_moduleSpecBlock
+ | 73 -> NONTERM_tyconSpfnList
+ | 74 -> NONTERM_tyconSpfnList
+ | 75 -> NONTERM_tyconSpfn
+ | 76 -> NONTERM_tyconSpfn
+ | 77 -> NONTERM_tyconSpfnRhsBlock
+ | 78 -> NONTERM_tyconSpfnRhsBlock
+ | 79 -> NONTERM_tyconSpfnRhs
+ | 80 -> NONTERM_tyconSpfnRhs
+ | 81 -> NONTERM_tyconSpfnRhs
| 82 -> NONTERM_tyconClassSpfn
- | 83 -> NONTERM_classSpfnBlockKindUnspecified
- | 84 -> NONTERM_classSpfnBlockKindUnspecified
- | 85 -> NONTERM_classSpfnBlockKindUnspecified
+ | 83 -> NONTERM_tyconClassSpfn
+ | 84 -> NONTERM_tyconClassSpfn
+ | 85 -> NONTERM_tyconClassSpfn
| 86 -> NONTERM_classSpfnBlockKindUnspecified
- | 87 -> NONTERM_classSpfnBlock
- | 88 -> NONTERM_classSpfnBlock
- | 89 -> NONTERM_classSpfnBlock
- | 90 -> NONTERM_classSpfnMembers
- | 91 -> NONTERM_classSpfnMembers
- | 92 -> NONTERM_classSpfnMembersAtLeastOne
- | 93 -> NONTERM_classMemberSpfn
- | 94 -> NONTERM_classMemberSpfn
- | 95 -> NONTERM_classMemberSpfn
+ | 87 -> NONTERM_classSpfnBlockKindUnspecified
+ | 88 -> NONTERM_classSpfnBlockKindUnspecified
+ | 89 -> NONTERM_classSpfnBlockKindUnspecified
+ | 90 -> NONTERM_classSpfnBlock
+ | 91 -> NONTERM_classSpfnBlock
+ | 92 -> NONTERM_classSpfnBlock
+ | 93 -> NONTERM_classSpfnMembers
+ | 94 -> NONTERM_classSpfnMembers
+ | 95 -> NONTERM_classSpfnMembersAtLeastOne
| 96 -> NONTERM_classMemberSpfn
| 97 -> NONTERM_classMemberSpfn
| 98 -> NONTERM_classMemberSpfn
| 99 -> NONTERM_classMemberSpfn
| 100 -> NONTERM_classMemberSpfn
- | 101 -> NONTERM_classMemberSpfnGetSet
- | 102 -> NONTERM_classMemberSpfnGetSet
- | 103 -> NONTERM_classMemberSpfnGetSet
+ | 101 -> NONTERM_classMemberSpfn
+ | 102 -> NONTERM_classMemberSpfn
+ | 103 -> NONTERM_classMemberSpfn
| 104 -> NONTERM_classMemberSpfnGetSet
- | 105 -> NONTERM_classMemberSpfnGetSetElements
- | 106 -> NONTERM_classMemberSpfnGetSetElements
- | 107 -> NONTERM_classMemberSpfnGetSetElements
+ | 105 -> NONTERM_classMemberSpfnGetSet
+ | 106 -> NONTERM_classMemberSpfnGetSet
+ | 107 -> NONTERM_classMemberSpfnGetSet
| 108 -> NONTERM_classMemberSpfnGetSetElements
- | 109 -> NONTERM_memberSpecFlags
- | 110 -> NONTERM_memberSpecFlags
- | 111 -> NONTERM_exconSpfn
- | 112 -> NONTERM_opt_classSpfn
- | 113 -> NONTERM_opt_classSpfn
- | 114 -> NONTERM_implementationFile
- | 115 -> NONTERM_implementationFile
- | 116 -> NONTERM_implementationFile
- | 117 -> NONTERM_fileNamespaceImpls
- | 118 -> NONTERM_fileNamespaceImpls
- | 119 -> NONTERM_fileNamespaceImplList
- | 120 -> NONTERM_fileNamespaceImplList
- | 121 -> NONTERM_fileNamespaceImpl
- | 122 -> NONTERM_fileModuleImpl
- | 123 -> NONTERM_fileModuleImpl
- | 124 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
- | 125 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
- | 126 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
+ | 109 -> NONTERM_classMemberSpfnGetSetElements
+ | 110 -> NONTERM_classMemberSpfnGetSetElements
+ | 111 -> NONTERM_classMemberSpfnGetSetElements
+ | 112 -> NONTERM_memberSpecFlags
+ | 113 -> NONTERM_memberSpecFlags
+ | 114 -> NONTERM_exconSpfn
+ | 115 -> NONTERM_opt_classSpfn
+ | 116 -> NONTERM_opt_classSpfn
+ | 117 -> NONTERM_implementationFile
+ | 118 -> NONTERM_implementationFile
+ | 119 -> NONTERM_implementationFile
+ | 120 -> NONTERM_fileNamespaceImpls
+ | 121 -> NONTERM_fileNamespaceImpls
+ | 122 -> NONTERM_fileNamespaceImplList
+ | 123 -> NONTERM_fileNamespaceImplList
+ | 124 -> NONTERM_fileNamespaceImpl
+ | 125 -> NONTERM_fileModuleImpl
+ | 126 -> NONTERM_fileModuleImpl
| 127 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
- | 128 -> NONTERM_moduleDefnsOrExprPossiblyEmpty
- | 129 -> NONTERM_moduleDefnsOrExprPossiblyEmpty
- | 130 -> NONTERM_moduleDefnsOrExpr
- | 131 -> NONTERM_moduleDefnsOrExpr
- | 132 -> NONTERM_moduleDefnsOrExpr
+ | 128 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
+ | 129 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
+ | 130 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock
+ | 131 -> NONTERM_moduleDefnsOrExprPossiblyEmpty
+ | 132 -> NONTERM_moduleDefnsOrExprPossiblyEmpty
| 133 -> NONTERM_moduleDefnsOrExpr
| 134 -> NONTERM_moduleDefnsOrExpr
- | 135 -> NONTERM_moduleDefns
- | 136 -> NONTERM_moduleDefns
- | 137 -> NONTERM_moduleDefns
+ | 135 -> NONTERM_moduleDefnsOrExpr
+ | 136 -> NONTERM_moduleDefnsOrExpr
+ | 137 -> NONTERM_moduleDefnsOrExpr
| 138 -> NONTERM_moduleDefns
| 139 -> NONTERM_moduleDefns
- | 140 -> NONTERM_moduleDefnOrDirective
- | 141 -> NONTERM_moduleDefnOrDirective
- | 142 -> NONTERM_moduleDefn
- | 143 -> NONTERM_moduleDefn
- | 144 -> NONTERM_moduleDefn
+ | 140 -> NONTERM_moduleDefns
+ | 141 -> NONTERM_moduleDefns
+ | 142 -> NONTERM_moduleDefns
+ | 143 -> NONTERM_moduleDefnOrDirective
+ | 144 -> NONTERM_moduleDefnOrDirective
| 145 -> NONTERM_moduleDefn
| 146 -> NONTERM_moduleDefn
| 147 -> NONTERM_moduleDefn
| 148 -> NONTERM_moduleDefn
| 149 -> NONTERM_moduleDefn
| 150 -> NONTERM_moduleDefn
- | 151 -> NONTERM_openDecl
- | 152 -> NONTERM_openDecl
- | 153 -> NONTERM_openDecl
+ | 151 -> NONTERM_moduleDefn
+ | 152 -> NONTERM_moduleDefn
+ | 153 -> NONTERM_moduleDefn
| 154 -> NONTERM_openDecl
- | 155 -> NONTERM_namedModuleAbbrevBlock
- | 156 -> NONTERM_namedModuleAbbrevBlock
- | 157 -> NONTERM_namedModuleDefnBlock
- | 158 -> NONTERM_namedModuleDefnBlock
- | 159 -> NONTERM_namedModuleDefnBlock
+ | 155 -> NONTERM_openDecl
+ | 156 -> NONTERM_openDecl
+ | 157 -> NONTERM_openDecl
+ | 158 -> NONTERM_namedModuleAbbrevBlock
+ | 159 -> NONTERM_namedModuleAbbrevBlock
| 160 -> NONTERM_namedModuleDefnBlock
| 161 -> NONTERM_namedModuleDefnBlock
| 162 -> NONTERM_namedModuleDefnBlock
| 163 -> NONTERM_namedModuleDefnBlock
- | 164 -> NONTERM_wrappedNamedModuleDefn
- | 165 -> NONTERM_wrappedNamedModuleDefn
- | 166 -> NONTERM_wrappedNamedModuleDefn
- | 167 -> NONTERM_tyconDefnAugmentation
- | 168 -> NONTERM_opt_attributes
- | 169 -> NONTERM_opt_attributes
- | 170 -> NONTERM_attributes
- | 171 -> NONTERM_attributes
- | 172 -> NONTERM_attributeList
- | 173 -> NONTERM_attributeList
- | 174 -> NONTERM_attributeList
+ | 164 -> NONTERM_namedModuleDefnBlock
+ | 165 -> NONTERM_namedModuleDefnBlock
+ | 166 -> NONTERM_namedModuleDefnBlock
+ | 167 -> NONTERM_wrappedNamedModuleDefn
+ | 168 -> NONTERM_wrappedNamedModuleDefn
+ | 169 -> NONTERM_wrappedNamedModuleDefn
+ | 170 -> NONTERM_tyconDefnAugmentation
+ | 171 -> NONTERM_opt_attributes
+ | 172 -> NONTERM_opt_attributes
+ | 173 -> NONTERM_attributes
+ | 174 -> NONTERM_attributes
| 175 -> NONTERM_attributeList
- | 176 -> NONTERM_attributeListElements
- | 177 -> NONTERM_attributeListElements
- | 178 -> NONTERM_attribute
- | 179 -> NONTERM_attribute
- | 180 -> NONTERM_attribute
- | 181 -> NONTERM_attributeTarget
- | 182 -> NONTERM_attributeTarget
- | 183 -> NONTERM_attributeTarget
+ | 176 -> NONTERM_attributeList
+ | 177 -> NONTERM_attributeList
+ | 178 -> NONTERM_attributeList
+ | 179 -> NONTERM_attributeListElements
+ | 180 -> NONTERM_attributeListElements
+ | 181 -> NONTERM_attribute
+ | 182 -> NONTERM_attribute
+ | 183 -> NONTERM_attribute
| 184 -> NONTERM_attributeTarget
- | 185 -> NONTERM_memberFlags
- | 186 -> NONTERM_memberFlags
- | 187 -> NONTERM_memberFlags
+ | 185 -> NONTERM_attributeTarget
+ | 186 -> NONTERM_attributeTarget
+ | 187 -> NONTERM_attributeTarget
| 188 -> NONTERM_memberFlags
| 189 -> NONTERM_memberFlags
- | 190 -> NONTERM_typeNameInfo
- | 191 -> NONTERM_tyconDefnList
- | 192 -> NONTERM_tyconDefnList
- | 193 -> NONTERM_tyconDefn
- | 194 -> NONTERM_tyconDefn
- | 195 -> NONTERM_tyconDefn
+ | 190 -> NONTERM_memberFlags
+ | 191 -> NONTERM_memberFlags
+ | 192 -> NONTERM_memberFlags
+ | 193 -> NONTERM_typeNameInfo
+ | 194 -> NONTERM_tyconDefnList
+ | 195 -> NONTERM_tyconDefnList
| 196 -> NONTERM_tyconDefn
- | 197 -> NONTERM_tyconDefnRhsBlock
- | 198 -> NONTERM_tyconDefnRhsBlock
- | 199 -> NONTERM_tyconDefnRhsBlock
+ | 197 -> NONTERM_tyconDefn
+ | 198 -> NONTERM_tyconDefn
+ | 199 -> NONTERM_tyconDefn
| 200 -> NONTERM_tyconDefnRhsBlock
- | 201 -> NONTERM_tyconDefnRhs
- | 202 -> NONTERM_tyconDefnRhs
- | 203 -> NONTERM_tyconDefnRhs
- | 204 -> NONTERM_tyconClassDefn
- | 205 -> NONTERM_tyconClassDefn
- | 206 -> NONTERM_tyconClassDefn
+ | 201 -> NONTERM_tyconDefnRhsBlock
+ | 202 -> NONTERM_tyconDefnRhsBlock
+ | 203 -> NONTERM_tyconDefnRhsBlock
+ | 204 -> NONTERM_tyconDefnRhs
+ | 205 -> NONTERM_tyconDefnRhs
+ | 206 -> NONTERM_tyconDefnRhs
| 207 -> NONTERM_tyconClassDefn
- | 208 -> NONTERM_classDefnBlockKindUnspecified
- | 209 -> NONTERM_classDefnBlockKindUnspecified
- | 210 -> NONTERM_classDefnBlock
- | 211 -> NONTERM_classDefnBlock
- | 212 -> NONTERM_classDefnBlock
- | 213 -> NONTERM_classDefnMembers
- | 214 -> NONTERM_classDefnMembers
- | 215 -> NONTERM_classDefnMembers
- | 216 -> NONTERM_classDefnMembersAtLeastOne
- | 217 -> NONTERM_classDefnMemberGetSet
- | 218 -> NONTERM_classDefnMemberGetSet
- | 219 -> NONTERM_classDefnMemberGetSet
- | 220 -> NONTERM_classDefnMemberGetSetElements
- | 221 -> NONTERM_classDefnMemberGetSetElements
- | 222 -> NONTERM_classDefnMemberGetSetElement
- | 223 -> NONTERM_memberCore
- | 224 -> NONTERM_memberCore
- | 225 -> NONTERM_memberCore
+ | 208 -> NONTERM_tyconClassDefn
+ | 209 -> NONTERM_tyconClassDefn
+ | 210 -> NONTERM_tyconClassDefn
+ | 211 -> NONTERM_classDefnBlockKindUnspecified
+ | 212 -> NONTERM_classDefnBlockKindUnspecified
+ | 213 -> NONTERM_classDefnBlock
+ | 214 -> NONTERM_classDefnBlock
+ | 215 -> NONTERM_classDefnBlock
+ | 216 -> NONTERM_classDefnMembers
+ | 217 -> NONTERM_classDefnMembers
+ | 218 -> NONTERM_classDefnMembers
+ | 219 -> NONTERM_classDefnMembersAtLeastOne
+ | 220 -> NONTERM_classDefnMemberGetSet
+ | 221 -> NONTERM_classDefnMemberGetSet
+ | 222 -> NONTERM_classDefnMemberGetSet
+ | 223 -> NONTERM_classDefnMemberGetSetElements
+ | 224 -> NONTERM_classDefnMemberGetSetElements
+ | 225 -> NONTERM_classDefnMemberGetSetElement
| 226 -> NONTERM_memberCore
- | 227 -> NONTERM_abstractMemberFlags
- | 228 -> NONTERM_abstractMemberFlags
- | 229 -> NONTERM_abstractMemberFlags
+ | 227 -> NONTERM_memberCore
+ | 228 -> NONTERM_memberCore
+ | 229 -> NONTERM_memberCore
| 230 -> NONTERM_abstractMemberFlags
- | 231 -> NONTERM_classDefnMember
- | 232 -> NONTERM_classDefnMember
- | 233 -> NONTERM_classDefnMember
+ | 231 -> NONTERM_abstractMemberFlags
+ | 232 -> NONTERM_abstractMemberFlags
+ | 233 -> NONTERM_abstractMemberFlags
| 234 -> NONTERM_classDefnMember
| 235 -> NONTERM_classDefnMember
| 236 -> NONTERM_classDefnMember
@@ -1451,295 +1458,295 @@ let prodIdxToNonTerminal (prodIdx:int) =
| 244 -> NONTERM_classDefnMember
| 245 -> NONTERM_classDefnMember
| 246 -> NONTERM_classDefnMember
- | 247 -> NONTERM_valDefnDecl
- | 248 -> NONTERM_valDefnDecl
- | 249 -> NONTERM_valDefnDecl
+ | 247 -> NONTERM_classDefnMember
+ | 248 -> NONTERM_classDefnMember
+ | 249 -> NONTERM_classDefnMember
| 250 -> NONTERM_valDefnDecl
- | 251 -> NONTERM_autoPropsDefnDecl
- | 252 -> NONTERM_autoPropsDefnDecl
- | 253 -> NONTERM_autoPropsDefnDecl
+ | 251 -> NONTERM_valDefnDecl
+ | 252 -> NONTERM_valDefnDecl
+ | 253 -> NONTERM_valDefnDecl
| 254 -> NONTERM_autoPropsDefnDecl
- | 255 -> NONTERM_opt_typ
- | 256 -> NONTERM_opt_typ
- | 257 -> NONTERM_opt_typ
- | 258 -> NONTERM_atomicPatternLongIdent
- | 259 -> NONTERM_atomicPatternLongIdent
- | 260 -> NONTERM_atomicPatternLongIdent
+ | 255 -> NONTERM_autoPropsDefnDecl
+ | 256 -> NONTERM_autoPropsDefnDecl
+ | 257 -> NONTERM_autoPropsDefnDecl
+ | 258 -> NONTERM_opt_typ
+ | 259 -> NONTERM_opt_typ
+ | 260 -> NONTERM_opt_typ
| 261 -> NONTERM_atomicPatternLongIdent
| 262 -> NONTERM_atomicPatternLongIdent
- | 263 -> NONTERM_opt_access
- | 264 -> NONTERM_opt_access
- | 265 -> NONTERM_access
- | 266 -> NONTERM_access
- | 267 -> NONTERM_access
- | 268 -> NONTERM_opt_interfaceImplDefn
- | 269 -> NONTERM_opt_interfaceImplDefn
- | 270 -> NONTERM_opt_interfaceImplDefn
- | 271 -> NONTERM_opt_classDefn
- | 272 -> NONTERM_opt_classDefn
- | 273 -> NONTERM_inheritsDefn
- | 274 -> NONTERM_inheritsDefn
- | 275 -> NONTERM_inheritsDefn
- | 276 -> NONTERM_optAsSpec
- | 277 -> NONTERM_optAsSpec
- | 278 -> NONTERM_asSpec
- | 279 -> NONTERM_asSpec
- | 280 -> NONTERM_optBaseSpec
- | 281 -> NONTERM_optBaseSpec
- | 282 -> NONTERM_baseSpec
- | 283 -> NONTERM_baseSpec
- | 284 -> NONTERM_objectImplementationBlock
- | 285 -> NONTERM_objectImplementationBlock
- | 286 -> NONTERM_objectImplementationBlock
- | 287 -> NONTERM_objectImplementationMembers
- | 288 -> NONTERM_objectImplementationMembers
- | 289 -> NONTERM_objectImplementationMember
- | 290 -> NONTERM_objectImplementationMember
- | 291 -> NONTERM_objectImplementationMember
+ | 263 -> NONTERM_atomicPatternLongIdent
+ | 264 -> NONTERM_atomicPatternLongIdent
+ | 265 -> NONTERM_atomicPatternLongIdent
+ | 266 -> NONTERM_opt_access
+ | 267 -> NONTERM_opt_access
+ | 268 -> NONTERM_access
+ | 269 -> NONTERM_access
+ | 270 -> NONTERM_access
+ | 271 -> NONTERM_opt_interfaceImplDefn
+ | 272 -> NONTERM_opt_interfaceImplDefn
+ | 273 -> NONTERM_opt_interfaceImplDefn
+ | 274 -> NONTERM_opt_classDefn
+ | 275 -> NONTERM_opt_classDefn
+ | 276 -> NONTERM_inheritsDefn
+ | 277 -> NONTERM_inheritsDefn
+ | 278 -> NONTERM_inheritsDefn
+ | 279 -> NONTERM_optAsSpec
+ | 280 -> NONTERM_optAsSpec
+ | 281 -> NONTERM_asSpec
+ | 282 -> NONTERM_asSpec
+ | 283 -> NONTERM_optBaseSpec
+ | 284 -> NONTERM_optBaseSpec
+ | 285 -> NONTERM_baseSpec
+ | 286 -> NONTERM_baseSpec
+ | 287 -> NONTERM_objectImplementationBlock
+ | 288 -> NONTERM_objectImplementationBlock
+ | 289 -> NONTERM_objectImplementationBlock
+ | 290 -> NONTERM_objectImplementationMembers
+ | 291 -> NONTERM_objectImplementationMembers
| 292 -> NONTERM_objectImplementationMember
- | 293 -> NONTERM_staticMemberOrMemberOrOverride
- | 294 -> NONTERM_staticMemberOrMemberOrOverride
- | 295 -> NONTERM_staticMemberOrMemberOrOverride
- | 296 -> NONTERM_tyconDefnOrSpfnSimpleRepr
- | 297 -> NONTERM_tyconDefnOrSpfnSimpleRepr
- | 298 -> NONTERM_tyconDefnOrSpfnSimpleRepr
+ | 293 -> NONTERM_objectImplementationMember
+ | 294 -> NONTERM_objectImplementationMember
+ | 295 -> NONTERM_objectImplementationMember
+ | 296 -> NONTERM_staticMemberOrMemberOrOverride
+ | 297 -> NONTERM_staticMemberOrMemberOrOverride
+ | 298 -> NONTERM_staticMemberOrMemberOrOverride
| 299 -> NONTERM_tyconDefnOrSpfnSimpleRepr
| 300 -> NONTERM_tyconDefnOrSpfnSimpleRepr
- | 301 -> NONTERM_braceFieldDeclList
- | 302 -> NONTERM_braceFieldDeclList
- | 303 -> NONTERM_braceFieldDeclList
+ | 301 -> NONTERM_tyconDefnOrSpfnSimpleRepr
+ | 302 -> NONTERM_tyconDefnOrSpfnSimpleRepr
+ | 303 -> NONTERM_tyconDefnOrSpfnSimpleRepr
| 304 -> NONTERM_braceFieldDeclList
- | 305 -> NONTERM_anonRecdType
- | 306 -> NONTERM_anonRecdType
- | 307 -> NONTERM_braceBarFieldDeclListCore
- | 308 -> NONTERM_braceBarFieldDeclListCore
- | 309 -> NONTERM_braceBarFieldDeclListCore
- | 310 -> NONTERM_classOrInterfaceOrStruct
- | 311 -> NONTERM_classOrInterfaceOrStruct
- | 312 -> NONTERM_classOrInterfaceOrStruct
- | 313 -> NONTERM_interfaceMember
- | 314 -> NONTERM_interfaceMember
- | 315 -> NONTERM_tyconNameAndTyparDecls
- | 316 -> NONTERM_tyconNameAndTyparDecls
- | 317 -> NONTERM_tyconNameAndTyparDecls
+ | 305 -> NONTERM_braceFieldDeclList
+ | 306 -> NONTERM_braceFieldDeclList
+ | 307 -> NONTERM_braceFieldDeclList
+ | 308 -> NONTERM_anonRecdType
+ | 309 -> NONTERM_anonRecdType
+ | 310 -> NONTERM_braceBarFieldDeclListCore
+ | 311 -> NONTERM_braceBarFieldDeclListCore
+ | 312 -> NONTERM_braceBarFieldDeclListCore
+ | 313 -> NONTERM_classOrInterfaceOrStruct
+ | 314 -> NONTERM_classOrInterfaceOrStruct
+ | 315 -> NONTERM_classOrInterfaceOrStruct
+ | 316 -> NONTERM_interfaceMember
+ | 317 -> NONTERM_interfaceMember
| 318 -> NONTERM_tyconNameAndTyparDecls
- | 319 -> NONTERM_prefixTyparDecls
- | 320 -> NONTERM_prefixTyparDecls
- | 321 -> NONTERM_typarDeclList
- | 322 -> NONTERM_typarDeclList
- | 323 -> NONTERM_typarDecl
- | 324 -> NONTERM_typarDecl
- | 325 -> NONTERM_postfixTyparDecls
- | 326 -> NONTERM_explicitValTyparDeclsCore
- | 327 -> NONTERM_explicitValTyparDeclsCore
- | 328 -> NONTERM_explicitValTyparDeclsCore
- | 329 -> NONTERM_explicitValTyparDecls
- | 330 -> NONTERM_opt_explicitValTyparDecls
- | 331 -> NONTERM_opt_explicitValTyparDecls
- | 332 -> NONTERM_opt_typeConstraints
- | 333 -> NONTERM_opt_typeConstraints
- | 334 -> NONTERM_typeConstraints
- | 335 -> NONTERM_typeConstraints
- | 336 -> NONTERM_intersectionConstraints
- | 337 -> NONTERM_intersectionConstraints
- | 338 -> NONTERM_typeConstraint
- | 339 -> NONTERM_typeConstraint
- | 340 -> NONTERM_typeConstraint
- | 341 -> NONTERM_typeConstraint
- | 342 -> NONTERM_typeConstraint
- | 343 -> NONTERM_typeConstraint
+ | 319 -> NONTERM_tyconNameAndTyparDecls
+ | 320 -> NONTERM_tyconNameAndTyparDecls
+ | 321 -> NONTERM_tyconNameAndTyparDecls
+ | 322 -> NONTERM_prefixTyparDecls
+ | 323 -> NONTERM_prefixTyparDecls
+ | 324 -> NONTERM_typarDeclList
+ | 325 -> NONTERM_typarDeclList
+ | 326 -> NONTERM_typarDecl
+ | 327 -> NONTERM_typarDecl
+ | 328 -> NONTERM_postfixTyparDecls
+ | 329 -> NONTERM_explicitValTyparDeclsCore
+ | 330 -> NONTERM_explicitValTyparDeclsCore
+ | 331 -> NONTERM_explicitValTyparDeclsCore
+ | 332 -> NONTERM_explicitValTyparDecls
+ | 333 -> NONTERM_opt_explicitValTyparDecls
+ | 334 -> NONTERM_opt_explicitValTyparDecls
+ | 335 -> NONTERM_hashConstraint
+ | 336 -> NONTERM_opt_typeConstraints
+ | 337 -> NONTERM_opt_typeConstraints
+ | 338 -> NONTERM_typeConstraints
+ | 339 -> NONTERM_typeConstraints
+ | 340 -> NONTERM_intersectionConstraints
+ | 341 -> NONTERM_intersectionConstraints
+ | 342 -> NONTERM_intersectionConstraints
+ | 343 -> NONTERM_intersectionConstraints
| 344 -> NONTERM_typeConstraint
| 345 -> NONTERM_typeConstraint
| 346 -> NONTERM_typeConstraint
| 347 -> NONTERM_typeConstraint
| 348 -> NONTERM_typeConstraint
- | 349 -> NONTERM_typeAlts
- | 350 -> NONTERM_typeAlts
- | 351 -> NONTERM_unionTypeRepr
- | 352 -> NONTERM_unionTypeRepr
- | 353 -> NONTERM_unionTypeRepr
- | 354 -> NONTERM_barAndgrabXmlDoc
- | 355 -> NONTERM_attrUnionCaseDecls
- | 356 -> NONTERM_attrUnionCaseDecls
- | 357 -> NONTERM_attrUnionCaseDecl
- | 358 -> NONTERM_attrUnionCaseDecl
- | 359 -> NONTERM_attrUnionCaseDecl
- | 360 -> NONTERM_attrUnionCaseDecl
- | 361 -> NONTERM_attrUnionCaseDecl
- | 362 -> NONTERM_attrUnionCaseDecl
- | 363 -> NONTERM_attrUnionCaseDecl
+ | 349 -> NONTERM_typeConstraint
+ | 350 -> NONTERM_typeConstraint
+ | 351 -> NONTERM_typeConstraint
+ | 352 -> NONTERM_typeConstraint
+ | 353 -> NONTERM_typeConstraint
+ | 354 -> NONTERM_typeConstraint
+ | 355 -> NONTERM_typeConstraint
+ | 356 -> NONTERM_typeAlts
+ | 357 -> NONTERM_typeAlts
+ | 358 -> NONTERM_unionTypeRepr
+ | 359 -> NONTERM_unionTypeRepr
+ | 360 -> NONTERM_unionTypeRepr
+ | 361 -> NONTERM_barAndgrabXmlDoc
+ | 362 -> NONTERM_attrUnionCaseDecls
+ | 363 -> NONTERM_attrUnionCaseDecls
| 364 -> NONTERM_attrUnionCaseDecl
| 365 -> NONTERM_attrUnionCaseDecl
- | 366 -> NONTERM_unionCaseName
- | 367 -> NONTERM_unionCaseName
- | 368 -> NONTERM_unionCaseName
- | 369 -> NONTERM_firstUnionCaseDeclOfMany
- | 370 -> NONTERM_firstUnionCaseDeclOfMany
- | 371 -> NONTERM_firstUnionCaseDeclOfMany
- | 372 -> NONTERM_firstUnionCaseDecl
- | 373 -> NONTERM_firstUnionCaseDecl
- | 374 -> NONTERM_firstUnionCaseDecl
- | 375 -> NONTERM_firstUnionCaseDecl
- | 376 -> NONTERM_unionCaseReprElements
- | 377 -> NONTERM_unionCaseReprElements
- | 378 -> NONTERM_unionCaseReprElement
- | 379 -> NONTERM_unionCaseReprElement
- | 380 -> NONTERM_unionCaseReprElement
- | 381 -> NONTERM_unionCaseReprElement
- | 382 -> NONTERM_unionCaseRepr
- | 383 -> NONTERM_unionCaseRepr
- | 384 -> NONTERM_recdFieldDeclList
- | 385 -> NONTERM_recdFieldDeclList
- | 386 -> NONTERM_recdFieldDecl
- | 387 -> NONTERM_fieldDecl
- | 388 -> NONTERM_fieldDecl
- | 389 -> NONTERM_fieldDecl
- | 390 -> NONTERM_fieldDecl
- | 391 -> NONTERM_exconDefn
- | 392 -> NONTERM_exconCore
- | 393 -> NONTERM_exconCore
- | 394 -> NONTERM_exconIntro
- | 395 -> NONTERM_exconIntro
- | 396 -> NONTERM_exconIntro
- | 397 -> NONTERM_exconRepr
- | 398 -> NONTERM_exconRepr
- | 399 -> NONTERM_defnBindings
- | 400 -> NONTERM_defnBindings
- | 401 -> NONTERM_doBinding
- | 402 -> NONTERM_hardwhiteLetBindings
- | 403 -> NONTERM_hardwhiteDoBinding
- | 404 -> NONTERM_hardwhiteDoBinding
- | 405 -> NONTERM_classDefnBindings
- | 406 -> NONTERM_classDefnBindings
- | 407 -> NONTERM_classDefnBindings
- | 408 -> NONTERM_classDefnBindings
- | 409 -> NONTERM_hardwhiteDefnBindingsTerminator
- | 410 -> NONTERM_hardwhiteDefnBindingsTerminator
- | 411 -> NONTERM_cPrototype
- | 412 -> NONTERM_externArgs
- | 413 -> NONTERM_externArgs
- | 414 -> NONTERM_externArgs
- | 415 -> NONTERM_externMoreArgs
- | 416 -> NONTERM_externMoreArgs
- | 417 -> NONTERM_externArg
- | 418 -> NONTERM_externArg
- | 419 -> NONTERM_cType
- | 420 -> NONTERM_cType
- | 421 -> NONTERM_cType
- | 422 -> NONTERM_cType
- | 423 -> NONTERM_cType
- | 424 -> NONTERM_cRetType
- | 425 -> NONTERM_cRetType
- | 426 -> NONTERM_localBindings
- | 427 -> NONTERM_moreLocalBindings
- | 428 -> NONTERM_moreLocalBindings
- | 429 -> NONTERM_attr_localBinding
- | 430 -> NONTERM_attr_localBinding
- | 431 -> NONTERM_localBinding
- | 432 -> NONTERM_localBinding
- | 433 -> NONTERM_localBinding
- | 434 -> NONTERM_typedExprWithStaticOptimizationsBlock
- | 435 -> NONTERM_typedExprWithStaticOptimizationsBlock
- | 436 -> NONTERM_typedExprWithStaticOptimizationsBlock
- | 437 -> NONTERM_typedExprWithStaticOptimizations
- | 438 -> NONTERM_opt_staticOptimizations
- | 439 -> NONTERM_opt_staticOptimizations
- | 440 -> NONTERM_staticOptimization
- | 441 -> NONTERM_staticOptimizationConditions
- | 442 -> NONTERM_staticOptimizationConditions
- | 443 -> NONTERM_staticOptimizationCondition
- | 444 -> NONTERM_staticOptimizationCondition
- | 445 -> NONTERM_rawConstant
- | 446 -> NONTERM_rawConstant
- | 447 -> NONTERM_rawConstant
- | 448 -> NONTERM_rawConstant
- | 449 -> NONTERM_rawConstant
- | 450 -> NONTERM_rawConstant
- | 451 -> NONTERM_rawConstant
- | 452 -> NONTERM_rawConstant
- | 453 -> NONTERM_rawConstant
- | 454 -> NONTERM_rawConstant
- | 455 -> NONTERM_rawConstant
- | 456 -> NONTERM_rawConstant
- | 457 -> NONTERM_rawConstant
- | 458 -> NONTERM_rawConstant
- | 459 -> NONTERM_rawConstant
+ | 366 -> NONTERM_attrUnionCaseDecl
+ | 367 -> NONTERM_attrUnionCaseDecl
+ | 368 -> NONTERM_attrUnionCaseDecl
+ | 369 -> NONTERM_attrUnionCaseDecl
+ | 370 -> NONTERM_attrUnionCaseDecl
+ | 371 -> NONTERM_attrUnionCaseDecl
+ | 372 -> NONTERM_attrUnionCaseDecl
+ | 373 -> NONTERM_attrUnionCaseDecl
+ | 374 -> NONTERM_unionCaseName
+ | 375 -> NONTERM_unionCaseName
+ | 376 -> NONTERM_unionCaseName
+ | 377 -> NONTERM_firstUnionCaseDeclOfMany
+ | 378 -> NONTERM_firstUnionCaseDeclOfMany
+ | 379 -> NONTERM_firstUnionCaseDeclOfMany
+ | 380 -> NONTERM_firstUnionCaseDeclOfMany
+ | 381 -> NONTERM_firstUnionCaseDecl
+ | 382 -> NONTERM_firstUnionCaseDecl
+ | 383 -> NONTERM_firstUnionCaseDecl
+ | 384 -> NONTERM_firstUnionCaseDecl
+ | 385 -> NONTERM_firstUnionCaseDecl
+ | 386 -> NONTERM_firstUnionCaseDecl
+ | 387 -> NONTERM_unionCaseReprElements
+ | 388 -> NONTERM_unionCaseReprElements
+ | 389 -> NONTERM_unionCaseReprElements
+ | 390 -> NONTERM_unionCaseReprElements
+ | 391 -> NONTERM_unionCaseReprElement
+ | 392 -> NONTERM_unionCaseReprElement
+ | 393 -> NONTERM_unionCaseReprElement
+ | 394 -> NONTERM_unionCaseReprElement
+ | 395 -> NONTERM_unionCaseReprElement
+ | 396 -> NONTERM_unionCaseRepr
+ | 397 -> NONTERM_unionCaseRepr
+ | 398 -> NONTERM_recdFieldDeclList
+ | 399 -> NONTERM_recdFieldDeclList
+ | 400 -> NONTERM_recdFieldDecl
+ | 401 -> NONTERM_fieldDecl
+ | 402 -> NONTERM_fieldDecl
+ | 403 -> NONTERM_fieldDecl
+ | 404 -> NONTERM_fieldDecl
+ | 405 -> NONTERM_exconDefn
+ | 406 -> NONTERM_exconCore
+ | 407 -> NONTERM_exconCore
+ | 408 -> NONTERM_exconIntro
+ | 409 -> NONTERM_exconIntro
+ | 410 -> NONTERM_exconIntro
+ | 411 -> NONTERM_exconRepr
+ | 412 -> NONTERM_exconRepr
+ | 413 -> NONTERM_defnBindings
+ | 414 -> NONTERM_defnBindings
+ | 415 -> NONTERM_doBinding
+ | 416 -> NONTERM_hardwhiteLetBindings
+ | 417 -> NONTERM_hardwhiteDoBinding
+ | 418 -> NONTERM_hardwhiteDoBinding
+ | 419 -> NONTERM_classDefnBindings
+ | 420 -> NONTERM_classDefnBindings
+ | 421 -> NONTERM_classDefnBindings
+ | 422 -> NONTERM_classDefnBindings
+ | 423 -> NONTERM_hardwhiteDefnBindingsTerminator
+ | 424 -> NONTERM_hardwhiteDefnBindingsTerminator
+ | 425 -> NONTERM_cPrototype
+ | 426 -> NONTERM_externArgs
+ | 427 -> NONTERM_externArgs
+ | 428 -> NONTERM_externArgs
+ | 429 -> NONTERM_externMoreArgs
+ | 430 -> NONTERM_externMoreArgs
+ | 431 -> NONTERM_externArg
+ | 432 -> NONTERM_externArg
+ | 433 -> NONTERM_cType
+ | 434 -> NONTERM_cType
+ | 435 -> NONTERM_cType
+ | 436 -> NONTERM_cType
+ | 437 -> NONTERM_cType
+ | 438 -> NONTERM_cType
+ | 439 -> NONTERM_cRetType
+ | 440 -> NONTERM_cRetType
+ | 441 -> NONTERM_localBindings
+ | 442 -> NONTERM_moreLocalBindings
+ | 443 -> NONTERM_moreLocalBindings
+ | 444 -> NONTERM_attr_localBinding
+ | 445 -> NONTERM_attr_localBinding
+ | 446 -> NONTERM_localBinding
+ | 447 -> NONTERM_localBinding
+ | 448 -> NONTERM_localBinding
+ | 449 -> NONTERM_typedExprWithStaticOptimizationsBlock
+ | 450 -> NONTERM_typedExprWithStaticOptimizationsBlock
+ | 451 -> NONTERM_typedExprWithStaticOptimizationsBlock
+ | 452 -> NONTERM_typedExprWithStaticOptimizations
+ | 453 -> NONTERM_opt_staticOptimizations
+ | 454 -> NONTERM_opt_staticOptimizations
+ | 455 -> NONTERM_staticOptimization
+ | 456 -> NONTERM_staticOptimizationConditions
+ | 457 -> NONTERM_staticOptimizationConditions
+ | 458 -> NONTERM_staticOptimizationCondition
+ | 459 -> NONTERM_staticOptimizationCondition
| 460 -> NONTERM_rawConstant
| 461 -> NONTERM_rawConstant
| 462 -> NONTERM_rawConstant
- | 463 -> NONTERM_rationalConstant
- | 464 -> NONTERM_rationalConstant
- | 465 -> NONTERM_rationalConstant
- | 466 -> NONTERM_rationalConstant
- | 467 -> NONTERM_atomicUnsignedRationalConstant
- | 468 -> NONTERM_atomicUnsignedRationalConstant
- | 469 -> NONTERM_atomicRationalConstant
- | 470 -> NONTERM_atomicRationalConstant
- | 471 -> NONTERM_constant
- | 472 -> NONTERM_constant
- | 473 -> NONTERM_bindingPattern
- | 474 -> NONTERM_simplePattern
- | 475 -> NONTERM_simplePattern
- | 476 -> NONTERM_simplePattern
- | 477 -> NONTERM_simplePattern
- | 478 -> NONTERM_simplePattern
- | 479 -> NONTERM_simplePatternCommaList
- | 480 -> NONTERM_simplePatternCommaList
- | 481 -> NONTERM_opt_simplePatterns
- | 482 -> NONTERM_opt_simplePatterns
- | 483 -> NONTERM_simplePatterns
- | 484 -> NONTERM_simplePatterns
- | 485 -> NONTERM_simplePatterns
- | 486 -> NONTERM_simplePatterns
- | 487 -> NONTERM_simplePatterns
- | 488 -> NONTERM_headBindingPattern
- | 489 -> NONTERM_headBindingPattern
- | 490 -> NONTERM_headBindingPattern
- | 491 -> NONTERM_headBindingPattern
- | 492 -> NONTERM_headBindingPattern
- | 493 -> NONTERM_headBindingPattern
- | 494 -> NONTERM_tuplePatternElements
- | 495 -> NONTERM_tuplePatternElements
- | 496 -> NONTERM_tuplePatternElements
- | 497 -> NONTERM_tuplePatternElements
- | 498 -> NONTERM_tuplePatternElements
- | 499 -> NONTERM_tuplePatternElements
- | 500 -> NONTERM_conjPatternElements
- | 501 -> NONTERM_conjPatternElements
- | 502 -> NONTERM_namePatPairs
- | 503 -> NONTERM_namePatPairs
- | 504 -> NONTERM_namePatPairs
- | 505 -> NONTERM_namePatPair
- | 506 -> NONTERM_namePatPair
- | 507 -> NONTERM_namePatPair
- | 508 -> NONTERM_constrPattern
- | 509 -> NONTERM_constrPattern
- | 510 -> NONTERM_constrPattern
- | 511 -> NONTERM_constrPattern
- | 512 -> NONTERM_constrPattern
- | 513 -> NONTERM_constrPattern
- | 514 -> NONTERM_constrPattern
- | 515 -> NONTERM_constrPattern
- | 516 -> NONTERM_constrPattern
- | 517 -> NONTERM_atomicPatsOrNamePatPairs
- | 518 -> NONTERM_atomicPatsOrNamePatPairs
- | 519 -> NONTERM_atomicPatterns
- | 520 -> NONTERM_atomicPatterns
- | 521 -> NONTERM_atomicPatterns
- | 522 -> NONTERM_atomicPatterns
- | 523 -> NONTERM_atomicPattern
- | 524 -> NONTERM_atomicPattern
- | 525 -> NONTERM_atomicPattern
- | 526 -> NONTERM_atomicPattern
- | 527 -> NONTERM_atomicPattern
- | 528 -> NONTERM_atomicPattern
- | 529 -> NONTERM_atomicPattern
- | 530 -> NONTERM_atomicPattern
- | 531 -> NONTERM_atomicPattern
- | 532 -> NONTERM_atomicPattern
- | 533 -> NONTERM_atomicPattern
- | 534 -> NONTERM_atomicPattern
- | 535 -> NONTERM_atomicPattern
+ | 463 -> NONTERM_rawConstant
+ | 464 -> NONTERM_rawConstant
+ | 465 -> NONTERM_rawConstant
+ | 466 -> NONTERM_rawConstant
+ | 467 -> NONTERM_rawConstant
+ | 468 -> NONTERM_rawConstant
+ | 469 -> NONTERM_rawConstant
+ | 470 -> NONTERM_rawConstant
+ | 471 -> NONTERM_rawConstant
+ | 472 -> NONTERM_rawConstant
+ | 473 -> NONTERM_rawConstant
+ | 474 -> NONTERM_rawConstant
+ | 475 -> NONTERM_rawConstant
+ | 476 -> NONTERM_rawConstant
+ | 477 -> NONTERM_rawConstant
+ | 478 -> NONTERM_rationalConstant
+ | 479 -> NONTERM_rationalConstant
+ | 480 -> NONTERM_rationalConstant
+ | 481 -> NONTERM_rationalConstant
+ | 482 -> NONTERM_atomicUnsignedRationalConstant
+ | 483 -> NONTERM_atomicUnsignedRationalConstant
+ | 484 -> NONTERM_atomicRationalConstant
+ | 485 -> NONTERM_atomicRationalConstant
+ | 486 -> NONTERM_constant
+ | 487 -> NONTERM_constant
+ | 488 -> NONTERM_bindingPattern
+ | 489 -> NONTERM_opt_simplePatterns
+ | 490 -> NONTERM_opt_simplePatterns
+ | 491 -> NONTERM_simplePatterns
+ | 492 -> NONTERM_simplePatterns
+ | 493 -> NONTERM_barCanBeRightBeforeNull
+ | 494 -> NONTERM_barCanBeRightBeforeNull
+ | 495 -> NONTERM_headBindingPattern
+ | 496 -> NONTERM_headBindingPattern
+ | 497 -> NONTERM_headBindingPattern
+ | 498 -> NONTERM_headBindingPattern
+ | 499 -> NONTERM_headBindingPattern
+ | 500 -> NONTERM_headBindingPattern
+ | 501 -> NONTERM_headBindingPattern
+ | 502 -> NONTERM_headBindingPattern
+ | 503 -> NONTERM_headBindingPattern
+ | 504 -> NONTERM_headBindingPattern
+ | 505 -> NONTERM_tuplePatternElements
+ | 506 -> NONTERM_tuplePatternElements
+ | 507 -> NONTERM_tuplePatternElements
+ | 508 -> NONTERM_tuplePatternElements
+ | 509 -> NONTERM_tuplePatternElements
+ | 510 -> NONTERM_tuplePatternElements
+ | 511 -> NONTERM_conjPatternElements
+ | 512 -> NONTERM_conjPatternElements
+ | 513 -> NONTERM_namePatPairs
+ | 514 -> NONTERM_namePatPairs
+ | 515 -> NONTERM_namePatPairs
+ | 516 -> NONTERM_namePatPair
+ | 517 -> NONTERM_namePatPair
+ | 518 -> NONTERM_namePatPair
+ | 519 -> NONTERM_constrPattern
+ | 520 -> NONTERM_constrPattern
+ | 521 -> NONTERM_constrPattern
+ | 522 -> NONTERM_constrPattern
+ | 523 -> NONTERM_constrPattern
+ | 524 -> NONTERM_constrPattern
+ | 525 -> NONTERM_constrPattern
+ | 526 -> NONTERM_constrPattern
+ | 527 -> NONTERM_constrPattern
+ | 528 -> NONTERM_constrPattern
+ | 529 -> NONTERM_constrPattern
+ | 530 -> NONTERM_atomicPatsOrNamePatPairs
+ | 531 -> NONTERM_atomicPatsOrNamePatPairs
+ | 532 -> NONTERM_atomicPatterns
+ | 533 -> NONTERM_atomicPatterns
+ | 534 -> NONTERM_atomicPatterns
+ | 535 -> NONTERM_atomicPatterns
| 536 -> NONTERM_atomicPattern
| 537 -> NONTERM_atomicPattern
| 538 -> NONTERM_atomicPattern
@@ -1747,75 +1754,75 @@ let prodIdxToNonTerminal (prodIdx:int) =
| 540 -> NONTERM_atomicPattern
| 541 -> NONTERM_atomicPattern
| 542 -> NONTERM_atomicPattern
- | 543 -> NONTERM_parenPatternBody
- | 544 -> NONTERM_parenPatternBody
- | 545 -> NONTERM_parenPattern
- | 546 -> NONTERM_parenPattern
- | 547 -> NONTERM_parenPattern
- | 548 -> NONTERM_parenPattern
- | 549 -> NONTERM_parenPattern
- | 550 -> NONTERM_parenPattern
- | 551 -> NONTERM_parenPattern
- | 552 -> NONTERM_parenPattern
- | 553 -> NONTERM_parenPattern
- | 554 -> NONTERM_tupleParenPatternElements
- | 555 -> NONTERM_tupleParenPatternElements
- | 556 -> NONTERM_tupleParenPatternElements
- | 557 -> NONTERM_tupleParenPatternElements
- | 558 -> NONTERM_tupleParenPatternElements
- | 559 -> NONTERM_tupleParenPatternElements
- | 560 -> NONTERM_conjParenPatternElements
- | 561 -> NONTERM_conjParenPatternElements
- | 562 -> NONTERM_recordPatternElementsAux
- | 563 -> NONTERM_recordPatternElementsAux
- | 564 -> NONTERM_recordPatternElement
- | 565 -> NONTERM_recordPatternElement
- | 566 -> NONTERM_recordPatternElement
- | 567 -> NONTERM_listPatternElements
- | 568 -> NONTERM_listPatternElements
- | 569 -> NONTERM_listPatternElements
- | 570 -> NONTERM_typedSequentialExprBlock
- | 571 -> NONTERM_typedSequentialExprBlock
- | 572 -> NONTERM_typedSequentialExprBlock
- | 573 -> NONTERM_typedSequentialExprBlock
- | 574 -> NONTERM_declExprBlock
- | 575 -> NONTERM_declExprBlock
- | 576 -> NONTERM_declExprBlock
- | 577 -> NONTERM_typedSequentialExprBlockR
- | 578 -> NONTERM_typedSequentialExprBlockR
- | 579 -> NONTERM_typedSequentialExprBlockR
- | 580 -> NONTERM_typedSequentialExpr
- | 581 -> NONTERM_typedSequentialExpr
- | 582 -> NONTERM_typedSequentialExpr
- | 583 -> NONTERM_typedSequentialExprEOF
- | 584 -> NONTERM_sequentialExpr
- | 585 -> NONTERM_sequentialExpr
- | 586 -> NONTERM_sequentialExpr
- | 587 -> NONTERM_sequentialExpr
- | 588 -> NONTERM_sequentialExpr
- | 589 -> NONTERM_sequentialExpr
- | 590 -> NONTERM_recover
- | 591 -> NONTERM_recover
- | 592 -> NONTERM_moreBinders
- | 593 -> NONTERM_moreBinders
- | 594 -> NONTERM_moreBinders
- | 595 -> NONTERM_declExpr
- | 596 -> NONTERM_declExpr
- | 597 -> NONTERM_declExpr
- | 598 -> NONTERM_declExpr
- | 599 -> NONTERM_declExpr
- | 600 -> NONTERM_declExpr
- | 601 -> NONTERM_declExpr
- | 602 -> NONTERM_declExpr
- | 603 -> NONTERM_declExpr
- | 604 -> NONTERM_declExpr
- | 605 -> NONTERM_declExpr
- | 606 -> NONTERM_declExpr
- | 607 -> NONTERM_declExpr
- | 608 -> NONTERM_declExpr
- | 609 -> NONTERM_declExpr
- | 610 -> NONTERM_declExpr
- | 611 -> NONTERM_declExpr
+ | 543 -> NONTERM_atomicPattern
+ | 544 -> NONTERM_atomicPattern
+ | 545 -> NONTERM_atomicPattern
+ | 546 -> NONTERM_atomicPattern
+ | 547 -> NONTERM_atomicPattern
+ | 548 -> NONTERM_atomicPattern
+ | 549 -> NONTERM_atomicPattern
+ | 550 -> NONTERM_atomicPattern
+ | 551 -> NONTERM_atomicPattern
+ | 552 -> NONTERM_atomicPattern
+ | 553 -> NONTERM_atomicPattern
+ | 554 -> NONTERM_atomicPattern
+ | 555 -> NONTERM_atomicPattern
+ | 556 -> NONTERM_parenPatternBody
+ | 557 -> NONTERM_parenPatternBody
+ | 558 -> NONTERM_parenPattern
+ | 559 -> NONTERM_parenPattern
+ | 560 -> NONTERM_parenPattern
+ | 561 -> NONTERM_parenPattern
+ | 562 -> NONTERM_parenPattern
+ | 563 -> NONTERM_parenPattern
+ | 564 -> NONTERM_parenPattern
+ | 565 -> NONTERM_parenPattern
+ | 566 -> NONTERM_parenPattern
+ | 567 -> NONTERM_parenPattern
+ | 568 -> NONTERM_parenPattern
+ | 569 -> NONTERM_parenPattern
+ | 570 -> NONTERM_parenPattern
+ | 571 -> NONTERM_tupleParenPatternElements
+ | 572 -> NONTERM_tupleParenPatternElements
+ | 573 -> NONTERM_tupleParenPatternElements
+ | 574 -> NONTERM_tupleParenPatternElements
+ | 575 -> NONTERM_tupleParenPatternElements
+ | 576 -> NONTERM_tupleParenPatternElements
+ | 577 -> NONTERM_conjParenPatternElements
+ | 578 -> NONTERM_conjParenPatternElements
+ | 579 -> NONTERM_recordPatternElementsAux
+ | 580 -> NONTERM_recordPatternElementsAux
+ | 581 -> NONTERM_recordPatternElement
+ | 582 -> NONTERM_recordPatternElement
+ | 583 -> NONTERM_recordPatternElement
+ | 584 -> NONTERM_listPatternElements
+ | 585 -> NONTERM_listPatternElements
+ | 586 -> NONTERM_listPatternElements
+ | 587 -> NONTERM_typedSequentialExprBlock
+ | 588 -> NONTERM_typedSequentialExprBlock
+ | 589 -> NONTERM_typedSequentialExprBlock
+ | 590 -> NONTERM_typedSequentialExprBlock
+ | 591 -> NONTERM_declExprBlock
+ | 592 -> NONTERM_declExprBlock
+ | 593 -> NONTERM_declExprBlock
+ | 594 -> NONTERM_typedSequentialExprBlockR
+ | 595 -> NONTERM_typedSequentialExprBlockR
+ | 596 -> NONTERM_typedSequentialExprBlockR
+ | 597 -> NONTERM_typedSequentialExpr
+ | 598 -> NONTERM_typedSequentialExpr
+ | 599 -> NONTERM_typedSequentialExpr
+ | 600 -> NONTERM_typedSequentialExprEOF
+ | 601 -> NONTERM_sequentialExpr
+ | 602 -> NONTERM_sequentialExpr
+ | 603 -> NONTERM_sequentialExpr
+ | 604 -> NONTERM_sequentialExpr
+ | 605 -> NONTERM_sequentialExpr
+ | 606 -> NONTERM_sequentialExpr
+ | 607 -> NONTERM_recover
+ | 608 -> NONTERM_recover
+ | 609 -> NONTERM_moreBinders
+ | 610 -> NONTERM_moreBinders
+ | 611 -> NONTERM_moreBinders
| 612 -> NONTERM_declExpr
| 613 -> NONTERM_declExpr
| 614 -> NONTERM_declExpr
@@ -1908,318 +1915,318 @@ let prodIdxToNonTerminal (prodIdx:int) =
| 701 -> NONTERM_declExpr
| 702 -> NONTERM_declExpr
| 703 -> NONTERM_declExpr
- | 704 -> NONTERM_whileExprCore
- | 705 -> NONTERM_whileExprCore
- | 706 -> NONTERM_whileExprCore
- | 707 -> NONTERM_whileExprCore
- | 708 -> NONTERM_whileExprCore
- | 709 -> NONTERM_whileExprCore
- | 710 -> NONTERM_dynamicArg
- | 711 -> NONTERM_dynamicArg
- | 712 -> NONTERM_withClauses
- | 713 -> NONTERM_withClauses
- | 714 -> NONTERM_withClauses
- | 715 -> NONTERM_withClauses
- | 716 -> NONTERM_withPatternClauses
- | 717 -> NONTERM_withPatternClauses
- | 718 -> NONTERM_withPatternClauses
- | 719 -> NONTERM_withPatternClauses
- | 720 -> NONTERM_patternAndGuard
- | 721 -> NONTERM_patternClauses
- | 722 -> NONTERM_patternClauses
- | 723 -> NONTERM_patternClauses
- | 724 -> NONTERM_patternClauses
- | 725 -> NONTERM_patternClauses
- | 726 -> NONTERM_patternClauses
- | 727 -> NONTERM_patternGuard
- | 728 -> NONTERM_patternGuard
- | 729 -> NONTERM_patternResult
- | 730 -> NONTERM_ifExprCases
- | 731 -> NONTERM_ifExprThen
- | 732 -> NONTERM_ifExprThen
- | 733 -> NONTERM_ifExprThen
- | 734 -> NONTERM_ifExprThen
- | 735 -> NONTERM_ifExprElifs
- | 736 -> NONTERM_ifExprElifs
- | 737 -> NONTERM_ifExprElifs
- | 738 -> NONTERM_ifExprElifs
- | 739 -> NONTERM_ifExprElifs
- | 740 -> NONTERM_tupleExpr
- | 741 -> NONTERM_tupleExpr
- | 742 -> NONTERM_tupleExpr
- | 743 -> NONTERM_tupleExpr
- | 744 -> NONTERM_tupleExpr
- | 745 -> NONTERM_tupleExpr
- | 746 -> NONTERM_tupleExpr
- | 747 -> NONTERM_tupleExpr
- | 748 -> NONTERM_minusExpr
- | 749 -> NONTERM_minusExpr
- | 750 -> NONTERM_minusExpr
- | 751 -> NONTERM_minusExpr
- | 752 -> NONTERM_minusExpr
- | 753 -> NONTERM_minusExpr
- | 754 -> NONTERM_minusExpr
- | 755 -> NONTERM_minusExpr
- | 756 -> NONTERM_minusExpr
- | 757 -> NONTERM_minusExpr
- | 758 -> NONTERM_minusExpr
- | 759 -> NONTERM_minusExpr
- | 760 -> NONTERM_minusExpr
- | 761 -> NONTERM_minusExpr
- | 762 -> NONTERM_appExpr
- | 763 -> NONTERM_appExpr
- | 764 -> NONTERM_argExpr
- | 765 -> NONTERM_argExpr
- | 766 -> NONTERM_atomicExpr
- | 767 -> NONTERM_atomicExpr
- | 768 -> NONTERM_atomicExpr
- | 769 -> NONTERM_atomicExpr
- | 770 -> NONTERM_atomicExpr
- | 771 -> NONTERM_atomicExpr
- | 772 -> NONTERM_atomicExpr
- | 773 -> NONTERM_atomicExpr
- | 774 -> NONTERM_atomicExpr
- | 775 -> NONTERM_atomicExpr
- | 776 -> NONTERM_atomicExpr
- | 777 -> NONTERM_atomicExpr
- | 778 -> NONTERM_atomicExpr
- | 779 -> NONTERM_atomicExpr
- | 780 -> NONTERM_atomicExpr
- | 781 -> NONTERM_atomicExpr
- | 782 -> NONTERM_atomicExpr
- | 783 -> NONTERM_atomicExpr
- | 784 -> NONTERM_atomicExpr
+ | 704 -> NONTERM_declExpr
+ | 705 -> NONTERM_declExpr
+ | 706 -> NONTERM_declExpr
+ | 707 -> NONTERM_declExpr
+ | 708 -> NONTERM_declExpr
+ | 709 -> NONTERM_declExpr
+ | 710 -> NONTERM_declExpr
+ | 711 -> NONTERM_declExpr
+ | 712 -> NONTERM_declExpr
+ | 713 -> NONTERM_declExpr
+ | 714 -> NONTERM_declExpr
+ | 715 -> NONTERM_declExpr
+ | 716 -> NONTERM_declExpr
+ | 717 -> NONTERM_declExpr
+ | 718 -> NONTERM_declExpr
+ | 719 -> NONTERM_declExpr
+ | 720 -> NONTERM_declExpr
+ | 721 -> NONTERM_whileExprCore
+ | 722 -> NONTERM_whileExprCore
+ | 723 -> NONTERM_whileExprCore
+ | 724 -> NONTERM_whileExprCore
+ | 725 -> NONTERM_whileExprCore
+ | 726 -> NONTERM_whileExprCore
+ | 727 -> NONTERM_dynamicArg
+ | 728 -> NONTERM_dynamicArg
+ | 729 -> NONTERM_withClauses
+ | 730 -> NONTERM_withClauses
+ | 731 -> NONTERM_withClauses
+ | 732 -> NONTERM_withClauses
+ | 733 -> NONTERM_withPatternClauses
+ | 734 -> NONTERM_withPatternClauses
+ | 735 -> NONTERM_withPatternClauses
+ | 736 -> NONTERM_withPatternClauses
+ | 737 -> NONTERM_withPatternClauses
+ | 738 -> NONTERM_patternAndGuard
+ | 739 -> NONTERM_patternClauses
+ | 740 -> NONTERM_patternClauses
+ | 741 -> NONTERM_patternClauses
+ | 742 -> NONTERM_patternClauses
+ | 743 -> NONTERM_patternClauses
+ | 744 -> NONTERM_patternClauses
+ | 745 -> NONTERM_patternClauses
+ | 746 -> NONTERM_patternGuard
+ | 747 -> NONTERM_patternGuard
+ | 748 -> NONTERM_patternResult
+ | 749 -> NONTERM_ifExprCases
+ | 750 -> NONTERM_ifExprThen
+ | 751 -> NONTERM_ifExprThen
+ | 752 -> NONTERM_ifExprThen
+ | 753 -> NONTERM_ifExprThen
+ | 754 -> NONTERM_ifExprElifs
+ | 755 -> NONTERM_ifExprElifs
+ | 756 -> NONTERM_ifExprElifs
+ | 757 -> NONTERM_ifExprElifs
+ | 758 -> NONTERM_ifExprElifs
+ | 759 -> NONTERM_tupleExpr
+ | 760 -> NONTERM_tupleExpr
+ | 761 -> NONTERM_tupleExpr
+ | 762 -> NONTERM_tupleExpr
+ | 763 -> NONTERM_tupleExpr
+ | 764 -> NONTERM_tupleExpr
+ | 765 -> NONTERM_tupleExpr
+ | 766 -> NONTERM_tupleExpr
+ | 767 -> NONTERM_minusExpr
+ | 768 -> NONTERM_minusExpr
+ | 769 -> NONTERM_minusExpr
+ | 770 -> NONTERM_minusExpr
+ | 771 -> NONTERM_minusExpr
+ | 772 -> NONTERM_minusExpr
+ | 773 -> NONTERM_minusExpr
+ | 774 -> NONTERM_minusExpr
+ | 775 -> NONTERM_minusExpr
+ | 776 -> NONTERM_minusExpr
+ | 777 -> NONTERM_minusExpr
+ | 778 -> NONTERM_minusExpr
+ | 779 -> NONTERM_minusExpr
+ | 780 -> NONTERM_minusExpr
+ | 781 -> NONTERM_appExpr
+ | 782 -> NONTERM_appExpr
+ | 783 -> NONTERM_argExpr
+ | 784 -> NONTERM_argExpr
| 785 -> NONTERM_atomicExpr
| 786 -> NONTERM_atomicExpr
| 787 -> NONTERM_atomicExpr
- | 788 -> NONTERM_atomicExprQualification
- | 789 -> NONTERM_atomicExprQualification
- | 790 -> NONTERM_atomicExprQualification
- | 791 -> NONTERM_atomicExprQualification
- | 792 -> NONTERM_atomicExprQualification
- | 793 -> NONTERM_atomicExprQualification
- | 794 -> NONTERM_atomicExprQualification
- | 795 -> NONTERM_atomicExprQualification
- | 796 -> NONTERM_atomicExprQualification
- | 797 -> NONTERM_atomicExprQualification
- | 798 -> NONTERM_atomicExprAfterType
- | 799 -> NONTERM_atomicExprAfterType
- | 800 -> NONTERM_atomicExprAfterType
- | 801 -> NONTERM_atomicExprAfterType
- | 802 -> NONTERM_atomicExprAfterType
- | 803 -> NONTERM_atomicExprAfterType
- | 804 -> NONTERM_atomicExprAfterType
- | 805 -> NONTERM_atomicExprAfterType
- | 806 -> NONTERM_atomicExprAfterType
- | 807 -> NONTERM_atomicExprAfterType
- | 808 -> NONTERM_atomicExprAfterType
- | 809 -> NONTERM_beginEndExpr
- | 810 -> NONTERM_beginEndExpr
- | 811 -> NONTERM_beginEndExpr
- | 812 -> NONTERM_beginEndExpr
- | 813 -> NONTERM_quoteExpr
- | 814 -> NONTERM_quoteExpr
- | 815 -> NONTERM_quoteExpr
- | 816 -> NONTERM_quoteExpr
- | 817 -> NONTERM_arrayExpr
- | 818 -> NONTERM_arrayExpr
- | 819 -> NONTERM_arrayExpr
- | 820 -> NONTERM_arrayExpr
- | 821 -> NONTERM_parenExpr
- | 822 -> NONTERM_parenExpr
- | 823 -> NONTERM_parenExpr
- | 824 -> NONTERM_parenExpr
- | 825 -> NONTERM_parenExpr
- | 826 -> NONTERM_parenExpr
- | 827 -> NONTERM_parenExpr
- | 828 -> NONTERM_parenExpr
- | 829 -> NONTERM_parenExpr
- | 830 -> NONTERM_parenExpr
- | 831 -> NONTERM_parenExprBody
- | 832 -> NONTERM_parenExprBody
- | 833 -> NONTERM_parenExprBody
- | 834 -> NONTERM_typars
- | 835 -> NONTERM_typars
- | 836 -> NONTERM_typarAlts
- | 837 -> NONTERM_typarAlts
- | 838 -> NONTERM_braceExpr
- | 839 -> NONTERM_braceExpr
- | 840 -> NONTERM_braceExpr
- | 841 -> NONTERM_braceExpr
- | 842 -> NONTERM_braceExpr
- | 843 -> NONTERM_braceExprBody
- | 844 -> NONTERM_braceExprBody
- | 845 -> NONTERM_braceExprBody
- | 846 -> NONTERM_listExprElements
- | 847 -> NONTERM_listExprElements
- | 848 -> NONTERM_arrayExprElements
- | 849 -> NONTERM_arrayExprElements
- | 850 -> NONTERM_computationExpr
- | 851 -> NONTERM_arrowThenExprR
- | 852 -> NONTERM_forLoopBinder
- | 853 -> NONTERM_forLoopBinder
- | 854 -> NONTERM_forLoopBinder
- | 855 -> NONTERM_forLoopRange
- | 856 -> NONTERM_forLoopDirection
- | 857 -> NONTERM_forLoopDirection
- | 858 -> NONTERM_inlineAssemblyExpr
- | 859 -> NONTERM_optCurriedArgExprs
- | 860 -> NONTERM_optCurriedArgExprs
- | 861 -> NONTERM_opt_atomicExprAfterType
- | 862 -> NONTERM_opt_atomicExprAfterType
- | 863 -> NONTERM_opt_inlineAssemblyTypeArg
- | 864 -> NONTERM_opt_inlineAssemblyTypeArg
- | 865 -> NONTERM_optInlineAssemblyReturnTypes
- | 866 -> NONTERM_optInlineAssemblyReturnTypes
- | 867 -> NONTERM_optInlineAssemblyReturnTypes
- | 868 -> NONTERM_recdExpr
- | 869 -> NONTERM_recdExpr
- | 870 -> NONTERM_recdExprCore
- | 871 -> NONTERM_recdExprCore
- | 872 -> NONTERM_recdExprCore
- | 873 -> NONTERM_recdExprCore
- | 874 -> NONTERM_recdExprCore
- | 875 -> NONTERM_recdExprCore
- | 876 -> NONTERM_recdExprCore
- | 877 -> NONTERM_recdExprCore
- | 878 -> NONTERM_recdExprCore
- | 879 -> NONTERM_opt_seps_recd
- | 880 -> NONTERM_opt_seps_recd
- | 881 -> NONTERM_seps_recd
- | 882 -> NONTERM_seps_recd
- | 883 -> NONTERM_seps_recd
- | 884 -> NONTERM_seps_recd
- | 885 -> NONTERM_pathOrUnderscore
- | 886 -> NONTERM_pathOrUnderscore
- | 887 -> NONTERM_recdExprBindings
- | 888 -> NONTERM_recdExprBindings
- | 889 -> NONTERM_recdBinding
- | 890 -> NONTERM_recdBinding
- | 891 -> NONTERM_recdBinding
- | 892 -> NONTERM_recdBinding
- | 893 -> NONTERM_recdBinding
- | 894 -> NONTERM_objExpr
- | 895 -> NONTERM_objExpr
- | 896 -> NONTERM_objExpr
- | 897 -> NONTERM_objExprBaseCall
- | 898 -> NONTERM_objExprBaseCall
- | 899 -> NONTERM_objExprBaseCall
- | 900 -> NONTERM_opt_objExprBindings
- | 901 -> NONTERM_opt_objExprBindings
- | 902 -> NONTERM_objExprBindings
- | 903 -> NONTERM_objExprBindings
- | 904 -> NONTERM_objExprBindings
- | 905 -> NONTERM_objExprInterfaces
- | 906 -> NONTERM_opt_objExprInterfaces
- | 907 -> NONTERM_opt_objExprInterfaces
- | 908 -> NONTERM_opt_objExprInterfaces
- | 909 -> NONTERM_objExprInterface
- | 910 -> NONTERM_braceBarExpr
- | 911 -> NONTERM_braceBarExpr
- | 912 -> NONTERM_braceBarExprCore
- | 913 -> NONTERM_braceBarExprCore
- | 914 -> NONTERM_braceBarExprCore
- | 915 -> NONTERM_braceBarExprCore
- | 916 -> NONTERM_braceBarExprCore
- | 917 -> NONTERM_anonLambdaExpr
- | 918 -> NONTERM_anonLambdaExpr
- | 919 -> NONTERM_anonLambdaExpr
- | 920 -> NONTERM_anonLambdaExpr
- | 921 -> NONTERM_anonLambdaExpr
- | 922 -> NONTERM_anonLambdaExpr
- | 923 -> NONTERM_anonLambdaExpr
- | 924 -> NONTERM_anonLambdaExpr
- | 925 -> NONTERM_anonMatchingExpr
- | 926 -> NONTERM_anonMatchingExpr
- | 927 -> NONTERM_typeWithTypeConstraints
- | 928 -> NONTERM_typeWithTypeConstraints
- | 929 -> NONTERM_topTypeWithTypeConstraints
- | 930 -> NONTERM_topTypeWithTypeConstraints
- | 931 -> NONTERM_opt_topReturnTypeWithTypeConstraints
- | 932 -> NONTERM_opt_topReturnTypeWithTypeConstraints
- | 933 -> NONTERM_opt_topReturnTypeWithTypeConstraints
- | 934 -> NONTERM_topType
- | 935 -> NONTERM_topType
- | 936 -> NONTERM_topType
- | 937 -> NONTERM_topTupleType
- | 938 -> NONTERM_topTupleType
- | 939 -> NONTERM_topTupleType
- | 940 -> NONTERM_topTupleType
- | 941 -> NONTERM_topTupleTypeElements
- | 942 -> NONTERM_topTupleTypeElements
- | 943 -> NONTERM_topTupleTypeElements
- | 944 -> NONTERM_topTupleTypeElements
- | 945 -> NONTERM_topAppType
- | 946 -> NONTERM_topAppType
- | 947 -> NONTERM_topAppType
- | 948 -> NONTERM_topAppType
- | 949 -> NONTERM_topAppType
- | 950 -> NONTERM_topAppType
- | 951 -> NONTERM_topAppType
- | 952 -> NONTERM_topAppType
- | 953 -> NONTERM_topAppType
- | 954 -> NONTERM_topAppType
- | 955 -> NONTERM_invalidUseOfAppTypeFunction
- | 956 -> NONTERM_invalidUseOfAppTypeFunction
- | 957 -> NONTERM_invalidUseOfAppTypeFunction
- | 958 -> NONTERM_invalidUseOfAppTypeFunction
- | 959 -> NONTERM_typ
- | 960 -> NONTERM_typ
- | 961 -> NONTERM_typ
- | 962 -> NONTERM_typ
- | 963 -> NONTERM_typEOF
- | 964 -> NONTERM_tupleType
- | 965 -> NONTERM_tupleType
- | 966 -> NONTERM_tupleType
- | 967 -> NONTERM_tupleType
- | 968 -> NONTERM_tupleType
- | 969 -> NONTERM_tupleType
- | 970 -> NONTERM_tupleType
- | 971 -> NONTERM_tupleType
- | 972 -> NONTERM_tupleOrQuotTypeElements
- | 973 -> NONTERM_tupleOrQuotTypeElements
- | 974 -> NONTERM_tupleOrQuotTypeElements
- | 975 -> NONTERM_tupleOrQuotTypeElements
- | 976 -> NONTERM_tupleOrQuotTypeElements
- | 977 -> NONTERM_tupleOrQuotTypeElements
- | 978 -> NONTERM_tupleOrQuotTypeElements
- | 979 -> NONTERM_intersectionType
- | 980 -> NONTERM_intersectionType
- | 981 -> NONTERM_appTypeCon
- | 982 -> NONTERM_appTypeCon
- | 983 -> NONTERM_appTypeConPower
- | 984 -> NONTERM_appTypeConPower
- | 985 -> NONTERM_appType
- | 986 -> NONTERM_appType
- | 987 -> NONTERM_appType
- | 988 -> NONTERM_appType
- | 989 -> NONTERM_appType
- | 990 -> NONTERM_appType
- | 991 -> NONTERM_appType
- | 992 -> NONTERM_appType
- | 993 -> NONTERM_arrayTypeSuffix
- | 994 -> NONTERM_arrayTypeSuffix
- | 995 -> NONTERM_arrayTypeSuffix
- | 996 -> NONTERM_arrayTypeSuffix
- | 997 -> NONTERM_arrayTypeSuffix
- | 998 -> NONTERM_arrayTypeSuffix
- | 999 -> NONTERM_arrayTypeSuffix
- | 1000 -> NONTERM_arrayTypeSuffix
- | 1001 -> NONTERM_arrayTypeSuffix
- | 1002 -> NONTERM_arrayTypeSuffix
- | 1003 -> NONTERM_arrayTypeSuffix
- | 1004 -> NONTERM_arrayTypeSuffix
- | 1005 -> NONTERM_arrayTypeSuffix
- | 1006 -> NONTERM_arrayTypeSuffix
- | 1007 -> NONTERM_arrayTypeSuffix
- | 1008 -> NONTERM_arrayTypeSuffix
- | 1009 -> NONTERM_arrayTypeSuffix
- | 1010 -> NONTERM_arrayTypeSuffix
- | 1011 -> NONTERM_arrayTypeSuffix
- | 1012 -> NONTERM_arrayTypeSuffix
- | 1013 -> NONTERM_arrayTypeSuffix
- | 1014 -> NONTERM_arrayTypeSuffix
- | 1015 -> NONTERM_arrayTypeSuffix
+ | 788 -> NONTERM_atomicExpr
+ | 789 -> NONTERM_atomicExpr
+ | 790 -> NONTERM_atomicExpr
+ | 791 -> NONTERM_atomicExpr
+ | 792 -> NONTERM_atomicExpr
+ | 793 -> NONTERM_atomicExpr
+ | 794 -> NONTERM_atomicExpr
+ | 795 -> NONTERM_atomicExpr
+ | 796 -> NONTERM_atomicExpr
+ | 797 -> NONTERM_atomicExpr
+ | 798 -> NONTERM_atomicExpr
+ | 799 -> NONTERM_atomicExpr
+ | 800 -> NONTERM_atomicExpr
+ | 801 -> NONTERM_atomicExpr
+ | 802 -> NONTERM_atomicExpr
+ | 803 -> NONTERM_atomicExpr
+ | 804 -> NONTERM_atomicExpr
+ | 805 -> NONTERM_atomicExpr
+ | 806 -> NONTERM_atomicExpr
+ | 807 -> NONTERM_atomicExprQualification
+ | 808 -> NONTERM_atomicExprQualification
+ | 809 -> NONTERM_atomicExprQualification
+ | 810 -> NONTERM_atomicExprQualification
+ | 811 -> NONTERM_atomicExprQualification
+ | 812 -> NONTERM_atomicExprQualification
+ | 813 -> NONTERM_atomicExprQualification
+ | 814 -> NONTERM_atomicExprQualification
+ | 815 -> NONTERM_atomicExprQualification
+ | 816 -> NONTERM_atomicExprQualification
+ | 817 -> NONTERM_atomicExprAfterType
+ | 818 -> NONTERM_atomicExprAfterType
+ | 819 -> NONTERM_atomicExprAfterType
+ | 820 -> NONTERM_atomicExprAfterType
+ | 821 -> NONTERM_atomicExprAfterType
+ | 822 -> NONTERM_atomicExprAfterType
+ | 823 -> NONTERM_atomicExprAfterType
+ | 824 -> NONTERM_atomicExprAfterType
+ | 825 -> NONTERM_atomicExprAfterType
+ | 826 -> NONTERM_atomicExprAfterType
+ | 827 -> NONTERM_atomicExprAfterType
+ | 828 -> NONTERM_beginEndExpr
+ | 829 -> NONTERM_beginEndExpr
+ | 830 -> NONTERM_beginEndExpr
+ | 831 -> NONTERM_beginEndExpr
+ | 832 -> NONTERM_quoteExpr
+ | 833 -> NONTERM_quoteExpr
+ | 834 -> NONTERM_quoteExpr
+ | 835 -> NONTERM_quoteExpr
+ | 836 -> NONTERM_arrayExpr
+ | 837 -> NONTERM_arrayExpr
+ | 838 -> NONTERM_arrayExpr
+ | 839 -> NONTERM_arrayExpr
+ | 840 -> NONTERM_parenExpr
+ | 841 -> NONTERM_parenExpr
+ | 842 -> NONTERM_parenExpr
+ | 843 -> NONTERM_parenExpr
+ | 844 -> NONTERM_parenExpr
+ | 845 -> NONTERM_parenExpr
+ | 846 -> NONTERM_parenExpr
+ | 847 -> NONTERM_parenExpr
+ | 848 -> NONTERM_parenExpr
+ | 849 -> NONTERM_parenExpr
+ | 850 -> NONTERM_parenExprBody
+ | 851 -> NONTERM_parenExprBody
+ | 852 -> NONTERM_parenExprBody
+ | 853 -> NONTERM_typars
+ | 854 -> NONTERM_typars
+ | 855 -> NONTERM_typarAlts
+ | 856 -> NONTERM_typarAlts
+ | 857 -> NONTERM_braceExpr
+ | 858 -> NONTERM_braceExpr
+ | 859 -> NONTERM_braceExpr
+ | 860 -> NONTERM_braceExpr
+ | 861 -> NONTERM_braceExpr
+ | 862 -> NONTERM_braceExprBody
+ | 863 -> NONTERM_braceExprBody
+ | 864 -> NONTERM_braceExprBody
+ | 865 -> NONTERM_listExprElements
+ | 866 -> NONTERM_listExprElements
+ | 867 -> NONTERM_arrayExprElements
+ | 868 -> NONTERM_arrayExprElements
+ | 869 -> NONTERM_computationExpr
+ | 870 -> NONTERM_arrowThenExprR
+ | 871 -> NONTERM_forLoopBinder
+ | 872 -> NONTERM_forLoopBinder
+ | 873 -> NONTERM_forLoopBinder
+ | 874 -> NONTERM_forLoopRange
+ | 875 -> NONTERM_forLoopDirection
+ | 876 -> NONTERM_forLoopDirection
+ | 877 -> NONTERM_inlineAssemblyExpr
+ | 878 -> NONTERM_optCurriedArgExprs
+ | 879 -> NONTERM_optCurriedArgExprs
+ | 880 -> NONTERM_opt_atomicExprAfterType
+ | 881 -> NONTERM_opt_atomicExprAfterType
+ | 882 -> NONTERM_opt_inlineAssemblyTypeArg
+ | 883 -> NONTERM_opt_inlineAssemblyTypeArg
+ | 884 -> NONTERM_optInlineAssemblyReturnTypes
+ | 885 -> NONTERM_optInlineAssemblyReturnTypes
+ | 886 -> NONTERM_optInlineAssemblyReturnTypes
+ | 887 -> NONTERM_recdExpr
+ | 888 -> NONTERM_recdExpr
+ | 889 -> NONTERM_recdExprCore
+ | 890 -> NONTERM_recdExprCore
+ | 891 -> NONTERM_recdExprCore
+ | 892 -> NONTERM_recdExprCore
+ | 893 -> NONTERM_recdExprCore
+ | 894 -> NONTERM_recdExprCore
+ | 895 -> NONTERM_recdExprCore
+ | 896 -> NONTERM_recdExprCore
+ | 897 -> NONTERM_recdExprCore
+ | 898 -> NONTERM_opt_seps_recd
+ | 899 -> NONTERM_opt_seps_recd
+ | 900 -> NONTERM_seps_recd
+ | 901 -> NONTERM_seps_recd
+ | 902 -> NONTERM_seps_recd
+ | 903 -> NONTERM_seps_recd
+ | 904 -> NONTERM_pathOrUnderscore
+ | 905 -> NONTERM_pathOrUnderscore
+ | 906 -> NONTERM_recdExprBindings
+ | 907 -> NONTERM_recdExprBindings
+ | 908 -> NONTERM_recdBinding
+ | 909 -> NONTERM_recdBinding
+ | 910 -> NONTERM_recdBinding
+ | 911 -> NONTERM_recdBinding
+ | 912 -> NONTERM_recdBinding
+ | 913 -> NONTERM_objExpr
+ | 914 -> NONTERM_objExpr
+ | 915 -> NONTERM_objExpr
+ | 916 -> NONTERM_objExprBaseCall
+ | 917 -> NONTERM_objExprBaseCall
+ | 918 -> NONTERM_objExprBaseCall
+ | 919 -> NONTERM_opt_objExprBindings
+ | 920 -> NONTERM_opt_objExprBindings
+ | 921 -> NONTERM_objExprBindings
+ | 922 -> NONTERM_objExprBindings
+ | 923 -> NONTERM_objExprBindings
+ | 924 -> NONTERM_objExprInterfaces
+ | 925 -> NONTERM_opt_objExprInterfaces
+ | 926 -> NONTERM_opt_objExprInterfaces
+ | 927 -> NONTERM_opt_objExprInterfaces
+ | 928 -> NONTERM_objExprInterface
+ | 929 -> NONTERM_braceBarExpr
+ | 930 -> NONTERM_braceBarExpr
+ | 931 -> NONTERM_braceBarExprCore
+ | 932 -> NONTERM_braceBarExprCore
+ | 933 -> NONTERM_braceBarExprCore
+ | 934 -> NONTERM_braceBarExprCore
+ | 935 -> NONTERM_braceBarExprCore
+ | 936 -> NONTERM_anonLambdaExpr
+ | 937 -> NONTERM_anonLambdaExpr
+ | 938 -> NONTERM_anonLambdaExpr
+ | 939 -> NONTERM_anonLambdaExpr
+ | 940 -> NONTERM_anonLambdaExpr
+ | 941 -> NONTERM_anonLambdaExpr
+ | 942 -> NONTERM_anonLambdaExpr
+ | 943 -> NONTERM_anonLambdaExpr
+ | 944 -> NONTERM_anonMatchingExpr
+ | 945 -> NONTERM_anonMatchingExpr
+ | 946 -> NONTERM_typeWithTypeConstraints
+ | 947 -> NONTERM_typeWithTypeConstraints
+ | 948 -> NONTERM_topTypeWithTypeConstraints
+ | 949 -> NONTERM_topTypeWithTypeConstraints
+ | 950 -> NONTERM_opt_topReturnTypeWithTypeConstraints
+ | 951 -> NONTERM_opt_topReturnTypeWithTypeConstraints
+ | 952 -> NONTERM_opt_topReturnTypeWithTypeConstraints
+ | 953 -> NONTERM_topType
+ | 954 -> NONTERM_topType
+ | 955 -> NONTERM_topType
+ | 956 -> NONTERM_topTupleType
+ | 957 -> NONTERM_topTupleType
+ | 958 -> NONTERM_topTupleType
+ | 959 -> NONTERM_topTupleType
+ | 960 -> NONTERM_topTupleTypeElements
+ | 961 -> NONTERM_topTupleTypeElements
+ | 962 -> NONTERM_topTupleTypeElements
+ | 963 -> NONTERM_topTupleTypeElements
+ | 964 -> NONTERM_topAppType
+ | 965 -> NONTERM_topAppType
+ | 966 -> NONTERM_topAppType
+ | 967 -> NONTERM_topAppType
+ | 968 -> NONTERM_topAppType
+ | 969 -> NONTERM_topAppType
+ | 970 -> NONTERM_topAppType
+ | 971 -> NONTERM_topAppType
+ | 972 -> NONTERM_topAppType
+ | 973 -> NONTERM_topAppType
+ | 974 -> NONTERM_invalidUseOfAppTypeFunction
+ | 975 -> NONTERM_invalidUseOfAppTypeFunction
+ | 976 -> NONTERM_invalidUseOfAppTypeFunction
+ | 977 -> NONTERM_invalidUseOfAppTypeFunction
+ | 978 -> NONTERM_typ
+ | 979 -> NONTERM_typ
+ | 980 -> NONTERM_typ
+ | 981 -> NONTERM_typ
+ | 982 -> NONTERM_typEOF
+ | 983 -> NONTERM_tupleType
+ | 984 -> NONTERM_tupleType
+ | 985 -> NONTERM_tupleType
+ | 986 -> NONTERM_tupleType
+ | 987 -> NONTERM_tupleType
+ | 988 -> NONTERM_tupleType
+ | 989 -> NONTERM_tupleType
+ | 990 -> NONTERM_tupleType
+ | 991 -> NONTERM_tupleOrQuotTypeElements
+ | 992 -> NONTERM_tupleOrQuotTypeElements
+ | 993 -> NONTERM_tupleOrQuotTypeElements
+ | 994 -> NONTERM_tupleOrQuotTypeElements
+ | 995 -> NONTERM_tupleOrQuotTypeElements
+ | 996 -> NONTERM_tupleOrQuotTypeElements
+ | 997 -> NONTERM_tupleOrQuotTypeElements
+ | 998 -> NONTERM_intersectionType
+ | 999 -> NONTERM_intersectionType
+ | 1000 -> NONTERM_appTypeCon
+ | 1001 -> NONTERM_appTypeCon
+ | 1002 -> NONTERM_appTypeConPower
+ | 1003 -> NONTERM_appTypeConPower
+ | 1004 -> NONTERM_appTypeCanBeNullable
+ | 1005 -> NONTERM_appTypeCanBeNullable
+ | 1006 -> NONTERM_appTypeNullableInParens
+ | 1007 -> NONTERM_appTypeNullableInParens
+ | 1008 -> NONTERM_appTypeWithoutNull
+ | 1009 -> NONTERM_appTypeWithoutNull
+ | 1010 -> NONTERM_appTypeWithoutNull
+ | 1011 -> NONTERM_appTypeWithoutNull
+ | 1012 -> NONTERM_appTypeWithoutNull
+ | 1013 -> NONTERM_appTypeWithoutNull
+ | 1014 -> NONTERM_appTypeWithoutNull
+ | 1015 -> NONTERM_appTypeWithoutNull
| 1016 -> NONTERM_arrayTypeSuffix
| 1017 -> NONTERM_arrayTypeSuffix
| 1018 -> NONTERM_arrayTypeSuffix
@@ -2229,207 +2236,226 @@ let prodIdxToNonTerminal (prodIdx:int) =
| 1022 -> NONTERM_arrayTypeSuffix
| 1023 -> NONTERM_arrayTypeSuffix
| 1024 -> NONTERM_arrayTypeSuffix
- | 1025 -> NONTERM_appTypePrefixArguments
- | 1026 -> NONTERM_typeArgListElements
- | 1027 -> NONTERM_typeArgListElements
- | 1028 -> NONTERM_typeArgListElements
- | 1029 -> NONTERM_powerType
- | 1030 -> NONTERM_powerType
- | 1031 -> NONTERM_atomTypeNonAtomicDeprecated
- | 1032 -> NONTERM_atomTypeNonAtomicDeprecated
- | 1033 -> NONTERM_atomTypeOrAnonRecdType
- | 1034 -> NONTERM_atomTypeOrAnonRecdType
- | 1035 -> NONTERM_atomType
- | 1036 -> NONTERM_atomType
- | 1037 -> NONTERM_atomType
- | 1038 -> NONTERM_atomType
- | 1039 -> NONTERM_atomType
- | 1040 -> NONTERM_atomType
- | 1041 -> NONTERM_atomType
- | 1042 -> NONTERM_atomType
- | 1043 -> NONTERM_atomType
- | 1044 -> NONTERM_atomType
- | 1045 -> NONTERM_atomType
- | 1046 -> NONTERM_atomType
- | 1047 -> NONTERM_atomType
- | 1048 -> NONTERM_atomType
- | 1049 -> NONTERM_atomType
- | 1050 -> NONTERM_atomType
- | 1051 -> NONTERM_atomType
- | 1052 -> NONTERM_atomType
- | 1053 -> NONTERM_atomType
- | 1054 -> NONTERM_atomType
- | 1055 -> NONTERM_typeArgsNoHpaDeprecated
- | 1056 -> NONTERM_typeArgsNoHpaDeprecated
- | 1057 -> NONTERM_typeArgsActual
- | 1058 -> NONTERM_typeArgsActual
- | 1059 -> NONTERM_typeArgsActual
- | 1060 -> NONTERM_typeArgsActual
- | 1061 -> NONTERM_typeArgsActual
- | 1062 -> NONTERM_typeArgsActual
- | 1063 -> NONTERM_typeArgsActual
- | 1064 -> NONTERM_typeArgActual
- | 1065 -> NONTERM_typeArgActual
- | 1066 -> NONTERM_typeArgActual
- | 1067 -> NONTERM_typeArgActualOrDummyIfEmpty
- | 1068 -> NONTERM_typeArgActualOrDummyIfEmpty
- | 1069 -> NONTERM_dummyTypeArg
- | 1070 -> NONTERM_measureTypeArg
- | 1071 -> NONTERM_measureTypeArg
- | 1072 -> NONTERM_measureTypeAtom
- | 1073 -> NONTERM_measureTypeAtom
- | 1074 -> NONTERM_measureTypeAtom
- | 1075 -> NONTERM_measureTypePower
- | 1076 -> NONTERM_measureTypePower
- | 1077 -> NONTERM_measureTypePower
- | 1078 -> NONTERM_measureTypeSeq
- | 1079 -> NONTERM_measureTypeSeq
- | 1080 -> NONTERM_measureTypeExpr
- | 1081 -> NONTERM_measureTypeExpr
- | 1082 -> NONTERM_measureTypeExpr
- | 1083 -> NONTERM_measureTypeExpr
- | 1084 -> NONTERM_typar
- | 1085 -> NONTERM_typar
- | 1086 -> NONTERM_ident
- | 1087 -> NONTERM_path
- | 1088 -> NONTERM_path
- | 1089 -> NONTERM_path
- | 1090 -> NONTERM_path
- | 1091 -> NONTERM_opName
- | 1092 -> NONTERM_opName
- | 1093 -> NONTERM_opName
- | 1094 -> NONTERM_opName
- | 1095 -> NONTERM_opName
- | 1096 -> NONTERM_operatorName
- | 1097 -> NONTERM_operatorName
- | 1098 -> NONTERM_operatorName
- | 1099 -> NONTERM_operatorName
- | 1100 -> NONTERM_operatorName
- | 1101 -> NONTERM_operatorName
- | 1102 -> NONTERM_operatorName
- | 1103 -> NONTERM_operatorName
- | 1104 -> NONTERM_operatorName
- | 1105 -> NONTERM_operatorName
- | 1106 -> NONTERM_operatorName
- | 1107 -> NONTERM_operatorName
- | 1108 -> NONTERM_operatorName
- | 1109 -> NONTERM_operatorName
- | 1110 -> NONTERM_operatorName
- | 1111 -> NONTERM_operatorName
- | 1112 -> NONTERM_operatorName
- | 1113 -> NONTERM_operatorName
- | 1114 -> NONTERM_operatorName
- | 1115 -> NONTERM_operatorName
- | 1116 -> NONTERM_operatorName
- | 1117 -> NONTERM_operatorName
- | 1118 -> NONTERM_operatorName
+ | 1025 -> NONTERM_arrayTypeSuffix
+ | 1026 -> NONTERM_arrayTypeSuffix
+ | 1027 -> NONTERM_arrayTypeSuffix
+ | 1028 -> NONTERM_arrayTypeSuffix
+ | 1029 -> NONTERM_arrayTypeSuffix
+ | 1030 -> NONTERM_arrayTypeSuffix
+ | 1031 -> NONTERM_arrayTypeSuffix
+ | 1032 -> NONTERM_arrayTypeSuffix
+ | 1033 -> NONTERM_arrayTypeSuffix
+ | 1034 -> NONTERM_arrayTypeSuffix
+ | 1035 -> NONTERM_arrayTypeSuffix
+ | 1036 -> NONTERM_arrayTypeSuffix
+ | 1037 -> NONTERM_arrayTypeSuffix
+ | 1038 -> NONTERM_arrayTypeSuffix
+ | 1039 -> NONTERM_arrayTypeSuffix
+ | 1040 -> NONTERM_arrayTypeSuffix
+ | 1041 -> NONTERM_arrayTypeSuffix
+ | 1042 -> NONTERM_arrayTypeSuffix
+ | 1043 -> NONTERM_arrayTypeSuffix
+ | 1044 -> NONTERM_arrayTypeSuffix
+ | 1045 -> NONTERM_arrayTypeSuffix
+ | 1046 -> NONTERM_arrayTypeSuffix
+ | 1047 -> NONTERM_arrayTypeSuffix
+ | 1048 -> NONTERM_appTypePrefixArguments
+ | 1049 -> NONTERM_typeArgListElements
+ | 1050 -> NONTERM_typeArgListElements
+ | 1051 -> NONTERM_typeArgListElements
+ | 1052 -> NONTERM_powerType
+ | 1053 -> NONTERM_powerType
+ | 1054 -> NONTERM_atomTypeNonAtomicDeprecated
+ | 1055 -> NONTERM_atomTypeNonAtomicDeprecated
+ | 1056 -> NONTERM_atomTypeOrAnonRecdType
+ | 1057 -> NONTERM_atomTypeOrAnonRecdType
+ | 1058 -> NONTERM_atomType
+ | 1059 -> NONTERM_atomType
+ | 1060 -> NONTERM_atomType
+ | 1061 -> NONTERM_atomType
+ | 1062 -> NONTERM_atomType
+ | 1063 -> NONTERM_atomType
+ | 1064 -> NONTERM_atomType
+ | 1065 -> NONTERM_atomType
+ | 1066 -> NONTERM_atomType
+ | 1067 -> NONTERM_atomType
+ | 1068 -> NONTERM_atomType
+ | 1069 -> NONTERM_atomType
+ | 1070 -> NONTERM_atomType
+ | 1071 -> NONTERM_atomType
+ | 1072 -> NONTERM_atomType
+ | 1073 -> NONTERM_atomType
+ | 1074 -> NONTERM_atomType
+ | 1075 -> NONTERM_atomType
+ | 1076 -> NONTERM_atomType
+ | 1077 -> NONTERM_atomType
+ | 1078 -> NONTERM_typeArgsNoHpaDeprecated
+ | 1079 -> NONTERM_typeArgsNoHpaDeprecated
+ | 1080 -> NONTERM_typeArgsActual
+ | 1081 -> NONTERM_typeArgsActual
+ | 1082 -> NONTERM_typeArgsActual
+ | 1083 -> NONTERM_typeArgsActual
+ | 1084 -> NONTERM_typeArgsActual
+ | 1085 -> NONTERM_typeArgsActual
+ | 1086 -> NONTERM_typeArgsActual
+ | 1087 -> NONTERM_typeArgActual
+ | 1088 -> NONTERM_typeArgActual
+ | 1089 -> NONTERM_typeArgActual
+ | 1090 -> NONTERM_typeArgActualOrDummyIfEmpty
+ | 1091 -> NONTERM_typeArgActualOrDummyIfEmpty
+ | 1092 -> NONTERM_dummyTypeArg
+ | 1093 -> NONTERM_measureTypeArg
+ | 1094 -> NONTERM_measureTypeArg
+ | 1095 -> NONTERM_measureTypeAtom
+ | 1096 -> NONTERM_measureTypeAtom
+ | 1097 -> NONTERM_measureTypeAtom
+ | 1098 -> NONTERM_measureTypePower
+ | 1099 -> NONTERM_measureTypePower
+ | 1100 -> NONTERM_measureTypePower
+ | 1101 -> NONTERM_measureTypeSeq
+ | 1102 -> NONTERM_measureTypeSeq
+ | 1103 -> NONTERM_measureTypeExpr
+ | 1104 -> NONTERM_measureTypeExpr
+ | 1105 -> NONTERM_measureTypeExpr
+ | 1106 -> NONTERM_measureTypeExpr
+ | 1107 -> NONTERM_typar
+ | 1108 -> NONTERM_typar
+ | 1109 -> NONTERM_ident
+ | 1110 -> NONTERM_path
+ | 1111 -> NONTERM_path
+ | 1112 -> NONTERM_path
+ | 1113 -> NONTERM_path
+ | 1114 -> NONTERM_opName
+ | 1115 -> NONTERM_opName
+ | 1116 -> NONTERM_opName
+ | 1117 -> NONTERM_opName
+ | 1118 -> NONTERM_opName
| 1119 -> NONTERM_operatorName
| 1120 -> NONTERM_operatorName
| 1121 -> NONTERM_operatorName
- | 1122 -> NONTERM_activePatternCaseName
- | 1123 -> NONTERM_activePatternCaseNames
- | 1124 -> NONTERM_activePatternCaseNames
- | 1125 -> NONTERM_identOrOp
- | 1126 -> NONTERM_identOrOp
- | 1127 -> NONTERM_pathOp
- | 1128 -> NONTERM_pathOp
- | 1129 -> NONTERM_pathOp
- | 1130 -> NONTERM_pathOp
- | 1131 -> NONTERM_nameop
- | 1132 -> NONTERM_identExpr
- | 1133 -> NONTERM_identExpr
- | 1134 -> NONTERM_topSeparator
- | 1135 -> NONTERM_topSeparator
- | 1136 -> NONTERM_topSeparator
- | 1137 -> NONTERM_topSeparators
- | 1138 -> NONTERM_topSeparators
- | 1139 -> NONTERM_opt_topSeparators
- | 1140 -> NONTERM_opt_topSeparators
- | 1141 -> NONTERM_seps
- | 1142 -> NONTERM_seps
- | 1143 -> NONTERM_seps
- | 1144 -> NONTERM_seps
- | 1145 -> NONTERM_declEnd
- | 1146 -> NONTERM_declEnd
- | 1147 -> NONTERM_declEnd
- | 1148 -> NONTERM_opt_declEnd
- | 1149 -> NONTERM_opt_declEnd
- | 1150 -> NONTERM_opt_declEnd
- | 1151 -> NONTERM_opt_declEnd
- | 1152 -> NONTERM_opt_ODECLEND
- | 1153 -> NONTERM_opt_ODECLEND
- | 1154 -> NONTERM_deprecated_opt_equals
- | 1155 -> NONTERM_deprecated_opt_equals
- | 1156 -> NONTERM_opt_equals
- | 1157 -> NONTERM_opt_equals
- | 1158 -> NONTERM_opt_OBLOCKSEP
- | 1159 -> NONTERM_opt_OBLOCKSEP
- | 1160 -> NONTERM_opt_seps
- | 1161 -> NONTERM_opt_seps
- | 1162 -> NONTERM_opt_rec
- | 1163 -> NONTERM_opt_rec
- | 1164 -> NONTERM_opt_bar
- | 1165 -> NONTERM_opt_bar
- | 1166 -> NONTERM_opt_inline
- | 1167 -> NONTERM_opt_inline
- | 1168 -> NONTERM_opt_mutable
- | 1169 -> NONTERM_opt_mutable
- | 1170 -> NONTERM_doToken
- | 1171 -> NONTERM_doToken
- | 1172 -> NONTERM_doneDeclEnd
- | 1173 -> NONTERM_doneDeclEnd
- | 1174 -> NONTERM_structOrBegin
- | 1175 -> NONTERM_structOrBegin
- | 1176 -> NONTERM_sigOrBegin
- | 1177 -> NONTERM_sigOrBegin
- | 1178 -> NONTERM_colonOrEquals
- | 1179 -> NONTERM_colonOrEquals
- | 1180 -> NONTERM_string
- | 1181 -> NONTERM_sourceIdentifier
- | 1182 -> NONTERM_interpolatedStringFill
- | 1183 -> NONTERM_interpolatedStringFill
- | 1184 -> NONTERM_interpolatedStringParts
- | 1185 -> NONTERM_interpolatedStringParts
- | 1186 -> NONTERM_interpolatedStringParts
- | 1187 -> NONTERM_interpolatedString
- | 1188 -> NONTERM_interpolatedString
- | 1189 -> NONTERM_interpolatedString
- | 1190 -> NONTERM_opt_HIGH_PRECEDENCE_APP
- | 1191 -> NONTERM_opt_HIGH_PRECEDENCE_APP
- | 1192 -> NONTERM_opt_HIGH_PRECEDENCE_APP
- | 1193 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP
- | 1194 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP
- | 1195 -> NONTERM_typeKeyword
- | 1196 -> NONTERM_typeKeyword
- | 1197 -> NONTERM_typeKeyword
- | 1198 -> NONTERM_moduleKeyword
- | 1199 -> NONTERM_moduleKeyword
- | 1200 -> NONTERM_moduleKeyword
- | 1201 -> NONTERM_rbrace
- | 1202 -> NONTERM_rbrace
- | 1203 -> NONTERM_rbrace
- | 1204 -> NONTERM_bar_rbrace
- | 1205 -> NONTERM_rparen
- | 1206 -> NONTERM_rparen
- | 1207 -> NONTERM_rparen
- | 1208 -> NONTERM_oblockend
- | 1209 -> NONTERM_oblockend
- | 1210 -> NONTERM_oblockend
- | 1211 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
- | 1212 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
- | 1213 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
- | 1214 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
- | 1215 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
- | 1216 -> NONTERM_ends_coming_soon_or_recover
- | 1217 -> NONTERM_ends_coming_soon_or_recover
- | 1218 -> NONTERM_ends_coming_soon_or_recover
- | 1219 -> NONTERM_ends_coming_soon_or_recover
- | 1220 -> NONTERM_ends_coming_soon_or_recover
- | 1221 -> NONTERM_ends_coming_soon_or_recover
+ | 1122 -> NONTERM_operatorName
+ | 1123 -> NONTERM_operatorName
+ | 1124 -> NONTERM_operatorName
+ | 1125 -> NONTERM_operatorName
+ | 1126 -> NONTERM_operatorName
+ | 1127 -> NONTERM_operatorName
+ | 1128 -> NONTERM_operatorName
+ | 1129 -> NONTERM_operatorName
+ | 1130 -> NONTERM_operatorName
+ | 1131 -> NONTERM_operatorName
+ | 1132 -> NONTERM_operatorName
+ | 1133 -> NONTERM_operatorName
+ | 1134 -> NONTERM_operatorName
+ | 1135 -> NONTERM_operatorName
+ | 1136 -> NONTERM_operatorName
+ | 1137 -> NONTERM_operatorName
+ | 1138 -> NONTERM_operatorName
+ | 1139 -> NONTERM_operatorName
+ | 1140 -> NONTERM_operatorName
+ | 1141 -> NONTERM_operatorName
+ | 1142 -> NONTERM_operatorName
+ | 1143 -> NONTERM_operatorName
+ | 1144 -> NONTERM_operatorName
+ | 1145 -> NONTERM_activePatternCaseName
+ | 1146 -> NONTERM_activePatternCaseNames
+ | 1147 -> NONTERM_activePatternCaseNames
+ | 1148 -> NONTERM_identOrOp
+ | 1149 -> NONTERM_identOrOp
+ | 1150 -> NONTERM_pathOp
+ | 1151 -> NONTERM_pathOp
+ | 1152 -> NONTERM_pathOp
+ | 1153 -> NONTERM_pathOp
+ | 1154 -> NONTERM_nameop
+ | 1155 -> NONTERM_identExpr
+ | 1156 -> NONTERM_identExpr
+ | 1157 -> NONTERM_topSeparator
+ | 1158 -> NONTERM_topSeparator
+ | 1159 -> NONTERM_topSeparator
+ | 1160 -> NONTERM_topSeparators
+ | 1161 -> NONTERM_topSeparators
+ | 1162 -> NONTERM_opt_topSeparators
+ | 1163 -> NONTERM_opt_topSeparators
+ | 1164 -> NONTERM_seps
+ | 1165 -> NONTERM_seps
+ | 1166 -> NONTERM_seps
+ | 1167 -> NONTERM_seps
+ | 1168 -> NONTERM_declEnd
+ | 1169 -> NONTERM_declEnd
+ | 1170 -> NONTERM_declEnd
+ | 1171 -> NONTERM_opt_declEnd
+ | 1172 -> NONTERM_opt_declEnd
+ | 1173 -> NONTERM_opt_declEnd
+ | 1174 -> NONTERM_opt_declEnd
+ | 1175 -> NONTERM_opt_ODECLEND
+ | 1176 -> NONTERM_opt_ODECLEND
+ | 1177 -> NONTERM_deprecated_opt_equals
+ | 1178 -> NONTERM_deprecated_opt_equals
+ | 1179 -> NONTERM_opt_OBLOCKSEP
+ | 1180 -> NONTERM_opt_OBLOCKSEP
+ | 1181 -> NONTERM_opt_seps
+ | 1182 -> NONTERM_opt_seps
+ | 1183 -> NONTERM_opt_rec
+ | 1184 -> NONTERM_opt_rec
+ | 1185 -> NONTERM_opt_inline
+ | 1186 -> NONTERM_opt_inline
+ | 1187 -> NONTERM_opt_mutable
+ | 1188 -> NONTERM_opt_mutable
+ | 1189 -> NONTERM_doToken
+ | 1190 -> NONTERM_doToken
+ | 1191 -> NONTERM_doneDeclEnd
+ | 1192 -> NONTERM_doneDeclEnd
+ | 1193 -> NONTERM_structOrBegin
+ | 1194 -> NONTERM_structOrBegin
+ | 1195 -> NONTERM_sigOrBegin
+ | 1196 -> NONTERM_sigOrBegin
+ | 1197 -> NONTERM_colonOrEquals
+ | 1198 -> NONTERM_colonOrEquals
+ | 1199 -> NONTERM_string
+ | 1200 -> NONTERM_sourceIdentifier
+ | 1201 -> NONTERM_interpolatedStringFill
+ | 1202 -> NONTERM_interpolatedStringFill
+ | 1203 -> NONTERM_interpolatedStringParts
+ | 1204 -> NONTERM_interpolatedStringParts
+ | 1205 -> NONTERM_interpolatedStringParts
+ | 1206 -> NONTERM_interpolatedString
+ | 1207 -> NONTERM_interpolatedString
+ | 1208 -> NONTERM_interpolatedString
+ | 1209 -> NONTERM_opt_HIGH_PRECEDENCE_APP
+ | 1210 -> NONTERM_opt_HIGH_PRECEDENCE_APP
+ | 1211 -> NONTERM_opt_HIGH_PRECEDENCE_APP
+ | 1212 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP
+ | 1213 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP
+ | 1214 -> NONTERM_typeKeyword
+ | 1215 -> NONTERM_typeKeyword
+ | 1216 -> NONTERM_typeKeyword
+ | 1217 -> NONTERM_moduleKeyword
+ | 1218 -> NONTERM_moduleKeyword
+ | 1219 -> NONTERM_moduleKeyword
+ | 1220 -> NONTERM_rbrace
+ | 1221 -> NONTERM_rbrace
+ | 1222 -> NONTERM_rbrace
+ | 1223 -> NONTERM_bar_rbrace
+ | 1224 -> NONTERM_rparen
+ | 1225 -> NONTERM_rparen
+ | 1226 -> NONTERM_rparen
+ | 1227 -> NONTERM_oblockend
+ | 1228 -> NONTERM_oblockend
+ | 1229 -> NONTERM_oblockend
+ | 1230 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
+ | 1231 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
+ | 1232 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
+ | 1233 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
+ | 1234 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover
+ | 1235 -> NONTERM_ends_coming_soon_or_recover
+ | 1236 -> NONTERM_ends_coming_soon_or_recover
+ | 1237 -> NONTERM_ends_coming_soon_or_recover
+ | 1238 -> NONTERM_ends_coming_soon_or_recover
+ | 1239 -> NONTERM_ends_coming_soon_or_recover
+ | 1240 -> NONTERM_ends_coming_soon_or_recover
| _ -> failwith "prodIdxToNonTerminal: bad production index"
-let _fsyacc_endOfInputTag = 205
-let _fsyacc_tagOfErrorTerminal = 203
+let _fsyacc_endOfInputTag = 206
+let _fsyacc_tagOfErrorTerminal = 204
// This function gets the name of a token as a string
let token_to_string (t:token) =
@@ -2475,6 +2501,7 @@ let token_to_string (t:token) =
| TYPE_IS_HERE -> "TYPE_IS_HERE"
| MODULE_COMING_SOON -> "MODULE_COMING_SOON"
| MODULE_IS_HERE -> "MODULE_IS_HERE"
+ | BAR_JUST_BEFORE_NULL -> "BAR_JUST_BEFORE_NULL"
| EXTERN -> "EXTERN"
| VOID -> "VOID"
| PUBLIC -> "PUBLIC"
@@ -2682,6 +2709,7 @@ let _fsyacc_dataOfToken (t:token) =
| TYPE_IS_HERE -> (null : System.Object)
| MODULE_COMING_SOON -> (null : System.Object)
| MODULE_IS_HERE -> (null : System.Object)
+ | BAR_JUST_BEFORE_NULL -> (null : System.Object)
| EXTERN -> (null : System.Object)
| VOID -> (null : System.Object)
| PUBLIC -> (null : System.Object)
@@ -2844,18 +2872,18 @@ let _fsyacc_dataOfToken (t:token) =
| INTERP_STRING_BEGIN_END _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
| STRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
| BYTEARRAY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
-let _fsyacc_gotos = [| 0us;65535us;0us;65535us;0us;65535us;0us;65535us;0us;65535us;1us;65535us;4us;5us;7us;65535us;4us;15us;16us;17us;18us;19us;20us;21us;22us;15us;24us;15us;26us;15us;4us;65535us;4us;10us;22us;23us;24us;25us;26us;27us;5us;65535us;4us;16us;22us;16us;24us;16us;26us;16us;28us;29us;4us;65535us;4us;18us;22us;18us;24us;18us;26us;18us;4us;65535us;4us;20us;22us;20us;24us;20us;26us;20us;4us;65535us;16us;22us;18us;24us;20us;26us;34us;35us;4us;65535us;16us;34us;18us;34us;20us;34us;34us;34us;23us;65535us;0us;90us;2us;268us;4us;33us;22us;33us;24us;33us;26us;33us;66us;90us;70us;90us;74us;90us;85us;90us;88us;90us;120us;90us;123us;90us;127us;90us;234us;268us;238us;268us;241us;268us;253us;268us;257us;268us;259us;268us;265us;268us;296us;268us;306us;268us;1us;65535us;39us;40us;1us;65535us;40us;41us;1us;65535us;0us;1us;6us;65535us;31us;280us;69us;70us;93us;94us;237us;238us;251us;280us;270us;280us;4us;65535us;61us;65us;63us;65us;229us;233us;231us;233us;1us;65535us;0us;44us;2us;65535us;61us;62us;63us;64us;2us;65535us;61us;63us;63us;63us;2us;65535us;0us;61us;66us;67us;3us;65535us;0us;72us;66us;72us;70us;71us;6us;65535us;0us;73us;66us;73us;70us;73us;74us;75us;123us;124us;127us;128us;9us;65535us;0us;81us;66us;81us;70us;81us;74us;81us;85us;86us;88us;89us;120us;121us;123us;81us;127us;81us;9us;65535us;0us;84us;66us;84us;70us;84us;74us;84us;85us;84us;88us;84us;120us;84us;123us;84us;127us;84us;9us;65535us;0us;91us;66us;91us;70us;91us;74us;91us;85us;91us;88us;91us;120us;91us;123us;91us;127us;91us;2us;65535us;112us;113us;186us;187us;1us;65535us;95us;97us;2us;65535us;100us;101us;131us;132us;3us;65535us;99us;100us;130us;131us;198us;199us;1us;65535us;134us;135us;2us;65535us;134us;144us;137us;138us;2us;65535us;134us;147us;137us;147us;2us;65535us;134us;151us;137us;151us;3us;65535us;152us;153us;162us;163us;220us;221us;8us;65535us;137us;159us;139us;140us;152us;170us;158us;159us;162us;170us;166us;167us;173us;174us;220us;170us;8us;65535us;137us;171us;139us;171us;152us;171us;158us;171us;162us;171us;166us;171us;173us;171us;220us;171us;11us;65535us;137us;172us;139us;172us;152us;172us;158us;172us;162us;172us;166us;172us;173us;172us;220us;172us;650us;651us;657us;658us;1507us;1508us;3us;65535us;185us;186us;455us;456us;492us;493us;2us;65535us;203us;204us;205us;206us;2us;65535us;177us;179us;178us;179us;2us;65535us;69us;102us;93us;102us;5us;65535us;133us;136us;140us;141us;142us;143us;144us;145us;218us;219us;1us;65535us;2us;3us;1us;65535us;2us;223us;2us;65535us;229us;230us;231us;232us;2us;65535us;229us;231us;231us;231us;2us;65535us;2us;229us;234us;235us;3us;65535us;2us;240us;234us;240us;238us;239us;5us;65535us;2us;248us;234us;248us;238us;248us;241us;242us;306us;307us;9us;65535us;2us;249us;234us;249us;238us;249us;241us;249us;253us;254us;259us;260us;265us;266us;296us;300us;306us;249us;10us;65535us;2us;255us;234us;255us;238us;255us;241us;255us;253us;255us;257us;258us;259us;255us;265us;255us;296us;255us;306us;255us;10us;65535us;2us;257us;234us;257us;238us;257us;241us;257us;253us;257us;257us;257us;259us;257us;265us;257us;296us;257us;306us;257us;15us;65535us;2us;267us;4us;28us;22us;28us;24us;28us;26us;28us;28us;28us;234us;267us;238us;267us;241us;267us;253us;267us;257us;267us;259us;267us;265us;267us;296us;267us;306us;267us;24us;65535us;0us;103us;2us;286us;4us;286us;22us;286us;24us;286us;26us;286us;28us;286us;66us;103us;70us;103us;74us;103us;85us;103us;88us;103us;120us;103us;123us;103us;127us;103us;234us;286us;238us;286us;241us;286us;253us;286us;257us;286us;259us;286us;265us;286us;296us;286us;306us;286us;1us;65535us;95us;96us;1us;65535us;281us;282us;2us;65535us;281us;304us;296us;297us;1us;65535us;361us;362us;81us;65535us;0us;68us;2us;236us;4us;30us;22us;30us;24us;30us;26us;30us;28us;269us;50us;51us;66us;68us;70us;92us;74us;92us;85us;92us;88us;92us;99us;355us;104us;105us;120us;92us;123us;92us;127us;92us;130us;355us;134us;560us;137us;176us;139us;175us;152us;175us;158us;175us;162us;175us;166us;175us;173us;175us;198us;355us;220us;175us;234us;236us;238us;250us;241us;250us;253us;250us;257us;269us;259us;250us;265us;250us;276us;355us;296us;250us;306us;250us;311us;436us;358us;355us;361us;363us;368us;560us;371us;437us;373us;436us;388us;436us;392us;436us;394us;436us;398us;436us;404us;436us;407us;436us;418us;419us;475us;355us;516us;545us;519us;436us;537us;545us;543us;545us;574us;725us;584us;725us;602us;611us;607us;611us;608us;611us;616us;611us;621us;611us;650us;175us;657us;175us;667us;677us;670us;677us;675us;677us;722us;725us;737us;738us;750us;802us;756us;802us;769us;796us;774us;783us;779us;783us;781us;783us;799us;802us;1507us;175us;1606us;546us;1608us;802us;122us;65535us;0us;314us;2us;284us;4us;284us;22us;284us;24us;284us;26us;284us;28us;284us;50us;314us;66us;314us;70us;314us;74us;314us;85us;314us;88us;314us;99us;314us;104us;314us;111us;1679us;120us;314us;123us;314us;127us;314us;130us;314us;134us;314us;137us;314us;139us;314us;149us;1679us;152us;314us;158us;314us;162us;314us;166us;314us;173us;314us;184us;1679us;198us;314us;201us;1679us;220us;314us;234us;284us;238us;284us;241us;284us;253us;284us;257us;284us;259us;284us;265us;284us;276us;314us;296us;284us;306us;284us;311us;314us;315us;316us;358us;314us;361us;314us;368us;314us;371us;314us;373us;314us;385us;1679us;388us;314us;392us;314us;394us;314us;398us;314us;404us;314us;407us;314us;418us;314us;454us;1679us;475us;314us;516us;314us;519us;314us;537us;314us;543us;314us;574us;314us;584us;314us;602us;314us;607us;314us;608us;314us;616us;314us;621us;314us;650us;314us;657us;314us;667us;314us;670us;314us;675us;314us;688us;1679us;722us;314us;737us;314us;750us;314us;756us;314us;769us;314us;774us;314us;779us;314us;781us;314us;799us;314us;876us;876us;877us;876us;880us;876us;922us;1008us;941us;1008us;957us;1008us;960us;1008us;971us;1008us;979us;1008us;1002us;1008us;1008us;1008us;1009us;1008us;1011us;1008us;1012us;1008us;1015us;1008us;1017us;1008us;1018us;1008us;1024us;1008us;1028us;1008us;1135us;1008us;1305us;1008us;1307us;1008us;1313us;1008us;1320us;1008us;1322us;1008us;1507us;314us;1606us;314us;1608us;314us;1651us;1008us;1653us;1008us;1660us;1679us;1664us;1679us;1668us;1679us;1671us;1679us;1674us;1679us;1677us;1679us;122us;65535us;0us;315us;2us;315us;4us;315us;22us;315us;24us;315us;26us;315us;28us;315us;50us;315us;66us;315us;70us;315us;74us;315us;85us;315us;88us;315us;99us;315us;104us;315us;111us;315us;120us;315us;123us;315us;127us;315us;130us;315us;134us;315us;137us;315us;139us;315us;149us;315us;152us;315us;158us;315us;162us;315us;166us;315us;173us;315us;184us;315us;198us;315us;201us;315us;220us;315us;234us;315us;238us;315us;241us;315us;253us;315us;257us;315us;259us;315us;265us;315us;276us;315us;296us;315us;306us;315us;311us;315us;315us;315us;358us;315us;361us;315us;368us;315us;371us;315us;373us;315us;385us;315us;388us;315us;392us;315us;394us;315us;398us;315us;404us;315us;407us;315us;418us;315us;454us;315us;475us;315us;516us;315us;519us;315us;537us;315us;543us;315us;574us;315us;584us;315us;602us;315us;607us;315us;608us;315us;616us;315us;621us;315us;650us;315us;657us;315us;667us;315us;670us;315us;675us;315us;688us;315us;722us;315us;737us;315us;750us;315us;756us;315us;769us;315us;774us;315us;779us;315us;781us;315us;799us;315us;876us;315us;877us;315us;880us;315us;922us;315us;941us;315us;957us;315us;960us;315us;971us;315us;979us;315us;1002us;315us;1008us;315us;1009us;315us;1011us;315us;1012us;315us;1015us;315us;1017us;315us;1018us;315us;1024us;315us;1028us;315us;1135us;315us;1305us;315us;1307us;315us;1313us;315us;1320us;315us;1322us;315us;1507us;315us;1606us;315us;1608us;315us;1651us;315us;1653us;315us;1660us;315us;1664us;315us;1668us;315us;1671us;315us;1674us;315us;1677us;315us;1us;65535us;317us;318us;2us;65535us;317us;327us;328us;329us;2us;65535us;317us;333us;328us;333us;4us;65535us;177us;216us;178us;216us;438us;442us;439us;442us;6us;65535us;99us;133us;130us;133us;198us;133us;276us;361us;358us;361us;475us;361us;2us;65535us;277us;278us;359us;360us;3us;65535us;276us;277us;358us;359us;475us;476us;1us;65535us;368us;369us;2us;65535us;368us;380us;371us;372us;2us;65535us;368us;383us;371us;383us;2us;65535us;368us;387us;371us;387us;3us;65535us;311us;312us;388us;389us;519us;520us;8us;65535us;311us;402us;373us;374us;388us;402us;392us;405us;398us;399us;404us;405us;407us;408us;519us;402us;10us;65535us;311us;403us;371us;395us;373us;403us;388us;403us;392us;403us;394us;395us;398us;403us;404us;403us;407us;403us;519us;403us;1us;65535us;426us;431us;2us;65535us;409us;410us;411us;412us;3us;65535us;409us;415us;411us;415us;416us;417us;3us;65535us;442us;443us;547us;548us;553us;554us;4us;65535us;177us;217us;178us;217us;438us;450us;439us;450us;10us;65535us;311us;406us;371us;406us;373us;406us;388us;406us;392us;406us;394us;406us;398us;406us;404us;406us;407us;406us;519us;406us;3us;65535us;350us;461us;438us;459us;439us;459us;2us;65535us;442us;463us;547us;550us;1us;65535us;489us;490us;52us;65535us;419us;926us;424us;926us;465us;966us;806us;926us;899us;926us;901us;926us;902us;926us;906us;926us;907us;926us;910us;926us;912us;926us;913us;926us;922us;926us;926us;966us;927us;966us;929us;966us;931us;966us;934us;966us;936us;966us;941us;926us;945us;966us;947us;966us;949us;966us;957us;926us;960us;926us;971us;926us;979us;926us;1000us;926us;1002us;926us;1008us;926us;1009us;926us;1011us;926us;1012us;926us;1015us;926us;1017us;926us;1018us;926us;1024us;926us;1028us;926us;1078us;926us;1083us;926us;1135us;926us;1166us;926us;1173us;926us;1305us;926us;1307us;926us;1313us;926us;1320us;926us;1322us;926us;1634us;966us;1639us;966us;1651us;926us;1653us;926us;22us;65535us;30us;31us;51us;52us;68us;69us;92us;93us;107us;108us;175us;177us;176us;178us;180us;181us;236us;237us;250us;251us;269us;270us;355us;595us;363us;364us;436us;438us;437us;439us;478us;479us;487us;488us;560us;561us;677us;678us;727us;728us;738us;739us;770us;771us;74us;65535us;30us;512us;51us;512us;68us;512us;92us;512us;107us;512us;175us;512us;176us;512us;180us;512us;236us;512us;250us;512us;269us;512us;355us;512us;363us;512us;419us;507us;424us;507us;436us;512us;437us;512us;465us;507us;478us;512us;487us;512us;560us;512us;677us;512us;727us;512us;738us;512us;770us;512us;806us;507us;899us;507us;901us;507us;902us;507us;906us;507us;907us;507us;910us;507us;912us;507us;913us;507us;922us;507us;926us;507us;927us;507us;929us;507us;931us;507us;934us;507us;936us;507us;941us;507us;945us;507us;947us;507us;949us;507us;957us;507us;960us;507us;971us;507us;979us;507us;1000us;507us;1002us;507us;1008us;507us;1009us;507us;1011us;507us;1012us;507us;1015us;507us;1017us;507us;1018us;507us;1024us;507us;1028us;507us;1078us;507us;1083us;507us;1135us;507us;1166us;507us;1173us;507us;1305us;507us;1307us;507us;1313us;507us;1320us;507us;1322us;507us;1634us;507us;1639us;507us;1651us;507us;1653us;507us;1us;65535us;447us;448us;4us;65535us;374us;375us;376us;377us;380us;381us;735us;736us;2us;65535us;438us;458us;439us;458us;2us;65535us;366us;367us;466us;467us;2us;65535us;366us;529us;466us;529us;2us;65535us;523us;524us;526us;527us;3us;65535us;523us;533us;526us;533us;1381us;1604us;2us;65535us;516us;517us;1606us;1611us;4us;65535us;516us;541us;537us;538us;543us;544us;1606us;541us;4us;65535us;516us;542us;537us;542us;543us;542us;1606us;542us;2us;65535us;545us;547us;546us;547us;4us;65535us;134us;146us;137us;146us;368us;382us;371us;382us;9us;65535us;178us;568us;439us;568us;561us;568us;679us;719us;681us;719us;684us;719us;705us;719us;708us;719us;744us;719us;83us;65535us;8us;1843us;111us;1843us;149us;1843us;178us;1843us;184us;1843us;188us;1843us;190us;1843us;201us;1843us;290us;1843us;385us;1843us;439us;1843us;446us;1843us;454us;1843us;481us;1843us;497us;1843us;561us;1843us;569us;1843us;626us;1843us;630us;1843us;640us;1843us;643us;1843us;653us;1843us;664us;1843us;679us;1843us;681us;1843us;684us;1843us;688us;1843us;705us;1843us;708us;1843us;711us;1843us;714us;1843us;730us;1843us;744us;1843us;829us;1843us;873us;1843us;938us;1843us;1005us;1843us;1046us;1843us;1231us;1843us;1234us;1843us;1237us;1843us;1517us;1843us;1550us;1843us;1553us;1843us;1555us;1843us;1619us;1843us;1657us;1843us;1659us;1843us;1660us;1843us;1664us;1843us;1668us;1843us;1671us;1843us;1674us;1843us;1677us;1843us;1679us;1843us;1681us;1843us;1686us;1843us;1690us;1843us;1695us;1843us;1700us;1843us;1703us;1843us;1706us;1843us;1709us;1843us;1714us;1843us;1717us;1843us;1719us;1843us;1722us;1843us;1726us;1843us;1729us;1843us;1731us;1843us;1734us;1843us;1751us;1843us;1757us;1843us;1760us;1843us;1827us;1843us;1831us;1843us;1837us;1843us;1848us;1843us;1854us;1843us;1855us;1843us;1878us;1843us;1880us;1843us;1891us;1843us;84us;65535us;8us;583us;111us;583us;149us;583us;178us;583us;184us;583us;188us;583us;190us;583us;201us;583us;290us;583us;385us;583us;439us;583us;446us;583us;454us;583us;481us;583us;497us;583us;561us;583us;569us;583us;581us;582us;626us;583us;630us;583us;640us;583us;643us;583us;653us;583us;664us;583us;679us;583us;681us;583us;684us;583us;688us;583us;705us;583us;708us;583us;711us;583us;714us;583us;730us;583us;744us;583us;829us;583us;873us;583us;938us;583us;1005us;583us;1046us;583us;1231us;583us;1234us;583us;1237us;583us;1517us;583us;1550us;583us;1553us;583us;1555us;583us;1619us;583us;1657us;583us;1659us;583us;1660us;583us;1664us;583us;1668us;583us;1671us;583us;1674us;583us;1677us;583us;1679us;583us;1681us;583us;1686us;583us;1690us;583us;1695us;583us;1700us;583us;1703us;583us;1706us;583us;1709us;583us;1714us;583us;1717us;583us;1719us;583us;1722us;583us;1726us;583us;1729us;583us;1731us;583us;1734us;583us;1751us;583us;1757us;583us;1760us;583us;1827us;583us;1831us;583us;1837us;583us;1848us;583us;1854us;583us;1855us;583us;1878us;583us;1880us;583us;1891us;583us;4us;65535us;134us;152us;137us;152us;368us;388us;371us;388us;9us;65535us;177us;188us;178us;188us;438us;446us;439us;446us;1600us;1619us;1602us;1619us;1613us;1619us;1615us;1619us;1617us;1619us;1us;65535us;355us;356us;1us;65535us;595us;597us;3us;65535us;602us;603us;616us;605us;621us;606us;5us;65535us;602us;610us;607us;609us;608us;609us;616us;610us;621us;610us;1us;65535us;596us;599us;1us;65535us;621us;622us;4us;65535us;109us;625us;182us;625us;452us;625us;926us;927us;3us;65535us;109us;110us;182us;183us;452us;453us;3us;65535us;356us;357us;605us;617us;622us;623us;3us;65535us;626us;627us;1657us;628us;1659us;629us;3us;65535us;613us;614us;1737us;633us;1739us;634us;4us;65535us;626us;632us;630us;631us;1657us;632us;1659us;632us;1us;65535us;653us;654us;3us;65535us;178us;567us;439us;567us;561us;567us;5us;65535us;178us;667us;439us;667us;561us;667us;669us;670us;674us;675us;3us;65535us;667us;668us;670us;671us;675us;676us;3us;65535us;667us;674us;670us;674us;675us;674us;1us;65535us;678us;679us;3us;65535us;178us;669us;439us;669us;561us;669us;3us;65535us;178us;672us;439us;672us;561us;672us;7us;65535us;679us;720us;681us;720us;684us;720us;705us;720us;708us;720us;711us;712us;744us;720us;7us;65535us;679us;710us;681us;710us;684us;710us;705us;710us;708us;710us;711us;710us;744us;710us;6us;65535us;679us;683us;681us;682us;684us;685us;705us;706us;708us;709us;744us;745us;3us;65535us;574us;575us;584us;585us;722us;723us;3us;65535us;574us;721us;584us;721us;722us;721us;3us;65535us;193us;194us;196us;197us;725us;726us;4us;65535us;31us;279us;237us;279us;251us;279us;270us;279us;6us;65535us;31us;735us;69us;218us;93us;218us;237us;735us;251us;735us;270us;735us;1us;65535us;739us;740us;1us;65535us;740us;741us;120us;65535us;6us;1089us;31us;272us;114us;1089us;116us;1089us;237us;272us;251us;272us;270us;271us;274us;1089us;350us;763us;422us;1089us;427us;1089us;438us;763us;439us;763us;468us;1089us;491us;1089us;753us;1089us;759us;1089us;809us;1089us;813us;1089us;823us;1089us;1030us;1089us;1036us;1089us;1052us;1089us;1054us;1089us;1057us;1089us;1060us;1089us;1079us;1089us;1084us;1089us;1090us;1089us;1093us;1089us;1096us;1089us;1102us;1089us;1106us;1089us;1110us;1089us;1116us;1089us;1118us;1089us;1123us;1089us;1125us;1089us;1127us;1089us;1129us;1089us;1131us;1089us;1133us;1089us;1137us;1089us;1147us;1089us;1154us;1089us;1160us;1089us;1162us;1089us;1167us;1089us;1171us;1089us;1174us;1089us;1178us;1089us;1181us;1089us;1184us;1089us;1186us;1089us;1189us;1089us;1191us;1089us;1240us;1089us;1242us;1089us;1246us;1089us;1248us;1089us;1250us;1089us;1252us;1089us;1254us;1089us;1256us;1089us;1258us;1089us;1260us;1089us;1262us;1089us;1264us;1089us;1266us;1089us;1268us;1089us;1270us;1089us;1272us;1089us;1274us;1089us;1276us;1089us;1278us;1089us;1280us;1089us;1282us;1089us;1284us;1089us;1286us;1089us;1287us;1089us;1288us;1089us;1289us;1089us;1292us;1089us;1302us;1089us;1327us;1089us;1328us;1089us;1332us;1089us;1334us;1089us;1337us;1089us;1338us;1089us;1340us;1089us;1343us;1089us;1345us;1089us;1347us;1089us;1349us;1089us;1431us;1089us;1438us;1089us;1445us;1089us;1452us;1089us;1469us;1089us;1476us;1089us;1477us;1089us;1483us;1089us;1489us;1089us;1490us;1089us;1491us;1089us;1503us;1089us;1509us;1089us;1519us;1089us;1532us;1089us;1534us;1089us;1537us;1089us;1538us;1089us;1564us;1089us;1569us;1089us;1594us;1089us;1636us;1089us;1641us;1089us;2021us;1089us;2025us;1089us;7us;65535us;31us;275us;237us;275us;251us;275us;270us;275us;350us;764us;438us;764us;439us;764us;120us;65535us;6us;1060us;31us;274us;114us;1093us;116us;1093us;237us;274us;251us;274us;270us;273us;274us;1060us;350us;765us;422us;1060us;427us;1060us;438us;765us;439us;765us;468us;1060us;491us;1060us;753us;1060us;759us;1060us;809us;1060us;813us;1060us;823us;1060us;1030us;1060us;1036us;1060us;1052us;1060us;1054us;1060us;1057us;1060us;1060us;1060us;1079us;1060us;1084us;1060us;1090us;1060us;1093us;1060us;1096us;1060us;1102us;1060us;1106us;1060us;1110us;1060us;1116us;1060us;1118us;1093us;1123us;1093us;1125us;1093us;1127us;1093us;1129us;1093us;1131us;1093us;1133us;1093us;1137us;1060us;1147us;1060us;1154us;1060us;1160us;1093us;1162us;1093us;1167us;1060us;1171us;1060us;1174us;1060us;1178us;1060us;1181us;1060us;1184us;1060us;1186us;1060us;1189us;1093us;1191us;1060us;1240us;1093us;1242us;1093us;1246us;1093us;1248us;1093us;1250us;1093us;1252us;1093us;1254us;1093us;1256us;1093us;1258us;1093us;1260us;1093us;1262us;1093us;1264us;1093us;1266us;1093us;1268us;1093us;1270us;1093us;1272us;1093us;1274us;1093us;1276us;1093us;1278us;1093us;1280us;1093us;1282us;1093us;1284us;1093us;1286us;1093us;1287us;1093us;1288us;1093us;1289us;1093us;1292us;1060us;1302us;1060us;1327us;1093us;1328us;1060us;1332us;1093us;1334us;1060us;1337us;1093us;1338us;1060us;1340us;1093us;1343us;1093us;1345us;1093us;1347us;1093us;1349us;1093us;1431us;1060us;1438us;1093us;1445us;1060us;1452us;1060us;1469us;1060us;1476us;1060us;1477us;1060us;1483us;1060us;1489us;1060us;1490us;1060us;1491us;1060us;1503us;1093us;1509us;1060us;1519us;1060us;1532us;1060us;1534us;1093us;1537us;1093us;1538us;1093us;1564us;1093us;1569us;1093us;1594us;1093us;1636us;1060us;1641us;1060us;2021us;1093us;2025us;1093us;119us;65535us;6us;1099us;31us;1099us;114us;1099us;116us;1099us;237us;1099us;251us;1099us;274us;1099us;350us;766us;422us;1099us;427us;1099us;438us;766us;439us;766us;468us;1099us;491us;1099us;753us;1099us;759us;1099us;809us;1099us;813us;1099us;823us;1099us;1030us;1099us;1036us;1099us;1052us;1099us;1054us;1099us;1057us;1099us;1060us;1099us;1079us;1099us;1084us;1099us;1090us;1099us;1093us;1099us;1096us;1099us;1102us;1099us;1106us;1099us;1110us;1099us;1116us;1099us;1118us;1099us;1123us;1099us;1125us;1099us;1127us;1099us;1129us;1099us;1131us;1099us;1133us;1099us;1137us;1099us;1147us;1099us;1154us;1099us;1160us;1099us;1162us;1099us;1167us;1099us;1171us;1099us;1174us;1099us;1178us;1099us;1181us;1099us;1184us;1099us;1186us;1099us;1189us;1099us;1191us;1099us;1240us;1099us;1242us;1099us;1246us;1099us;1248us;1099us;1250us;1099us;1252us;1099us;1254us;1099us;1256us;1099us;1258us;1099us;1260us;1099us;1262us;1099us;1264us;1099us;1266us;1099us;1268us;1099us;1270us;1099us;1272us;1099us;1274us;1099us;1276us;1099us;1278us;1099us;1280us;1099us;1282us;1099us;1284us;1099us;1286us;1099us;1287us;1099us;1288us;1099us;1289us;1099us;1292us;1099us;1302us;1099us;1327us;1099us;1328us;1099us;1332us;1099us;1334us;1099us;1337us;1099us;1338us;1099us;1340us;1099us;1343us;1099us;1345us;1099us;1347us;1099us;1349us;1099us;1431us;1099us;1438us;1099us;1445us;1099us;1452us;1099us;1469us;1099us;1476us;1099us;1477us;1099us;1483us;1099us;1489us;1099us;1490us;1099us;1491us;1099us;1503us;1099us;1509us;1099us;1519us;1099us;1532us;1099us;1534us;1099us;1537us;1099us;1538us;1099us;1564us;1099us;1569us;1099us;1594us;1099us;1636us;1099us;1641us;1099us;2021us;1099us;2025us;1099us;3us;65535us;350us;441us;438us;440us;439us;440us;5us;65535us;757us;758us;760us;761us;1085us;1086us;1175us;1176us;1187us;1188us;120us;65535us;6us;752us;31us;752us;114us;752us;116us;752us;237us;752us;251us;752us;270us;752us;274us;752us;350us;752us;422us;752us;427us;752us;438us;752us;439us;752us;468us;752us;491us;752us;753us;752us;759us;752us;809us;752us;813us;752us;823us;752us;1030us;752us;1036us;752us;1052us;752us;1054us;752us;1057us;752us;1060us;752us;1079us;752us;1084us;752us;1090us;752us;1093us;752us;1096us;752us;1102us;752us;1106us;752us;1110us;752us;1116us;752us;1118us;752us;1123us;752us;1125us;752us;1127us;752us;1129us;752us;1131us;752us;1133us;752us;1137us;752us;1147us;752us;1154us;752us;1160us;752us;1162us;752us;1167us;752us;1171us;752us;1174us;752us;1178us;752us;1181us;752us;1184us;752us;1186us;752us;1189us;752us;1191us;752us;1240us;752us;1242us;752us;1246us;752us;1248us;752us;1250us;752us;1252us;752us;1254us;752us;1256us;752us;1258us;752us;1260us;752us;1262us;752us;1264us;752us;1266us;752us;1268us;752us;1270us;752us;1272us;752us;1274us;752us;1276us;752us;1278us;752us;1280us;752us;1282us;752us;1284us;752us;1286us;752us;1287us;752us;1288us;752us;1289us;752us;1292us;752us;1302us;752us;1327us;752us;1328us;752us;1332us;752us;1334us;752us;1337us;752us;1338us;752us;1340us;752us;1343us;752us;1345us;752us;1347us;752us;1349us;752us;1431us;752us;1438us;752us;1445us;752us;1452us;752us;1469us;752us;1476us;752us;1477us;752us;1483us;752us;1489us;752us;1490us;752us;1491us;752us;1503us;752us;1509us;752us;1519us;752us;1532us;752us;1534us;752us;1537us;752us;1538us;752us;1564us;752us;1569us;752us;1594us;752us;1636us;752us;1641us;752us;2021us;752us;2025us;752us;1us;65535us;774us;775us;1us;65535us;774us;777us;3us;65535us;774us;778us;779us;780us;781us;782us;2us;65535us;783us;784us;796us;787us;1us;65535us;769us;770us;4us;65535us;750us;751us;756us;757us;1606us;1607us;1608us;1609us;2us;65535us;797us;798us;800us;801us;5us;65535us;750us;797us;756us;797us;799us;800us;1606us;797us;1608us;797us;2us;65535us;546us;803us;802us;803us;1us;65535us;809us;810us;2us;65535us;809us;817us;813us;814us;1us;65535us;818us;819us;1us;65535us;819us;820us;1us;65535us;821us;822us;2us;65535us;821us;827us;825us;826us;300us;65535us;6us;864us;8us;1862us;31us;864us;111us;1862us;114us;864us;116us;864us;149us;1862us;178us;1862us;184us;1862us;188us;1862us;190us;1862us;201us;1862us;237us;864us;251us;864us;274us;864us;290us;1862us;331us;864us;335us;864us;340us;864us;385us;1862us;419us;864us;422us;864us;424us;864us;427us;864us;439us;1862us;446us;1862us;454us;1862us;465us;864us;468us;864us;481us;1862us;491us;864us;497us;1862us;522us;1862us;525us;864us;561us;1862us;569us;1862us;570us;1862us;613us;1862us;626us;1862us;630us;1862us;635us;1862us;640us;1862us;643us;1862us;653us;1862us;664us;1862us;679us;1862us;681us;1862us;684us;1862us;688us;1862us;690us;864us;701us;864us;705us;1862us;708us;1862us;711us;1862us;714us;1862us;730us;1862us;744us;1862us;753us;864us;759us;864us;806us;864us;809us;864us;813us;864us;823us;864us;829us;1862us;873us;1862us;899us;864us;901us;864us;902us;864us;906us;864us;907us;864us;910us;864us;912us;864us;913us;864us;922us;864us;926us;864us;927us;864us;929us;864us;931us;864us;934us;864us;936us;864us;938us;1862us;941us;864us;945us;864us;947us;864us;949us;864us;957us;864us;960us;864us;971us;864us;979us;864us;1000us;864us;1002us;864us;1005us;1862us;1008us;864us;1009us;864us;1011us;864us;1012us;864us;1015us;864us;1017us;864us;1018us;864us;1024us;864us;1028us;864us;1030us;864us;1036us;864us;1046us;1862us;1052us;864us;1054us;864us;1057us;864us;1060us;864us;1078us;864us;1079us;864us;1083us;864us;1084us;864us;1090us;864us;1093us;864us;1096us;864us;1102us;864us;1106us;864us;1110us;864us;1116us;864us;1118us;864us;1123us;864us;1125us;864us;1127us;864us;1129us;864us;1131us;864us;1133us;864us;1135us;864us;1137us;864us;1147us;864us;1154us;864us;1160us;864us;1162us;864us;1166us;864us;1167us;864us;1171us;864us;1173us;864us;1174us;864us;1178us;864us;1181us;864us;1184us;864us;1186us;864us;1189us;864us;1191us;864us;1231us;1862us;1234us;1862us;1237us;1862us;1240us;864us;1242us;864us;1246us;864us;1248us;864us;1250us;864us;1252us;864us;1254us;864us;1256us;864us;1258us;864us;1260us;864us;1262us;864us;1264us;864us;1266us;864us;1268us;864us;1270us;864us;1272us;864us;1274us;864us;1276us;864us;1278us;864us;1280us;864us;1282us;864us;1284us;864us;1286us;864us;1287us;864us;1288us;864us;1289us;864us;1292us;864us;1302us;864us;1305us;864us;1307us;864us;1313us;864us;1320us;864us;1322us;864us;1327us;864us;1328us;864us;1332us;864us;1334us;864us;1337us;864us;1338us;864us;1340us;864us;1343us;864us;1345us;864us;1347us;864us;1349us;864us;1351us;864us;1352us;864us;1353us;864us;1354us;864us;1356us;864us;1357us;864us;1359us;864us;1360us;864us;1362us;864us;1363us;864us;1365us;864us;1366us;864us;1368us;864us;1369us;864us;1371us;864us;1372us;864us;1374us;1862us;1375us;1862us;1378us;864us;1379us;864us;1386us;864us;1388us;864us;1390us;864us;1391us;864us;1392us;864us;1395us;864us;1400us;864us;1408us;864us;1409us;864us;1412us;864us;1413us;864us;1431us;864us;1438us;864us;1445us;864us;1452us;864us;1469us;864us;1476us;864us;1477us;864us;1483us;864us;1489us;864us;1490us;864us;1491us;864us;1503us;864us;1509us;864us;1517us;1862us;1519us;864us;1532us;864us;1534us;864us;1537us;864us;1538us;864us;1544us;864us;1550us;1862us;1553us;1862us;1555us;1862us;1557us;1862us;1559us;864us;1564us;864us;1569us;864us;1594us;864us;1619us;1862us;1627us;864us;1634us;864us;1636us;864us;1639us;864us;1641us;864us;1651us;864us;1653us;864us;1657us;1862us;1659us;1862us;1660us;1862us;1664us;1862us;1668us;1862us;1671us;1862us;1674us;1862us;1677us;1862us;1679us;1862us;1681us;1862us;1686us;1862us;1690us;1862us;1695us;1862us;1700us;1862us;1703us;1862us;1706us;1862us;1709us;1862us;1714us;1862us;1717us;1862us;1719us;1862us;1722us;1862us;1726us;1862us;1729us;1862us;1731us;1862us;1734us;1862us;1737us;1862us;1739us;1862us;1751us;1862us;1757us;1862us;1760us;1862us;1827us;1862us;1831us;1862us;1837us;1862us;1844us;1862us;1848us;1862us;1854us;1862us;1855us;1862us;1864us;864us;1878us;1862us;1880us;1862us;1891us;1862us;2021us;864us;2025us;864us;1us;65535us;858us;859us;4us;65535us;862us;863us;1744us;861us;1835us;861us;1906us;861us;3us;65535us;1744us;1745us;1835us;1836us;1906us;1907us;207us;65535us;6us;1458us;31us;1458us;114us;1458us;116us;1458us;237us;1458us;251us;1458us;274us;1458us;331us;1458us;335us;1458us;340us;1458us;419us;967us;422us;1458us;424us;967us;427us;1458us;465us;967us;468us;1458us;491us;1458us;525us;1458us;690us;1458us;701us;1458us;753us;1458us;759us;1458us;806us;967us;809us;1458us;813us;1458us;823us;1458us;899us;967us;901us;967us;902us;967us;906us;967us;907us;967us;910us;967us;912us;967us;913us;967us;922us;967us;926us;967us;927us;967us;929us;967us;931us;967us;934us;967us;936us;967us;941us;967us;945us;967us;947us;967us;949us;967us;957us;967us;960us;967us;971us;967us;979us;967us;1000us;967us;1002us;967us;1008us;967us;1009us;967us;1011us;967us;1012us;967us;1015us;967us;1017us;967us;1018us;967us;1024us;967us;1028us;967us;1030us;1458us;1036us;1458us;1052us;1458us;1054us;1458us;1057us;1458us;1060us;1458us;1078us;967us;1079us;1458us;1083us;967us;1084us;1458us;1090us;1458us;1093us;1458us;1096us;1458us;1102us;1458us;1106us;1458us;1110us;1458us;1116us;1458us;1118us;1458us;1123us;1458us;1125us;1458us;1127us;1458us;1129us;1458us;1131us;1458us;1133us;1458us;1135us;967us;1137us;1458us;1147us;1458us;1154us;1458us;1160us;1458us;1162us;1458us;1166us;967us;1167us;1458us;1171us;1458us;1173us;967us;1174us;1458us;1178us;1458us;1181us;1458us;1184us;1458us;1186us;1458us;1189us;1458us;1191us;1458us;1240us;1458us;1242us;1458us;1246us;1458us;1248us;1458us;1250us;1458us;1252us;1458us;1254us;1458us;1256us;1458us;1258us;1458us;1260us;1458us;1262us;1458us;1264us;1458us;1266us;1458us;1268us;1458us;1270us;1458us;1272us;1458us;1274us;1458us;1276us;1458us;1278us;1458us;1280us;1458us;1282us;1458us;1284us;1458us;1286us;1458us;1287us;1458us;1288us;1458us;1289us;1458us;1292us;1458us;1302us;1458us;1305us;967us;1307us;967us;1313us;967us;1320us;967us;1322us;967us;1327us;1458us;1328us;1458us;1332us;1458us;1334us;1458us;1337us;1458us;1338us;1458us;1340us;1458us;1343us;1458us;1345us;1458us;1347us;1458us;1349us;1458us;1351us;1458us;1352us;1458us;1353us;1458us;1354us;1458us;1356us;1458us;1357us;1458us;1359us;1458us;1360us;1458us;1362us;1458us;1363us;1458us;1365us;1458us;1366us;1458us;1368us;1458us;1369us;1458us;1371us;1458us;1372us;1458us;1378us;1458us;1379us;1458us;1386us;1458us;1388us;1458us;1390us;1458us;1391us;1458us;1392us;1458us;1395us;1458us;1400us;1458us;1408us;1458us;1409us;1458us;1412us;1458us;1413us;1458us;1431us;1458us;1438us;1458us;1445us;1458us;1452us;1458us;1469us;1458us;1476us;1458us;1477us;1458us;1483us;1458us;1489us;1458us;1490us;1458us;1491us;1458us;1503us;1458us;1509us;1458us;1519us;1458us;1532us;1458us;1534us;1458us;1537us;1458us;1538us;1458us;1544us;1458us;1559us;1458us;1564us;1458us;1569us;1458us;1594us;1458us;1627us;1458us;1634us;967us;1636us;1458us;1639us;967us;1641us;1458us;1651us;967us;1653us;967us;1864us;1458us;2021us;1458us;2025us;1458us;3us;65535us;419us;420us;424us;425us;806us;807us;3us;65535us;876us;871us;877us;872us;880us;872us;2us;65535us;877us;878us;880us;881us;1us;65535us;365us;366us;1us;65535us;365us;879us;14us;65535us;419us;867us;424us;867us;806us;867us;901us;888us;902us;889us;906us;890us;907us;891us;910us;892us;912us;893us;913us;894us;1078us;895us;1083us;896us;1166us;897us;1173us;898us;14us;65535us;419us;903us;424us;903us;806us;903us;901us;903us;902us;903us;906us;903us;907us;903us;910us;903us;912us;903us;913us;903us;1078us;903us;1083us;903us;1166us;903us;1173us;903us;14us;65535us;419us;904us;424us;904us;806us;904us;901us;904us;902us;904us;906us;904us;907us;904us;910us;904us;912us;904us;913us;904us;1078us;904us;1083us;904us;1166us;904us;1173us;904us;3us;65535us;916us;917us;918us;919us;941us;942us;3us;65535us;916us;914us;918us;914us;941us;914us;40us;65535us;419us;905us;424us;905us;806us;905us;899us;900us;901us;905us;902us;905us;906us;905us;907us;905us;910us;905us;912us;905us;913us;905us;922us;1010us;941us;1010us;957us;1010us;960us;1010us;971us;1010us;979us;1010us;1000us;1001us;1002us;1010us;1008us;1010us;1009us;1010us;1011us;1010us;1012us;1010us;1015us;1010us;1017us;1010us;1018us;1010us;1024us;1010us;1028us;1010us;1078us;905us;1083us;905us;1135us;1010us;1166us;905us;1173us;905us;1305us;1010us;1307us;1010us;1313us;1010us;1320us;1010us;1322us;1010us;1651us;1010us;1653us;1010us;6us;65535us;926us;933us;927us;928us;929us;930us;931us;932us;934us;935us;936us;937us;11us;65535us;926us;944us;927us;944us;929us;944us;931us;944us;934us;944us;936us;944us;945us;946us;947us;948us;949us;950us;1634us;1635us;1639us;1640us;52us;65535us;419us;940us;424us;940us;465us;466us;806us;940us;899us;940us;901us;940us;902us;940us;906us;940us;907us;940us;910us;940us;912us;940us;913us;940us;922us;940us;926us;945us;927us;945us;929us;945us;931us;945us;934us;945us;936us;945us;941us;940us;945us;945us;947us;945us;949us;945us;957us;940us;960us;940us;971us;940us;979us;940us;1000us;940us;1002us;940us;1008us;940us;1009us;940us;1011us;940us;1012us;940us;1015us;940us;1017us;940us;1018us;940us;1024us;940us;1028us;940us;1078us;940us;1083us;940us;1135us;940us;1166us;940us;1173us;940us;1305us;940us;1307us;940us;1313us;940us;1320us;940us;1322us;940us;1634us;945us;1639us;945us;1651us;940us;1653us;940us;2us;65535us;941us;972us;971us;972us;24us;65535us;922us;923us;941us;986us;957us;997us;960us;997us;971us;986us;979us;994us;1002us;987us;1008us;988us;1009us;989us;1011us;990us;1012us;991us;1015us;992us;1017us;993us;1018us;995us;1024us;996us;1028us;997us;1135us;998us;1305us;999us;1307us;999us;1313us;999us;1320us;999us;1322us;999us;1651us;999us;1653us;999us;24us;65535us;922us;1003us;941us;1003us;957us;1003us;960us;1003us;971us;1003us;979us;980us;1002us;1003us;1008us;1003us;1009us;1003us;1011us;1003us;1012us;1003us;1015us;1003us;1017us;1003us;1018us;1003us;1024us;1003us;1028us;1003us;1135us;1003us;1305us;1003us;1307us;1003us;1313us;1003us;1320us;1003us;1322us;1003us;1651us;1003us;1653us;1003us;24us;65535us;922us;1004us;941us;1004us;957us;1004us;960us;1004us;971us;1004us;979us;1004us;1002us;1004us;1008us;1004us;1009us;1004us;1011us;1004us;1012us;1004us;1015us;1004us;1017us;1004us;1018us;1004us;1024us;1004us;1028us;1004us;1135us;1004us;1305us;1004us;1307us;1004us;1313us;1004us;1320us;1004us;1322us;1004us;1651us;1004us;1653us;1004us;2us;65535us;952us;953us;1021us;1022us;2us;65535us;952us;1019us;1021us;1019us;3us;65535us;957us;958us;960us;961us;1028us;1029us;27us;65535us;274us;1094us;422us;423us;427us;428us;468us;469us;491us;492us;753us;754us;759us;760us;823us;824us;1060us;1094us;1079us;1080us;1084us;1085us;1093us;1094us;1096us;1097us;1116us;1117us;1137us;1138us;1147us;1148us;1154us;1155us;1167us;1168us;1171us;1172us;1174us;1175us;1178us;1179us;1184us;1185us;1186us;1187us;1292us;1293us;1334us;1335us;1338us;1339us;1636us;1637us;6us;65535us;1127us;1128us;1129us;1130us;1242us;1243us;1564us;1565us;1569us;1570us;1594us;1595us;5us;65535us;1110us;1111us;1191us;1192us;1328us;1329us;1532us;1533us;1641us;1642us;52us;65535us;6us;1049us;274us;1035us;422us;1035us;427us;1035us;468us;1035us;491us;1035us;753us;1035us;759us;1035us;809us;818us;813us;818us;823us;1035us;1030us;1031us;1036us;1037us;1057us;1058us;1060us;1035us;1079us;1035us;1084us;1035us;1090us;1091us;1093us;1035us;1096us;1035us;1102us;1103us;1106us;1107us;1110us;1041us;1116us;1035us;1137us;1035us;1147us;1035us;1154us;1035us;1167us;1035us;1171us;1035us;1174us;1035us;1178us;1035us;1181us;1182us;1184us;1035us;1186us;1035us;1191us;1041us;1292us;1035us;1302us;1303us;1328us;1041us;1334us;1035us;1338us;1035us;1445us;1450us;1452us;1453us;1469us;1470us;1476us;1478us;1477us;1478us;1489us;1511us;1490us;1511us;1491us;1511us;1509us;1510us;1532us;1041us;1636us;1035us;1641us;1041us;1us;65535us;6us;7us;57us;65535us;6us;1045us;274us;1045us;422us;1045us;427us;1045us;468us;1045us;491us;1045us;753us;1045us;759us;1045us;809us;1045us;813us;1045us;823us;1045us;1030us;1045us;1036us;1045us;1052us;1053us;1054us;1055us;1057us;1045us;1060us;1045us;1079us;1045us;1084us;1045us;1090us;1045us;1093us;1045us;1096us;1045us;1102us;1045us;1106us;1045us;1110us;1045us;1116us;1045us;1137us;1045us;1147us;1045us;1154us;1045us;1167us;1045us;1171us;1045us;1174us;1045us;1178us;1045us;1181us;1045us;1184us;1045us;1186us;1045us;1191us;1045us;1292us;1045us;1302us;1045us;1328us;1045us;1334us;1045us;1338us;1045us;1431us;1529us;1445us;1045us;1452us;1045us;1469us;1045us;1476us;1045us;1477us;1045us;1483us;1530us;1489us;1045us;1490us;1045us;1491us;1045us;1509us;1045us;1519us;1531us;1532us;1045us;1636us;1045us;1641us;1045us;196us;65535us;53us;56us;58us;60us;75us;78us;153us;155us;159us;161us;163us;165us;167us;169us;190us;192us;210us;212us;242us;245us;284us;285us;287us;289us;290us;292us;297us;299us;300us;302us;307us;309us;317us;2066us;319us;2066us;367us;370us;375us;378us;389us;2066us;395us;396us;399us;400us;426us;430us;442us;445us;446us;449us;465us;473us;467us;2066us;479us;485us;480us;484us;481us;483us;488us;496us;490us;2066us;497us;499us;522us;2066us;530us;532us;538us;540us;564us;565us;575us;577us;585us;587us;595us;600us;678us;680us;681us;687us;684us;686us;705us;707us;728us;734us;729us;733us;730us;732us;739us;742us;744us;746us;757us;768us;760us;768us;808us;812us;814us;816us;873us;875us;880us;887us;881us;884us;906us;2066us;907us;2066us;910us;2066us;920us;925us;921us;925us;922us;924us;941us;977us;971us;977us;972us;974us;979us;985us;980us;982us;998us;1159us;1005us;1007us;1011us;2066us;1012us;2066us;1015us;2066us;1023us;1026us;1024us;1025us;1031us;1033us;1046us;1048us;1085us;768us;1103us;1105us;1107us;1109us;1110us;1043us;1111us;1113us;1118us;1122us;1119us;1121us;1131us;1299us;1133us;1299us;1135us;2066us;1136us;2066us;1137us;2066us;1138us;2066us;1146us;1153us;1147us;1152us;1148us;1150us;1160us;1164us;1162us;1165us;1175us;768us;1187us;768us;1191us;1043us;1216us;1298us;1220us;1342us;1231us;1233us;1234us;1236us;1237us;1239us;1245us;1440us;1246us;2066us;1248us;2066us;1250us;2066us;1252us;2066us;1254us;2066us;1256us;2066us;1258us;2066us;1260us;2066us;1262us;2066us;1264us;2066us;1266us;2066us;1268us;2066us;1270us;2066us;1272us;2066us;1274us;2066us;1276us;2066us;1278us;2066us;1280us;2066us;1282us;2066us;1284us;2066us;1293us;1295us;1307us;1311us;1308us;1310us;1318us;1326us;1319us;1325us;1320us;1324us;1328us;1043us;1332us;1333us;1334us;1336us;1343us;2066us;1345us;2066us;1347us;2066us;1349us;2066us;1382us;1444us;1398us;1403us;1399us;1403us;1400us;1402us;1419us;1444us;1422us;1444us;1431us;1436us;1432us;1434us;1452us;1457us;1453us;1455us;1470us;1472us;1476us;1482us;1477us;1482us;1478us;1480us;1483us;1488us;1484us;1486us;1489us;1502us;1490us;1502us;1491us;1502us;1493us;2060us;1519us;1524us;1520us;1522us;1532us;1043us;1534us;2066us;1564us;1568us;1593us;2066us;1594us;2066us;1627us;1632us;1628us;1630us;1641us;1044us;1642us;1644us;1660us;1662us;1664us;1666us;1668us;1670us;1674us;1676us;1681us;1683us;1686us;1688us;1690us;1692us;1695us;1697us;1700us;1702us;1706us;1708us;1714us;1716us;1719us;1721us;1722us;1724us;1726us;1728us;1731us;1733us;1746us;1860us;1830us;1883us;1849us;1852us;1850us;1852us;1854us;1861us;1855us;1859us;1856us;1858us;1873us;2066us;1878us;1889us;1880us;2066us;1885us;2066us;1926us;2066us;1976us;2066us;4us;65535us;1081us;1082us;1087us;1088us;1170us;1171us;1177us;1178us;116us;65535us;6us;1051us;31us;32us;114us;115us;116us;117us;237us;252us;251us;252us;274us;1051us;422us;1051us;427us;1051us;468us;1051us;491us;1051us;753us;1051us;759us;1051us;809us;1051us;813us;1051us;823us;1051us;1030us;1051us;1036us;1051us;1052us;1051us;1054us;1051us;1057us;1051us;1060us;1051us;1079us;1051us;1084us;1051us;1090us;1051us;1093us;1051us;1096us;1051us;1102us;1051us;1106us;1051us;1110us;1051us;1116us;1051us;1118us;1119us;1123us;1124us;1125us;1126us;1127us;1040us;1129us;1040us;1131us;1216us;1133us;1216us;1137us;1051us;1147us;1051us;1154us;1051us;1160us;1161us;1162us;1163us;1167us;1051us;1171us;1051us;1174us;1051us;1178us;1051us;1181us;1051us;1184us;1051us;1186us;1051us;1189us;1190us;1191us;1051us;1240us;1193us;1242us;1040us;1246us;1194us;1248us;1195us;1250us;1196us;1252us;1197us;1254us;1198us;1256us;1199us;1258us;1200us;1260us;1201us;1262us;1202us;1264us;1203us;1266us;1204us;1268us;1205us;1270us;1206us;1272us;1207us;1274us;1208us;1276us;1209us;1278us;1210us;1280us;1211us;1282us;1212us;1284us;1213us;1286us;1214us;1287us;1215us;1288us;1215us;1289us;1215us;1292us;1051us;1302us;1051us;1327us;1217us;1328us;1051us;1332us;1218us;1334us;1051us;1337us;1219us;1338us;1051us;1340us;1220us;1343us;1221us;1345us;1222us;1347us;1223us;1349us;1225us;1431us;1051us;1438us;1224us;1445us;1051us;1452us;1051us;1469us;1051us;1476us;1051us;1477us;1051us;1483us;1051us;1489us;1051us;1490us;1051us;1491us;1051us;1503us;1226us;1509us;1051us;1519us;1051us;1532us;1051us;1534us;1227us;1537us;1228us;1538us;1229us;1564us;1040us;1569us;1040us;1594us;1040us;1636us;1051us;1641us;1051us;2021us;1230us;2025us;1230us;2us;65535us;1131us;1132us;1133us;1134us;1us;65535us;1427us;1428us;4us;65535us;1103us;1104us;1107us;1108us;1111us;1112us;1114us;1115us;4us;65535us;1305us;1306us;1307us;1308us;1651us;1652us;1653us;1654us;7us;65535us;1305us;1318us;1307us;1318us;1313us;1318us;1320us;1318us;1322us;1318us;1651us;1318us;1653us;1318us;7us;65535us;1305us;1312us;1307us;1312us;1313us;1314us;1320us;1321us;1322us;1323us;1651us;1312us;1653us;1312us;1us;65535us;999us;1317us;1us;65535us;1318us;1319us;2us;65535us;1119us;1120us;1220us;1341us;2us;65535us;1119us;1330us;1220us;1330us;1us;65535us;1330us;1331us;116us;65535us;6us;1244us;31us;1244us;114us;1244us;116us;1244us;237us;1244us;251us;1244us;274us;1244us;422us;1244us;427us;1244us;468us;1244us;491us;1244us;753us;1244us;759us;1244us;809us;1244us;813us;1244us;823us;1244us;1030us;1244us;1036us;1244us;1052us;1244us;1054us;1244us;1057us;1244us;1060us;1244us;1079us;1244us;1084us;1244us;1090us;1244us;1093us;1244us;1096us;1244us;1102us;1244us;1106us;1244us;1110us;1244us;1116us;1244us;1118us;1244us;1123us;1244us;1125us;1244us;1127us;1244us;1129us;1244us;1131us;1244us;1133us;1244us;1137us;1244us;1147us;1244us;1154us;1244us;1160us;1244us;1162us;1244us;1167us;1244us;1171us;1244us;1174us;1244us;1178us;1244us;1181us;1244us;1184us;1244us;1186us;1244us;1189us;1244us;1191us;1244us;1240us;1244us;1242us;1244us;1246us;1244us;1248us;1244us;1250us;1244us;1252us;1244us;1254us;1244us;1256us;1244us;1258us;1244us;1260us;1244us;1262us;1244us;1264us;1244us;1266us;1244us;1268us;1244us;1270us;1244us;1272us;1244us;1274us;1244us;1276us;1244us;1278us;1244us;1280us;1244us;1282us;1244us;1284us;1244us;1286us;1244us;1287us;1244us;1288us;1244us;1289us;1244us;1292us;1244us;1302us;1244us;1327us;1244us;1328us;1244us;1332us;1244us;1334us;1244us;1337us;1244us;1338us;1244us;1340us;1244us;1343us;1244us;1345us;1244us;1347us;1244us;1349us;1244us;1431us;1244us;1438us;1245us;1445us;1244us;1452us;1244us;1469us;1244us;1476us;1244us;1477us;1244us;1483us;1244us;1489us;1244us;1490us;1244us;1491us;1244us;1503us;1244us;1509us;1244us;1519us;1244us;1532us;1244us;1534us;1244us;1537us;1244us;1538us;1244us;1564us;1244us;1569us;1244us;1594us;1244us;1636us;1244us;1641us;1244us;2021us;1244us;2025us;1244us;134us;65535us;6us;1241us;31us;1241us;114us;1241us;116us;1241us;237us;1241us;251us;1241us;274us;1241us;422us;1241us;427us;1241us;468us;1241us;491us;1241us;753us;1241us;759us;1241us;809us;1241us;813us;1241us;823us;1241us;1030us;1241us;1036us;1241us;1052us;1241us;1054us;1241us;1057us;1241us;1060us;1241us;1079us;1241us;1084us;1241us;1090us;1241us;1093us;1241us;1096us;1241us;1102us;1241us;1106us;1241us;1110us;1241us;1116us;1241us;1118us;1241us;1123us;1241us;1125us;1241us;1127us;1241us;1129us;1241us;1131us;1241us;1133us;1241us;1137us;1241us;1147us;1241us;1154us;1241us;1160us;1241us;1162us;1241us;1167us;1241us;1171us;1241us;1174us;1241us;1178us;1241us;1181us;1241us;1184us;1241us;1186us;1241us;1189us;1241us;1191us;1241us;1240us;1241us;1242us;1241us;1246us;1241us;1248us;1241us;1250us;1241us;1252us;1241us;1254us;1241us;1256us;1241us;1258us;1241us;1260us;1241us;1262us;1241us;1264us;1241us;1266us;1241us;1268us;1241us;1270us;1241us;1272us;1241us;1274us;1241us;1276us;1241us;1278us;1241us;1280us;1241us;1282us;1241us;1284us;1241us;1286us;1241us;1287us;1241us;1288us;1241us;1289us;1241us;1292us;1241us;1302us;1241us;1327us;1241us;1328us;1241us;1332us;1241us;1334us;1241us;1337us;1241us;1338us;1241us;1340us;1241us;1343us;1241us;1345us;1241us;1347us;1241us;1349us;1241us;1351us;1355us;1352us;1355us;1353us;1355us;1354us;1355us;1356us;1358us;1357us;1358us;1359us;1361us;1360us;1361us;1362us;1364us;1363us;1364us;1365us;1367us;1366us;1367us;1368us;1370us;1369us;1370us;1371us;1373us;1372us;1373us;1386us;1387us;1388us;1389us;1431us;1241us;1438us;1241us;1445us;1241us;1452us;1241us;1469us;1241us;1476us;1241us;1477us;1241us;1483us;1241us;1489us;1241us;1490us;1241us;1491us;1241us;1503us;1241us;1509us;1241us;1519us;1241us;1532us;1241us;1534us;1241us;1537us;1241us;1538us;1241us;1564us;1241us;1569us;1241us;1594us;1241us;1636us;1241us;1641us;1241us;2021us;1241us;2025us;1241us;135us;65535us;6us;1390us;31us;1390us;114us;1390us;116us;1390us;237us;1390us;251us;1390us;274us;1390us;422us;1390us;427us;1390us;468us;1390us;491us;1390us;753us;1390us;759us;1390us;809us;1390us;813us;1390us;823us;1390us;1030us;1390us;1036us;1390us;1052us;1390us;1054us;1390us;1057us;1390us;1060us;1390us;1079us;1390us;1084us;1390us;1090us;1390us;1093us;1390us;1096us;1390us;1102us;1390us;1106us;1390us;1110us;1390us;1116us;1390us;1118us;1390us;1123us;1390us;1125us;1390us;1127us;1390us;1129us;1390us;1131us;1390us;1133us;1390us;1137us;1390us;1147us;1390us;1154us;1390us;1160us;1390us;1162us;1390us;1167us;1390us;1171us;1390us;1174us;1390us;1178us;1390us;1181us;1390us;1184us;1390us;1186us;1390us;1189us;1390us;1191us;1390us;1240us;1390us;1242us;1390us;1246us;1390us;1248us;1390us;1250us;1390us;1252us;1390us;1254us;1390us;1256us;1390us;1258us;1390us;1260us;1390us;1262us;1390us;1264us;1390us;1266us;1390us;1268us;1390us;1270us;1390us;1272us;1390us;1274us;1390us;1276us;1390us;1278us;1390us;1280us;1390us;1282us;1390us;1284us;1390us;1286us;1390us;1287us;1390us;1288us;1390us;1289us;1390us;1292us;1390us;1302us;1390us;1327us;1390us;1328us;1390us;1332us;1390us;1334us;1390us;1337us;1390us;1338us;1390us;1340us;1390us;1343us;1390us;1345us;1390us;1347us;1390us;1349us;1390us;1351us;1390us;1352us;1390us;1353us;1390us;1354us;1390us;1356us;1390us;1357us;1390us;1359us;1390us;1360us;1390us;1362us;1390us;1363us;1390us;1365us;1390us;1366us;1390us;1368us;1390us;1369us;1390us;1371us;1390us;1372us;1390us;1386us;1390us;1388us;1390us;1431us;1390us;1438us;1390us;1445us;1390us;1452us;1390us;1469us;1390us;1476us;1390us;1477us;1390us;1483us;1390us;1489us;1390us;1490us;1390us;1491us;1390us;1503us;1390us;1509us;1390us;1519us;1391us;1532us;1390us;1534us;1390us;1537us;1390us;1538us;1390us;1564us;1390us;1569us;1390us;1594us;1390us;1627us;1392us;1636us;1390us;1641us;1390us;2021us;1390us;2025us;1390us;4us;65535us;1390us;1393us;1391us;1393us;1392us;1393us;1544us;1547us;148us;65535us;6us;1394us;31us;1394us;114us;1394us;116us;1394us;237us;1394us;251us;1394us;274us;1394us;422us;1394us;427us;1394us;468us;1394us;491us;1394us;690us;691us;701us;702us;753us;1394us;759us;1394us;809us;1394us;813us;1394us;823us;1394us;1030us;1394us;1036us;1394us;1052us;1394us;1054us;1394us;1057us;1394us;1060us;1394us;1079us;1394us;1084us;1394us;1090us;1394us;1093us;1394us;1096us;1394us;1102us;1394us;1106us;1394us;1110us;1394us;1116us;1394us;1118us;1394us;1123us;1394us;1125us;1394us;1127us;1394us;1129us;1394us;1131us;1394us;1133us;1394us;1137us;1394us;1147us;1394us;1154us;1394us;1160us;1394us;1162us;1394us;1167us;1394us;1171us;1394us;1174us;1394us;1178us;1394us;1181us;1394us;1184us;1394us;1186us;1394us;1189us;1394us;1191us;1394us;1240us;1394us;1242us;1394us;1246us;1394us;1248us;1394us;1250us;1394us;1252us;1394us;1254us;1394us;1256us;1394us;1258us;1394us;1260us;1394us;1262us;1394us;1264us;1394us;1266us;1394us;1268us;1394us;1270us;1394us;1272us;1394us;1274us;1394us;1276us;1394us;1278us;1394us;1280us;1394us;1282us;1394us;1284us;1394us;1286us;1394us;1287us;1394us;1288us;1394us;1289us;1394us;1292us;1394us;1302us;1394us;1327us;1394us;1328us;1394us;1332us;1394us;1334us;1394us;1337us;1394us;1338us;1394us;1340us;1394us;1343us;1394us;1345us;1394us;1347us;1394us;1349us;1394us;1351us;1394us;1352us;1394us;1353us;1394us;1354us;1394us;1356us;1394us;1357us;1394us;1359us;1394us;1360us;1394us;1362us;1394us;1363us;1394us;1365us;1394us;1366us;1394us;1368us;1394us;1369us;1394us;1371us;1394us;1372us;1394us;1386us;1394us;1388us;1394us;1390us;1397us;1391us;1397us;1392us;1397us;1395us;1396us;1400us;1401us;1408us;1404us;1409us;1405us;1412us;1406us;1413us;1406us;1431us;1394us;1438us;1394us;1445us;1394us;1452us;1394us;1469us;1394us;1476us;1394us;1477us;1394us;1483us;1394us;1489us;1394us;1490us;1394us;1491us;1394us;1503us;1394us;1509us;1394us;1519us;1394us;1532us;1394us;1534us;1394us;1537us;1394us;1538us;1394us;1544us;1397us;1564us;1394us;1569us;1394us;1594us;1394us;1627us;1394us;1636us;1394us;1641us;1394us;1864us;1407us;2021us;1394us;2025us;1394us;3us;65535us;1382us;1383us;1419us;1420us;1422us;1423us;155us;65535us;6us;1441us;31us;1441us;114us;1441us;116us;1441us;237us;1441us;251us;1441us;274us;1441us;331us;1548us;335us;1548us;340us;1548us;422us;1441us;427us;1441us;468us;1441us;491us;1441us;525us;526us;690us;1441us;701us;1441us;753us;1441us;759us;1441us;809us;1441us;813us;1441us;823us;1441us;1030us;1441us;1036us;1441us;1052us;1441us;1054us;1441us;1057us;1441us;1060us;1441us;1079us;1441us;1084us;1441us;1090us;1441us;1093us;1441us;1096us;1441us;1102us;1441us;1106us;1441us;1110us;1441us;1116us;1441us;1118us;1441us;1123us;1441us;1125us;1441us;1127us;1441us;1129us;1441us;1131us;1441us;1133us;1441us;1137us;1441us;1147us;1441us;1154us;1441us;1160us;1441us;1162us;1441us;1167us;1441us;1171us;1441us;1174us;1441us;1178us;1441us;1181us;1441us;1184us;1441us;1186us;1441us;1189us;1441us;1191us;1441us;1240us;1441us;1242us;1441us;1246us;1441us;1248us;1441us;1250us;1441us;1252us;1441us;1254us;1441us;1256us;1441us;1258us;1441us;1260us;1441us;1262us;1441us;1264us;1441us;1266us;1441us;1268us;1441us;1270us;1441us;1272us;1441us;1274us;1441us;1276us;1441us;1278us;1441us;1280us;1441us;1282us;1441us;1284us;1441us;1286us;1441us;1287us;1441us;1288us;1441us;1289us;1441us;1292us;1441us;1302us;1441us;1327us;1441us;1328us;1441us;1332us;1441us;1334us;1441us;1337us;1441us;1338us;1441us;1340us;1441us;1343us;1441us;1345us;1441us;1347us;1441us;1349us;1441us;1351us;1441us;1352us;1441us;1353us;1441us;1354us;1441us;1356us;1441us;1357us;1441us;1359us;1441us;1360us;1441us;1362us;1441us;1363us;1441us;1365us;1441us;1366us;1441us;1368us;1441us;1369us;1441us;1371us;1441us;1372us;1441us;1378us;1380us;1379us;1381us;1386us;1441us;1388us;1441us;1390us;1441us;1391us;1441us;1392us;1441us;1395us;1441us;1400us;1441us;1408us;1441us;1409us;1441us;1412us;1441us;1413us;1441us;1431us;1441us;1438us;1441us;1445us;1441us;1452us;1441us;1469us;1441us;1476us;1441us;1477us;1441us;1483us;1441us;1489us;1441us;1490us;1441us;1491us;1441us;1503us;1441us;1509us;1441us;1519us;1441us;1532us;1441us;1534us;1441us;1537us;1441us;1538us;1441us;1544us;1441us;1559us;1548us;1564us;1441us;1569us;1441us;1594us;1441us;1627us;1441us;1636us;1441us;1641us;1441us;1864us;1441us;2021us;1441us;2025us;1441us;155us;65535us;6us;1468us;31us;1468us;114us;1468us;116us;1468us;237us;1468us;251us;1468us;274us;1468us;331us;1468us;335us;1468us;340us;1468us;422us;1468us;427us;1468us;468us;1468us;491us;1468us;525us;1468us;690us;1468us;701us;1468us;753us;1468us;759us;1468us;809us;1468us;813us;1468us;823us;1468us;1030us;1468us;1036us;1468us;1052us;1468us;1054us;1468us;1057us;1468us;1060us;1468us;1079us;1468us;1084us;1468us;1090us;1468us;1093us;1468us;1096us;1468us;1102us;1468us;1106us;1468us;1110us;1468us;1116us;1468us;1118us;1468us;1123us;1468us;1125us;1468us;1127us;1468us;1129us;1468us;1131us;1468us;1133us;1468us;1137us;1468us;1147us;1468us;1154us;1468us;1160us;1468us;1162us;1468us;1167us;1468us;1171us;1468us;1174us;1468us;1178us;1468us;1181us;1468us;1184us;1468us;1186us;1468us;1189us;1468us;1191us;1468us;1240us;1468us;1242us;1468us;1246us;1468us;1248us;1468us;1250us;1468us;1252us;1468us;1254us;1468us;1256us;1468us;1258us;1468us;1260us;1468us;1262us;1468us;1264us;1468us;1266us;1468us;1268us;1468us;1270us;1468us;1272us;1468us;1274us;1468us;1276us;1468us;1278us;1468us;1280us;1468us;1282us;1468us;1284us;1468us;1286us;1468us;1287us;1468us;1288us;1468us;1289us;1468us;1292us;1468us;1302us;1468us;1327us;1468us;1328us;1468us;1332us;1468us;1334us;1468us;1337us;1468us;1338us;1468us;1340us;1468us;1343us;1468us;1345us;1468us;1347us;1468us;1349us;1468us;1351us;1468us;1352us;1468us;1353us;1468us;1354us;1468us;1356us;1468us;1357us;1468us;1359us;1468us;1360us;1468us;1362us;1468us;1363us;1468us;1365us;1468us;1366us;1468us;1368us;1468us;1369us;1468us;1371us;1468us;1372us;1468us;1378us;1468us;1379us;1468us;1386us;1468us;1388us;1468us;1390us;1468us;1391us;1468us;1392us;1468us;1395us;1468us;1400us;1468us;1408us;1468us;1409us;1468us;1412us;1468us;1413us;1468us;1431us;1468us;1438us;1468us;1445us;1468us;1452us;1468us;1469us;1468us;1476us;1468us;1477us;1468us;1483us;1468us;1489us;1468us;1490us;1468us;1491us;1468us;1503us;1468us;1509us;1468us;1519us;1468us;1532us;1468us;1534us;1468us;1537us;1468us;1538us;1468us;1544us;1468us;1559us;1468us;1564us;1468us;1569us;1468us;1594us;1468us;1627us;1468us;1636us;1468us;1641us;1468us;1864us;1468us;2021us;1468us;2025us;1468us;207us;65535us;6us;1466us;31us;1466us;114us;1466us;116us;1466us;237us;1466us;251us;1466us;274us;1466us;331us;1466us;335us;1466us;340us;1466us;419us;951us;422us;1466us;424us;951us;427us;1466us;465us;951us;468us;1466us;491us;1466us;525us;1466us;690us;1466us;701us;1466us;753us;1466us;759us;1466us;806us;951us;809us;1466us;813us;1466us;823us;1466us;899us;951us;901us;951us;902us;951us;906us;951us;907us;951us;910us;951us;912us;951us;913us;951us;922us;951us;926us;951us;927us;951us;929us;951us;931us;951us;934us;951us;936us;951us;941us;951us;945us;951us;947us;951us;949us;951us;957us;951us;960us;951us;971us;951us;979us;951us;1000us;951us;1002us;951us;1008us;951us;1009us;951us;1011us;951us;1012us;951us;1015us;951us;1017us;951us;1018us;951us;1024us;951us;1028us;951us;1030us;1466us;1036us;1466us;1052us;1466us;1054us;1466us;1057us;1466us;1060us;1466us;1078us;951us;1079us;1466us;1083us;951us;1084us;1466us;1090us;1466us;1093us;1466us;1096us;1466us;1102us;1466us;1106us;1466us;1110us;1466us;1116us;1466us;1118us;1466us;1123us;1466us;1125us;1466us;1127us;1466us;1129us;1466us;1131us;1466us;1133us;1466us;1135us;951us;1137us;1466us;1147us;1466us;1154us;1466us;1160us;1466us;1162us;1466us;1166us;951us;1167us;1466us;1171us;1466us;1173us;951us;1174us;1466us;1178us;1466us;1181us;1466us;1184us;1466us;1186us;1466us;1189us;1466us;1191us;1466us;1240us;1466us;1242us;1466us;1246us;1466us;1248us;1466us;1250us;1466us;1252us;1466us;1254us;1466us;1256us;1466us;1258us;1466us;1260us;1466us;1262us;1466us;1264us;1466us;1266us;1466us;1268us;1466us;1270us;1466us;1272us;1466us;1274us;1466us;1276us;1466us;1278us;1466us;1280us;1466us;1282us;1466us;1284us;1466us;1286us;1466us;1287us;1466us;1288us;1466us;1289us;1466us;1292us;1466us;1302us;1466us;1305us;951us;1307us;951us;1313us;951us;1320us;951us;1322us;951us;1327us;1466us;1328us;1466us;1332us;1466us;1334us;1466us;1337us;1466us;1338us;1466us;1340us;1466us;1343us;1466us;1345us;1466us;1347us;1466us;1349us;1466us;1351us;1466us;1352us;1466us;1353us;1466us;1354us;1466us;1356us;1466us;1357us;1466us;1359us;1466us;1360us;1466us;1362us;1466us;1363us;1466us;1365us;1466us;1366us;1466us;1368us;1466us;1369us;1466us;1371us;1466us;1372us;1466us;1378us;1466us;1379us;1466us;1386us;1466us;1388us;1466us;1390us;1466us;1391us;1466us;1392us;1466us;1395us;1466us;1400us;1466us;1408us;1466us;1409us;1466us;1412us;1466us;1413us;1466us;1431us;1466us;1438us;1466us;1445us;1466us;1452us;1466us;1469us;1466us;1476us;1466us;1477us;1466us;1483us;1466us;1489us;1466us;1490us;1466us;1491us;1466us;1503us;1466us;1509us;1466us;1519us;1466us;1532us;1466us;1534us;1466us;1537us;1466us;1538us;1466us;1544us;1466us;1559us;1466us;1564us;1466us;1569us;1466us;1594us;1466us;1627us;1466us;1634us;951us;1636us;1466us;1639us;951us;1641us;1466us;1651us;951us;1653us;951us;1864us;1466us;2021us;1466us;2025us;1466us;155us;65535us;6us;1467us;31us;1467us;114us;1467us;116us;1467us;237us;1467us;251us;1467us;274us;1467us;331us;1467us;335us;1467us;340us;1467us;422us;1467us;427us;1467us;468us;1467us;491us;1467us;525us;1467us;690us;1467us;701us;1467us;753us;1467us;759us;1467us;809us;1467us;813us;1467us;823us;1467us;1030us;1467us;1036us;1467us;1052us;1467us;1054us;1467us;1057us;1467us;1060us;1467us;1079us;1467us;1084us;1467us;1090us;1467us;1093us;1467us;1096us;1467us;1102us;1467us;1106us;1467us;1110us;1467us;1116us;1467us;1118us;1467us;1123us;1467us;1125us;1467us;1127us;1467us;1129us;1467us;1131us;1467us;1133us;1467us;1137us;1467us;1147us;1467us;1154us;1467us;1160us;1467us;1162us;1467us;1167us;1467us;1171us;1467us;1174us;1467us;1178us;1467us;1181us;1467us;1184us;1467us;1186us;1467us;1189us;1467us;1191us;1467us;1240us;1467us;1242us;1467us;1246us;1467us;1248us;1467us;1250us;1467us;1252us;1467us;1254us;1467us;1256us;1467us;1258us;1467us;1260us;1467us;1262us;1467us;1264us;1467us;1266us;1467us;1268us;1467us;1270us;1467us;1272us;1467us;1274us;1467us;1276us;1467us;1278us;1467us;1280us;1467us;1282us;1467us;1284us;1467us;1286us;1467us;1287us;1467us;1288us;1467us;1289us;1467us;1292us;1467us;1302us;1467us;1327us;1467us;1328us;1467us;1332us;1467us;1334us;1467us;1337us;1467us;1338us;1467us;1340us;1467us;1343us;1467us;1345us;1467us;1347us;1467us;1349us;1467us;1351us;1467us;1352us;1467us;1353us;1467us;1354us;1467us;1356us;1467us;1357us;1467us;1359us;1467us;1360us;1467us;1362us;1467us;1363us;1467us;1365us;1467us;1366us;1467us;1368us;1467us;1369us;1467us;1371us;1467us;1372us;1467us;1378us;1467us;1379us;1467us;1386us;1467us;1388us;1467us;1390us;1467us;1391us;1467us;1392us;1467us;1395us;1467us;1400us;1467us;1408us;1467us;1409us;1467us;1412us;1467us;1413us;1467us;1431us;1467us;1438us;1467us;1445us;1467us;1452us;1467us;1469us;1467us;1476us;1467us;1477us;1467us;1483us;1467us;1489us;1467us;1490us;1467us;1491us;1467us;1503us;1467us;1509us;1467us;1519us;1467us;1532us;1467us;1534us;1467us;1537us;1467us;1538us;1467us;1544us;1467us;1559us;1467us;1564us;1467us;1569us;1467us;1594us;1467us;1627us;1467us;1636us;1467us;1641us;1467us;1864us;1467us;2021us;1467us;2025us;1467us;155us;65535us;6us;1459us;31us;1459us;114us;1459us;116us;1459us;237us;1459us;251us;1459us;274us;1459us;331us;1459us;335us;1459us;340us;1459us;422us;1459us;427us;1459us;468us;1459us;491us;1459us;525us;1459us;690us;1459us;701us;1459us;753us;1459us;759us;1459us;809us;1459us;813us;1459us;823us;1459us;1030us;1459us;1036us;1459us;1052us;1459us;1054us;1459us;1057us;1459us;1060us;1459us;1079us;1459us;1084us;1459us;1090us;1459us;1093us;1459us;1096us;1459us;1102us;1459us;1106us;1459us;1110us;1459us;1116us;1459us;1118us;1459us;1123us;1459us;1125us;1459us;1127us;1459us;1129us;1459us;1131us;1459us;1133us;1459us;1137us;1459us;1147us;1459us;1154us;1459us;1160us;1459us;1162us;1459us;1167us;1459us;1171us;1459us;1174us;1459us;1178us;1459us;1181us;1459us;1184us;1459us;1186us;1459us;1189us;1459us;1191us;1459us;1240us;1459us;1242us;1459us;1246us;1459us;1248us;1459us;1250us;1459us;1252us;1459us;1254us;1459us;1256us;1459us;1258us;1459us;1260us;1459us;1262us;1459us;1264us;1459us;1266us;1459us;1268us;1459us;1270us;1459us;1272us;1459us;1274us;1459us;1276us;1459us;1278us;1459us;1280us;1459us;1282us;1459us;1284us;1459us;1286us;1459us;1287us;1459us;1288us;1459us;1289us;1459us;1292us;1459us;1302us;1459us;1327us;1459us;1328us;1459us;1332us;1459us;1334us;1459us;1337us;1459us;1338us;1459us;1340us;1459us;1343us;1459us;1345us;1459us;1347us;1459us;1349us;1459us;1351us;1459us;1352us;1459us;1353us;1459us;1354us;1459us;1356us;1459us;1357us;1459us;1359us;1459us;1360us;1459us;1362us;1459us;1363us;1459us;1365us;1459us;1366us;1459us;1368us;1459us;1369us;1459us;1371us;1459us;1372us;1459us;1378us;1459us;1379us;1459us;1386us;1459us;1388us;1459us;1390us;1459us;1391us;1459us;1392us;1459us;1395us;1459us;1400us;1459us;1408us;1459us;1409us;1459us;1412us;1459us;1413us;1459us;1431us;1459us;1438us;1459us;1445us;1459us;1452us;1459us;1469us;1459us;1476us;1459us;1477us;1459us;1483us;1459us;1489us;1459us;1490us;1459us;1491us;1459us;1503us;1459us;1509us;1459us;1519us;1459us;1532us;1459us;1534us;1459us;1537us;1459us;1538us;1459us;1544us;1459us;1559us;1459us;1564us;1459us;1569us;1459us;1594us;1459us;1627us;1459us;1636us;1459us;1641us;1459us;1864us;1459us;2021us;1459us;2025us;1459us;3us;65535us;1489us;1493us;1490us;1493us;1491us;1493us;3us;65535us;1489us;1505us;1490us;1505us;1491us;1505us;1us;65535us;1490us;1515us;155us;65535us;6us;1460us;31us;1460us;114us;1460us;116us;1460us;237us;1460us;251us;1460us;274us;1460us;331us;1460us;335us;1460us;340us;1460us;422us;1460us;427us;1460us;468us;1460us;491us;1460us;525us;1460us;690us;1460us;701us;1460us;753us;1460us;759us;1460us;809us;1460us;813us;1460us;823us;1460us;1030us;1460us;1036us;1460us;1052us;1460us;1054us;1460us;1057us;1460us;1060us;1460us;1079us;1460us;1084us;1460us;1090us;1460us;1093us;1460us;1096us;1460us;1102us;1460us;1106us;1460us;1110us;1460us;1116us;1460us;1118us;1460us;1123us;1460us;1125us;1460us;1127us;1460us;1129us;1460us;1131us;1460us;1133us;1460us;1137us;1460us;1147us;1460us;1154us;1460us;1160us;1460us;1162us;1460us;1167us;1460us;1171us;1460us;1174us;1460us;1178us;1460us;1181us;1460us;1184us;1460us;1186us;1460us;1189us;1460us;1191us;1460us;1240us;1460us;1242us;1460us;1246us;1460us;1248us;1460us;1250us;1460us;1252us;1460us;1254us;1460us;1256us;1460us;1258us;1460us;1260us;1460us;1262us;1460us;1264us;1460us;1266us;1460us;1268us;1460us;1270us;1460us;1272us;1460us;1274us;1460us;1276us;1460us;1278us;1460us;1280us;1460us;1282us;1460us;1284us;1460us;1286us;1460us;1287us;1460us;1288us;1460us;1289us;1460us;1292us;1460us;1302us;1460us;1327us;1460us;1328us;1460us;1332us;1460us;1334us;1460us;1337us;1460us;1338us;1460us;1340us;1460us;1343us;1460us;1345us;1460us;1347us;1460us;1349us;1460us;1351us;1460us;1352us;1460us;1353us;1460us;1354us;1460us;1356us;1460us;1357us;1460us;1359us;1460us;1360us;1460us;1362us;1460us;1363us;1460us;1365us;1460us;1366us;1460us;1368us;1460us;1369us;1460us;1371us;1460us;1372us;1460us;1378us;1460us;1379us;1460us;1386us;1460us;1388us;1460us;1390us;1460us;1391us;1460us;1392us;1460us;1395us;1460us;1400us;1460us;1408us;1460us;1409us;1460us;1412us;1460us;1413us;1460us;1431us;1460us;1438us;1460us;1445us;1460us;1452us;1460us;1469us;1460us;1476us;1460us;1477us;1460us;1483us;1460us;1489us;1460us;1490us;1460us;1491us;1460us;1503us;1460us;1509us;1460us;1519us;1460us;1532us;1460us;1534us;1460us;1537us;1460us;1538us;1460us;1544us;1460us;1559us;1460us;1564us;1460us;1569us;1460us;1594us;1460us;1627us;1460us;1636us;1460us;1641us;1460us;1864us;1460us;2021us;1460us;2025us;1460us;1us;65535us;1519us;1520us;1us;65535us;1431us;1432us;1us;65535us;1483us;1484us;1us;65535us;1519us;1528us;1us;65535us;1144us;1145us;1us;65535us;1135us;1136us;1us;65535us;1135us;1146us;1us;65535us;1228us;1538us;3us;65535us;1489us;1512us;1490us;1512us;1491us;1512us;1us;65535us;1543us;1544us;4us;65535us;331us;332us;335us;336us;340us;341us;1559us;1560us;1us;65535us;1542us;1543us;1us;65535us;1544us;1545us;1us;65535us;1519us;1526us;2us;65535us;1519us;1563us;1627us;1628us;6us;65535us;1561us;1562us;1566us;1567us;1571us;1572us;1575us;1576us;1577us;1578us;1581us;1582us;6us;65535us;1561us;1585us;1566us;1585us;1571us;1585us;1575us;1585us;1577us;1584us;1581us;1585us;3us;65535us;1573us;1593us;1577us;1593us;1585us;1593us;5us;65535us;1560us;1561us;1565us;1566us;1570us;1571us;1574us;1575us;1580us;1581us;3us;65535us;1573us;1574us;1577us;1580us;1585us;1592us;1us;65535us;1519us;1527us;1us;65535us;1519us;1598us;1us;65535us;1620us;1621us;2us;65535us;1598us;1599us;1620us;1605us;1us;65535us;1602us;1603us;4us;65535us;1600us;1601us;1613us;1614us;1615us;1616us;1617us;1618us;5us;65535us;1600us;1615us;1602us;1613us;1613us;1615us;1615us;1615us;1617us;1615us;155us;65535us;6us;1461us;31us;1461us;114us;1461us;116us;1461us;237us;1461us;251us;1461us;274us;1461us;331us;1461us;335us;1461us;340us;1461us;422us;1461us;427us;1461us;468us;1461us;491us;1461us;525us;1461us;690us;1461us;701us;1461us;753us;1461us;759us;1461us;809us;1461us;813us;1461us;823us;1461us;1030us;1461us;1036us;1461us;1052us;1461us;1054us;1461us;1057us;1461us;1060us;1461us;1079us;1461us;1084us;1461us;1090us;1461us;1093us;1461us;1096us;1461us;1102us;1461us;1106us;1461us;1110us;1461us;1116us;1461us;1118us;1461us;1123us;1461us;1125us;1461us;1127us;1461us;1129us;1461us;1131us;1461us;1133us;1461us;1137us;1461us;1147us;1461us;1154us;1461us;1160us;1461us;1162us;1461us;1167us;1461us;1171us;1461us;1174us;1461us;1178us;1461us;1181us;1461us;1184us;1461us;1186us;1461us;1189us;1461us;1191us;1461us;1240us;1461us;1242us;1461us;1246us;1461us;1248us;1461us;1250us;1461us;1252us;1461us;1254us;1461us;1256us;1461us;1258us;1461us;1260us;1461us;1262us;1461us;1264us;1461us;1266us;1461us;1268us;1461us;1270us;1461us;1272us;1461us;1274us;1461us;1276us;1461us;1278us;1461us;1280us;1461us;1282us;1461us;1284us;1461us;1286us;1461us;1287us;1461us;1288us;1461us;1289us;1461us;1292us;1461us;1302us;1461us;1327us;1461us;1328us;1461us;1332us;1461us;1334us;1461us;1337us;1461us;1338us;1461us;1340us;1461us;1343us;1461us;1345us;1461us;1347us;1461us;1349us;1461us;1351us;1461us;1352us;1461us;1353us;1461us;1354us;1461us;1356us;1461us;1357us;1461us;1359us;1461us;1360us;1461us;1362us;1461us;1363us;1461us;1365us;1461us;1366us;1461us;1368us;1461us;1369us;1461us;1371us;1461us;1372us;1461us;1378us;1461us;1379us;1461us;1386us;1461us;1388us;1461us;1390us;1461us;1391us;1461us;1392us;1461us;1395us;1461us;1400us;1461us;1408us;1461us;1409us;1461us;1412us;1461us;1413us;1461us;1431us;1461us;1438us;1461us;1445us;1461us;1452us;1461us;1469us;1461us;1476us;1461us;1477us;1461us;1483us;1461us;1489us;1461us;1490us;1461us;1491us;1461us;1503us;1461us;1509us;1461us;1519us;1461us;1532us;1461us;1534us;1461us;1537us;1461us;1538us;1461us;1544us;1461us;1559us;1461us;1564us;1461us;1569us;1461us;1594us;1461us;1627us;1461us;1636us;1461us;1641us;1461us;1864us;1461us;2021us;1461us;2025us;1461us;157us;65535us;6us;1626us;31us;1626us;114us;1626us;116us;1626us;237us;1626us;251us;1626us;274us;1626us;331us;1626us;335us;1626us;340us;1626us;422us;1626us;427us;1626us;468us;1626us;491us;1626us;525us;1626us;690us;1626us;701us;1626us;753us;1626us;759us;1626us;809us;1626us;813us;1626us;823us;1626us;1030us;1626us;1036us;1626us;1052us;1626us;1054us;1626us;1057us;1626us;1060us;1626us;1079us;1626us;1084us;1626us;1090us;1626us;1093us;1626us;1096us;1626us;1102us;1626us;1106us;1626us;1110us;1626us;1116us;1626us;1118us;1626us;1123us;1626us;1125us;1626us;1127us;1626us;1129us;1626us;1131us;1626us;1133us;1626us;1137us;1626us;1147us;1626us;1154us;1626us;1160us;1626us;1162us;1626us;1167us;1626us;1171us;1626us;1174us;1626us;1178us;1626us;1181us;1626us;1184us;1626us;1186us;1626us;1189us;1626us;1191us;1626us;1240us;1626us;1242us;1626us;1246us;1626us;1248us;1626us;1250us;1626us;1252us;1626us;1254us;1626us;1256us;1626us;1258us;1626us;1260us;1626us;1262us;1626us;1264us;1626us;1266us;1626us;1268us;1626us;1270us;1626us;1272us;1626us;1274us;1626us;1276us;1626us;1278us;1626us;1280us;1626us;1282us;1626us;1284us;1626us;1286us;1626us;1287us;1626us;1288us;1626us;1289us;1626us;1292us;1626us;1302us;1626us;1327us;1626us;1328us;1626us;1332us;1626us;1334us;1626us;1337us;1626us;1338us;1626us;1340us;1626us;1343us;1626us;1345us;1626us;1347us;1626us;1349us;1626us;1351us;1626us;1352us;1626us;1353us;1626us;1354us;1626us;1356us;1626us;1357us;1626us;1359us;1626us;1360us;1626us;1362us;1626us;1363us;1626us;1365us;1626us;1366us;1626us;1368us;1626us;1369us;1626us;1371us;1626us;1372us;1626us;1378us;1626us;1379us;1626us;1386us;1626us;1388us;1626us;1390us;1626us;1391us;1626us;1392us;1626us;1395us;1626us;1400us;1626us;1408us;1626us;1409us;1626us;1412us;1626us;1413us;1626us;1431us;1626us;1437us;1625us;1438us;1626us;1445us;1626us;1452us;1626us;1469us;1626us;1476us;1626us;1477us;1626us;1483us;1626us;1489us;1626us;1490us;1626us;1491us;1626us;1503us;1626us;1509us;1626us;1519us;1626us;1532us;1626us;1534us;1626us;1537us;1626us;1538us;1626us;1544us;1626us;1559us;1626us;1564us;1626us;1569us;1626us;1594us;1626us;1624us;1625us;1627us;1626us;1636us;1626us;1641us;1626us;1864us;1626us;2021us;1626us;2025us;1626us;116us;65535us;6us;1101us;31us;1101us;114us;1101us;116us;1101us;237us;1101us;251us;1101us;274us;1101us;422us;1101us;427us;1101us;468us;1101us;491us;1101us;753us;1101us;759us;1101us;809us;1101us;813us;1101us;823us;1101us;1030us;1101us;1036us;1101us;1052us;1101us;1054us;1101us;1057us;1101us;1060us;1101us;1079us;1101us;1084us;1101us;1090us;1101us;1093us;1101us;1096us;1101us;1102us;1101us;1106us;1101us;1110us;1101us;1116us;1101us;1118us;1101us;1123us;1101us;1125us;1101us;1127us;1101us;1129us;1101us;1131us;1101us;1133us;1101us;1137us;1101us;1147us;1101us;1154us;1101us;1160us;1101us;1162us;1101us;1167us;1101us;1171us;1101us;1174us;1101us;1178us;1101us;1181us;1101us;1184us;1101us;1186us;1101us;1189us;1101us;1191us;1101us;1240us;1101us;1242us;1101us;1246us;1101us;1248us;1101us;1250us;1101us;1252us;1101us;1254us;1101us;1256us;1101us;1258us;1101us;1260us;1101us;1262us;1101us;1264us;1101us;1266us;1101us;1268us;1101us;1270us;1101us;1272us;1101us;1274us;1101us;1276us;1101us;1278us;1101us;1280us;1101us;1282us;1101us;1284us;1101us;1286us;1101us;1287us;1101us;1288us;1101us;1289us;1101us;1292us;1101us;1302us;1101us;1327us;1101us;1328us;1101us;1332us;1101us;1334us;1101us;1337us;1101us;1338us;1101us;1340us;1101us;1343us;1101us;1345us;1101us;1347us;1101us;1349us;1101us;1431us;1101us;1438us;1101us;1445us;1101us;1452us;1101us;1469us;1101us;1476us;1101us;1477us;1101us;1483us;1101us;1489us;1101us;1490us;1101us;1491us;1101us;1503us;1101us;1509us;1101us;1519us;1101us;1532us;1101us;1534us;1101us;1537us;1101us;1538us;1101us;1564us;1101us;1569us;1101us;1594us;1101us;1636us;1101us;1641us;1101us;2021us;1101us;2025us;1101us;116us;65535us;6us;1100us;31us;1100us;114us;1100us;116us;1100us;237us;1100us;251us;1100us;274us;1100us;422us;1100us;427us;1100us;468us;1100us;491us;1100us;753us;1100us;759us;1100us;809us;1100us;813us;1100us;823us;1100us;1030us;1100us;1036us;1100us;1052us;1100us;1054us;1100us;1057us;1100us;1060us;1100us;1079us;1100us;1084us;1100us;1090us;1100us;1093us;1100us;1096us;1100us;1102us;1100us;1106us;1100us;1110us;1100us;1116us;1100us;1118us;1100us;1123us;1100us;1125us;1100us;1127us;1100us;1129us;1100us;1131us;1100us;1133us;1100us;1137us;1100us;1147us;1100us;1154us;1100us;1160us;1100us;1162us;1100us;1167us;1100us;1171us;1100us;1174us;1100us;1178us;1100us;1181us;1100us;1184us;1100us;1186us;1100us;1189us;1100us;1191us;1100us;1240us;1100us;1242us;1100us;1246us;1100us;1248us;1100us;1250us;1100us;1252us;1100us;1254us;1100us;1256us;1100us;1258us;1100us;1260us;1100us;1262us;1100us;1264us;1100us;1266us;1100us;1268us;1100us;1270us;1100us;1272us;1100us;1274us;1100us;1276us;1100us;1278us;1100us;1280us;1100us;1282us;1100us;1284us;1100us;1286us;1100us;1287us;1100us;1288us;1100us;1289us;1100us;1292us;1100us;1302us;1100us;1327us;1100us;1328us;1100us;1332us;1100us;1334us;1100us;1337us;1100us;1338us;1100us;1340us;1100us;1343us;1100us;1345us;1100us;1347us;1100us;1349us;1100us;1431us;1100us;1438us;1100us;1445us;1100us;1452us;1100us;1469us;1100us;1476us;1100us;1477us;1100us;1483us;1100us;1489us;1100us;1490us;1100us;1491us;1100us;1503us;1100us;1509us;1100us;1519us;1100us;1532us;1100us;1534us;1100us;1537us;1100us;1538us;1100us;1564us;1100us;1569us;1100us;1594us;1100us;1636us;1100us;1641us;1100us;2021us;1100us;2025us;1100us;3us;65535us;873us;874us;1005us;1006us;1046us;1047us;5us;65535us;111us;112us;184us;185us;201us;202us;454us;455us;1660us;1661us;3us;65535us;420us;421us;425us;426us;807us;808us;9us;65535us;111us;1658us;149us;150us;184us;1658us;201us;1658us;385us;386us;454us;1658us;688us;689us;1660us;1658us;1664us;1665us;9us;65535us;111us;1663us;149us;1663us;184us;1663us;201us;1663us;385us;1663us;454us;1663us;688us;1663us;1660us;1663us;1664us;1663us;4us;65535us;1668us;1669us;1671us;1672us;1674us;1675us;1677us;1678us;13us;65535us;111us;1667us;149us;1667us;184us;1667us;201us;1667us;385us;1667us;454us;1667us;688us;1667us;1660us;1667us;1664us;1667us;1668us;1673us;1671us;1673us;1674us;1673us;1677us;1673us;10us;65535us;679us;718us;681us;718us;684us;718us;705us;718us;708us;718us;711us;718us;714us;717us;744us;718us;1700us;1701us;1703us;1704us;33us;65535us;8us;1711us;178us;566us;439us;566us;481us;482us;497us;498us;561us;566us;569us;1850us;640us;641us;643us;644us;653us;1850us;730us;731us;829us;830us;873us;1656us;1005us;1656us;1046us;1656us;1231us;1232us;1234us;1235us;1237us;1238us;1550us;1551us;1553us;1554us;1555us;1850us;1706us;1707us;1709us;1710us;1751us;1850us;1757us;1758us;1760us;1761us;1827us;1890us;1831us;1890us;1837us;1850us;1848us;1849us;1878us;1890us;1880us;1890us;1891us;1892us;1us;65535us;8us;9us;33us;65535us;8us;1705us;178us;1705us;439us;1705us;481us;1705us;497us;1705us;561us;1705us;569us;1705us;640us;1705us;643us;1705us;653us;1705us;730us;1705us;829us;1705us;873us;1705us;1005us;1705us;1046us;1705us;1231us;1705us;1234us;1705us;1237us;1705us;1550us;1705us;1553us;1705us;1555us;1705us;1706us;1705us;1709us;1705us;1751us;1705us;1757us;1705us;1760us;1705us;1827us;1705us;1831us;1705us;1837us;1705us;1848us;1705us;1878us;1705us;1880us;1705us;1891us;1705us;9us;65535us;1714us;1715us;1717us;1718us;1719us;1720us;1722us;1723us;1726us;1727us;1729us;1730us;1731us;1732us;1734us;1735us;1855us;1856us;82us;65535us;8us;1756us;111us;1756us;149us;1756us;178us;1756us;184us;1756us;188us;1756us;190us;1756us;201us;1756us;290us;1756us;385us;1756us;439us;1756us;446us;1756us;454us;1756us;481us;1756us;497us;1756us;561us;1756us;569us;1756us;626us;1756us;630us;1756us;640us;1756us;643us;1756us;653us;1756us;664us;1756us;679us;1756us;681us;1756us;684us;1756us;688us;1756us;705us;1756us;708us;1756us;711us;1756us;714us;1756us;730us;1756us;744us;1756us;829us;1756us;873us;1756us;1005us;1756us;1046us;1756us;1231us;1756us;1234us;1756us;1237us;1756us;1517us;1756us;1550us;1756us;1553us;1756us;1555us;1756us;1619us;1756us;1657us;1756us;1659us;1756us;1660us;1756us;1664us;1756us;1668us;1756us;1671us;1756us;1674us;1756us;1677us;1756us;1679us;1756us;1681us;1756us;1686us;1756us;1690us;1756us;1695us;1756us;1700us;1756us;1703us;1756us;1706us;1756us;1709us;1756us;1714us;1756us;1717us;1756us;1719us;1756us;1722us;1756us;1726us;1756us;1729us;1756us;1731us;1756us;1734us;1756us;1751us;1756us;1757us;1756us;1760us;1756us;1827us;1756us;1831us;1756us;1837us;1756us;1848us;1756us;1854us;1756us;1855us;1756us;1878us;1756us;1880us;1756us;1891us;1756us;117us;65535us;8us;1743us;111us;1743us;149us;1743us;178us;1743us;184us;1743us;188us;1743us;189us;1742us;190us;1743us;191us;1742us;201us;1743us;290us;1743us;291us;1742us;385us;1743us;439us;1743us;446us;1743us;447us;1742us;454us;1743us;481us;1743us;497us;1743us;522us;1743us;561us;1743us;569us;1743us;570us;1743us;613us;1743us;626us;1743us;630us;1743us;635us;1743us;640us;1743us;643us;1743us;653us;1743us;663us;1742us;664us;1743us;665us;1742us;666us;1742us;679us;1743us;681us;1743us;684us;1743us;688us;1743us;705us;1743us;708us;1743us;711us;1743us;714us;1743us;715us;1742us;716us;1742us;730us;1743us;744us;1743us;829us;1743us;873us;1743us;938us;1743us;1005us;1743us;1046us;1743us;1231us;1743us;1234us;1743us;1237us;1743us;1374us;1743us;1375us;1743us;1517us;1743us;1518us;1742us;1550us;1743us;1553us;1743us;1555us;1743us;1557us;1743us;1619us;1743us;1620us;1742us;1657us;1743us;1659us;1743us;1660us;1743us;1664us;1743us;1668us;1743us;1671us;1743us;1674us;1743us;1677us;1743us;1679us;1743us;1680us;1742us;1681us;1743us;1682us;1742us;1686us;1743us;1687us;1742us;1689us;1742us;1690us;1743us;1691us;1742us;1695us;1743us;1696us;1742us;1698us;1742us;1699us;1742us;1700us;1743us;1703us;1743us;1706us;1743us;1709us;1743us;1713us;1742us;1714us;1743us;1717us;1743us;1719us;1743us;1722us;1743us;1725us;1742us;1726us;1743us;1729us;1743us;1731us;1743us;1734us;1743us;1737us;1743us;1739us;1743us;1746us;1742us;1751us;1743us;1753us;1742us;1757us;1743us;1760us;1743us;1827us;1743us;1831us;1743us;1837us;1743us;1839us;1742us;1844us;1743us;1848us;1743us;1854us;1743us;1855us;1743us;1878us;1743us;1880us;1743us;1891us;1743us;117us;65535us;8us;1846us;111us;1846us;149us;1846us;178us;1846us;184us;1846us;188us;1846us;189us;1750us;190us;1846us;191us;1750us;201us;1846us;290us;1846us;291us;1750us;385us;1846us;439us;1846us;446us;1846us;447us;1750us;454us;1846us;481us;1846us;497us;1846us;522us;1846us;561us;1846us;569us;1846us;570us;1846us;613us;1846us;626us;1846us;630us;1846us;635us;1846us;640us;1846us;643us;1846us;653us;1846us;663us;1750us;664us;1846us;665us;1750us;666us;1750us;679us;1846us;681us;1846us;684us;1846us;688us;1846us;705us;1846us;708us;1846us;711us;1846us;714us;1846us;715us;1750us;716us;1750us;730us;1846us;744us;1846us;829us;1846us;873us;1846us;938us;1846us;1005us;1846us;1046us;1846us;1231us;1846us;1234us;1846us;1237us;1846us;1374us;1846us;1375us;1846us;1517us;1846us;1518us;1750us;1550us;1846us;1553us;1846us;1555us;1846us;1557us;1846us;1619us;1846us;1620us;1750us;1657us;1846us;1659us;1846us;1660us;1846us;1664us;1846us;1668us;1846us;1671us;1846us;1674us;1846us;1677us;1846us;1679us;1846us;1680us;1750us;1681us;1846us;1682us;1750us;1686us;1846us;1687us;1750us;1689us;1750us;1690us;1846us;1691us;1750us;1695us;1846us;1696us;1750us;1698us;1750us;1699us;1750us;1700us;1846us;1703us;1846us;1706us;1846us;1709us;1846us;1713us;1750us;1714us;1846us;1717us;1846us;1719us;1846us;1722us;1846us;1725us;1750us;1726us;1846us;1729us;1846us;1731us;1846us;1734us;1846us;1737us;1846us;1739us;1846us;1746us;1750us;1751us;1846us;1753us;1754us;1757us;1846us;1760us;1846us;1827us;1846us;1831us;1846us;1837us;1846us;1839us;1840us;1844us;1846us;1848us;1846us;1854us;1846us;1855us;1846us;1878us;1846us;1880us;1846us;1891us;1846us;82us;65535us;8us;1713us;111us;1689us;149us;1689us;178us;1713us;184us;1689us;188us;189us;190us;191us;201us;1689us;290us;291us;385us;1689us;439us;1713us;446us;447us;454us;1689us;481us;1713us;497us;1713us;561us;1713us;569us;1713us;626us;663us;630us;663us;640us;1713us;643us;1713us;653us;666us;664us;665us;679us;716us;681us;716us;684us;716us;688us;1689us;705us;716us;708us;716us;711us;716us;714us;715us;730us;1713us;744us;716us;829us;1713us;873us;1713us;1005us;1713us;1046us;1713us;1231us;1713us;1234us;1713us;1237us;1713us;1517us;1518us;1550us;1713us;1553us;1713us;1555us;1713us;1619us;1620us;1657us;663us;1659us;663us;1660us;1689us;1664us;1689us;1668us;1689us;1671us;1689us;1674us;1689us;1677us;1689us;1679us;1680us;1681us;1682us;1686us;1687us;1690us;1691us;1695us;1696us;1700us;1698us;1703us;1699us;1706us;1713us;1709us;1713us;1714us;1725us;1717us;1725us;1719us;1725us;1722us;1725us;1726us;1725us;1729us;1725us;1731us;1725us;1734us;1725us;1751us;1713us;1757us;1713us;1760us;1713us;1827us;1713us;1831us;1713us;1837us;1713us;1848us;1713us;1854us;1746us;1855us;1725us;1878us;1713us;1880us;1713us;1891us;1713us;23us;65535us;189us;1747us;191us;1747us;291us;1747us;447us;1747us;663us;1747us;665us;1747us;666us;1747us;715us;1747us;716us;1747us;1518us;1747us;1620us;1747us;1680us;1747us;1682us;1747us;1687us;1747us;1689us;1747us;1691us;1747us;1696us;1747us;1698us;1747us;1699us;1747us;1713us;1747us;1725us;1747us;1746us;1747us;1748us;1749us;5us;65535us;569us;1752us;653us;1752us;1555us;1752us;1751us;1752us;1837us;1838us;2us;65535us;1828us;1829us;1881us;1830us;82us;65535us;8us;1755us;111us;1755us;149us;1755us;178us;1755us;184us;1755us;188us;1755us;190us;1755us;201us;1755us;290us;1755us;385us;1755us;439us;1755us;446us;1755us;454us;1755us;481us;1755us;497us;1755us;561us;1755us;569us;1755us;626us;1755us;630us;1755us;640us;1755us;643us;1755us;653us;1755us;664us;1755us;679us;1755us;681us;1755us;684us;1755us;688us;1755us;705us;1755us;708us;1755us;711us;1755us;714us;1755us;730us;1755us;744us;1755us;829us;1755us;873us;1755us;1005us;1755us;1046us;1755us;1231us;1755us;1234us;1755us;1237us;1755us;1517us;1755us;1550us;1755us;1553us;1755us;1555us;1755us;1619us;1755us;1657us;1755us;1659us;1755us;1660us;1755us;1664us;1755us;1668us;1755us;1671us;1755us;1674us;1755us;1677us;1755us;1679us;1755us;1681us;1755us;1686us;1755us;1690us;1755us;1695us;1755us;1700us;1755us;1703us;1755us;1706us;1755us;1709us;1755us;1714us;1755us;1717us;1755us;1719us;1755us;1722us;1755us;1726us;1755us;1729us;1755us;1731us;1755us;1734us;1755us;1751us;1755us;1757us;1755us;1760us;1755us;1827us;1755us;1831us;1755us;1837us;1755us;1848us;1755us;1854us;1755us;1855us;1755us;1878us;1755us;1880us;1755us;1891us;1755us;4us;65535us;522us;523us;1374us;1376us;1375us;1377us;1557us;1558us;83us;65535us;8us;1834us;111us;1834us;149us;1834us;178us;1834us;184us;1834us;188us;1834us;190us;1834us;201us;1834us;290us;1834us;385us;1834us;439us;1834us;446us;1834us;454us;1834us;481us;1834us;497us;1834us;561us;1834us;569us;1834us;626us;1834us;630us;1834us;640us;1834us;643us;1834us;653us;1834us;664us;1834us;679us;1834us;681us;1834us;684us;1834us;688us;1834us;705us;1834us;708us;1834us;711us;1834us;714us;1834us;730us;1834us;744us;1834us;829us;1834us;873us;1834us;938us;939us;1005us;1834us;1046us;1834us;1231us;1834us;1234us;1834us;1237us;1834us;1517us;1834us;1550us;1834us;1553us;1834us;1555us;1834us;1619us;1834us;1657us;1834us;1659us;1834us;1660us;1834us;1664us;1834us;1668us;1834us;1671us;1834us;1674us;1834us;1677us;1834us;1679us;1834us;1681us;1834us;1686us;1834us;1690us;1834us;1695us;1834us;1700us;1834us;1703us;1834us;1706us;1834us;1709us;1834us;1714us;1834us;1717us;1834us;1719us;1834us;1722us;1834us;1726us;1834us;1729us;1834us;1731us;1834us;1734us;1834us;1751us;1834us;1757us;1834us;1760us;1834us;1827us;1834us;1831us;1834us;1837us;1834us;1848us;1834us;1854us;1834us;1855us;1834us;1878us;1834us;1880us;1834us;1891us;1834us;93us;65535us;8us;1738us;111us;1738us;149us;1738us;178us;1738us;184us;1738us;188us;1738us;190us;1738us;201us;1738us;290us;1738us;385us;1738us;439us;1738us;446us;1738us;454us;1738us;481us;1738us;497us;1738us;522us;1841us;561us;1738us;569us;1738us;570us;1845us;613us;637us;626us;1738us;630us;1738us;635us;636us;640us;1738us;643us;1738us;653us;1738us;664us;1738us;679us;1738us;681us;1738us;684us;1738us;688us;1738us;705us;1738us;708us;1738us;711us;1738us;714us;1738us;730us;1738us;744us;1738us;829us;1738us;873us;1738us;938us;1842us;1005us;1738us;1046us;1738us;1231us;1738us;1234us;1738us;1237us;1738us;1374us;1841us;1375us;1841us;1517us;1738us;1550us;1738us;1553us;1738us;1555us;1738us;1557us;1841us;1619us;1738us;1657us;1738us;1659us;1738us;1660us;1738us;1664us;1738us;1668us;1738us;1671us;1738us;1674us;1738us;1677us;1738us;1679us;1738us;1681us;1738us;1686us;1738us;1690us;1738us;1695us;1738us;1700us;1738us;1703us;1738us;1706us;1738us;1709us;1738us;1714us;1738us;1717us;1738us;1719us;1738us;1722us;1738us;1726us;1738us;1729us;1738us;1731us;1738us;1734us;1738us;1737us;637us;1739us;637us;1751us;1738us;1757us;1738us;1760us;1738us;1827us;1738us;1831us;1738us;1837us;1738us;1844us;1845us;1848us;1738us;1854us;1738us;1855us;1738us;1878us;1738us;1880us;1738us;1891us;1738us;4us;65535us;647us;662us;660us;661us;1743us;1869us;1871us;1872us;6us;65535us;647us;1875us;660us;1875us;1410us;1411us;1743us;1875us;1871us;1875us;1876us;1877us;9us;65535us;569us;1826us;653us;1826us;1555us;1826us;1751us;1826us;1827us;1828us;1831us;1832us;1837us;1826us;1878us;1885us;1880us;1893us;2us;65535us;1878us;1879us;1880us;1881us;3us;65535us;1831us;1833us;1878us;1894us;1880us;1894us;1us;65535us;865us;866us;6us;65535us;1895us;1905us;1902us;1905us;1909us;1905us;1915us;1905us;1916us;1905us;1917us;1905us;6us;65535us;1895us;1909us;1902us;1909us;1909us;1909us;1915us;1909us;1916us;1909us;1917us;1909us;6us;65535us;1895us;1911us;1902us;1911us;1909us;1910us;1915us;1911us;1916us;1911us;1917us;1911us;5us;65535us;1895us;1896us;1902us;1903us;1915us;1912us;1916us;1913us;1917us;1914us;131us;65535us;8us;1736us;111us;1736us;149us;1736us;178us;1736us;184us;1736us;188us;1736us;189us;1741us;190us;1736us;191us;1741us;201us;1736us;290us;1736us;291us;1741us;385us;1736us;439us;1736us;446us;1736us;447us;1741us;454us;1736us;481us;1736us;497us;1736us;522us;1741us;561us;1736us;569us;1736us;570us;1741us;595us;601us;611us;612us;613us;1741us;626us;642us;630us;642us;635us;1741us;638us;639us;640us;1736us;643us;1736us;653us;1736us;663us;1741us;664us;1736us;665us;1741us;666us;1741us;679us;1736us;681us;1736us;684us;1736us;688us;1736us;705us;1736us;708us;1736us;711us;1736us;714us;1736us;715us;1741us;716us;1741us;730us;1736us;744us;1736us;821us;828us;825us;828us;829us;1736us;873us;1736us;938us;1741us;1005us;1736us;1046us;1736us;1231us;1736us;1234us;1736us;1237us;1736us;1374us;1741us;1375us;1741us;1489us;1513us;1490us;1514us;1491us;1513us;1517us;1736us;1518us;1741us;1550us;1736us;1553us;1736us;1555us;1736us;1557us;1741us;1619us;1736us;1620us;1741us;1657us;642us;1659us;642us;1660us;1736us;1664us;1736us;1668us;1736us;1671us;1736us;1674us;1736us;1677us;1736us;1679us;1736us;1680us;1741us;1681us;1736us;1682us;1741us;1686us;1736us;1687us;1741us;1689us;1741us;1690us;1736us;1691us;1741us;1695us;1736us;1696us;1741us;1698us;1741us;1699us;1741us;1700us;1736us;1703us;1736us;1706us;1736us;1709us;1736us;1713us;1741us;1714us;1736us;1717us;1736us;1719us;1736us;1722us;1736us;1725us;1741us;1726us;1736us;1729us;1736us;1731us;1736us;1734us;1736us;1737us;1741us;1739us;1741us;1746us;1741us;1751us;1736us;1753us;1741us;1757us;1736us;1760us;1736us;1827us;1736us;1831us;1736us;1837us;1736us;1839us;1741us;1844us;1741us;1848us;1736us;1854us;1736us;1855us;1736us;1878us;1736us;1880us;1736us;1891us;1736us;1895us;1901us;1902us;1901us;1909us;1901us;1915us;1901us;1916us;1901us;1917us;1901us;385us;65535us;6us;1980us;8us;1925us;31us;1980us;53us;1925us;58us;1925us;95us;1925us;108us;1972us;111us;1925us;114us;1980us;116us;1980us;120us;1925us;149us;1925us;178us;699us;181us;1972us;184us;1925us;188us;1925us;189us;1925us;190us;1925us;191us;1925us;201us;1925us;203us;1972us;205us;1972us;210us;1972us;237us;1980us;251us;1980us;274us;1980us;281us;1925us;287us;1925us;290us;1925us;291us;1925us;317us;346us;328us;346us;333us;1925us;337us;1925us;385us;1925us;419us;1974us;422us;1980us;424us;1974us;427us;1980us;439us;699us;446us;1925us;447us;1925us;451us;1972us;454us;1925us;465us;1974us;468us;1980us;479us;480us;481us;1925us;488us;489us;491us;1980us;497us;1925us;501us;1974us;504us;1974us;507us;1974us;509us;1974us;522us;1925us;530us;531us;534us;535us;561us;699us;569us;1925us;570us;1925us;595us;1925us;597us;1925us;613us;1925us;626us;1925us;630us;1925us;635us;1925us;640us;1925us;643us;1925us;653us;1925us;663us;1925us;664us;1925us;665us;1925us;666us;1925us;678us;1972us;679us;713us;681us;713us;684us;713us;688us;1925us;690us;1980us;701us;1980us;705us;713us;708us;713us;711us;713us;714us;1925us;715us;1925us;716us;1925us;728us;729us;730us;1925us;739us;743us;744us;713us;747us;1925us;753us;1980us;759us;1980us;771us;772us;783us;1925us;784us;785us;796us;1925us;806us;1974us;809us;1980us;813us;1980us;823us;1980us;829us;1925us;869us;870us;873us;1925us;876us;868us;877us;868us;880us;868us;899us;1974us;901us;1974us;902us;1974us;906us;1974us;907us;1974us;910us;1974us;912us;1974us;913us;1974us;916us;920us;918us;920us;922us;1974us;926us;1974us;927us;1974us;929us;1974us;931us;1974us;934us;1974us;936us;1974us;938us;1925us;941us;921us;945us;1974us;947us;1974us;949us;1974us;952us;1925us;957us;1974us;960us;1974us;963us;965us;964us;965us;971us;1974us;979us;1974us;1000us;1974us;1002us;1974us;1005us;1925us;1008us;1974us;1009us;1974us;1011us;1974us;1012us;1974us;1015us;1974us;1017us;1974us;1018us;1974us;1021us;1925us;1024us;1974us;1028us;1974us;1030us;1980us;1036us;1980us;1046us;1925us;1052us;1980us;1054us;1980us;1057us;1980us;1060us;1980us;1078us;1974us;1079us;1980us;1083us;1974us;1084us;1980us;1090us;1980us;1093us;1980us;1096us;1980us;1102us;1980us;1106us;1980us;1110us;1980us;1116us;1980us;1118us;1980us;1123us;1980us;1125us;1980us;1127us;1980us;1129us;1980us;1131us;1980us;1133us;1980us;1135us;1974us;1137us;1980us;1147us;1980us;1154us;1980us;1160us;1980us;1162us;1980us;1166us;1974us;1167us;1980us;1171us;1980us;1173us;1974us;1174us;1980us;1178us;1980us;1181us;1980us;1184us;1980us;1186us;1980us;1189us;1980us;1191us;1980us;1231us;1925us;1234us;1925us;1237us;1925us;1240us;1980us;1242us;1980us;1246us;1980us;1248us;1980us;1250us;1980us;1252us;1980us;1254us;1980us;1256us;1980us;1258us;1980us;1260us;1980us;1262us;1980us;1264us;1980us;1266us;1980us;1268us;1980us;1270us;1980us;1272us;1980us;1274us;1980us;1276us;1980us;1278us;1980us;1280us;1980us;1282us;1980us;1284us;1980us;1286us;1980us;1287us;1980us;1288us;1980us;1289us;1980us;1292us;1980us;1302us;1980us;1305us;1974us;1307us;1974us;1313us;1974us;1320us;1974us;1322us;1974us;1327us;1980us;1328us;1980us;1332us;1980us;1334us;1980us;1337us;1980us;1338us;1980us;1340us;1980us;1343us;1980us;1345us;1980us;1347us;1980us;1349us;1980us;1351us;1980us;1352us;1922us;1353us;1922us;1354us;1980us;1356us;1980us;1357us;1980us;1359us;1980us;1360us;1980us;1362us;1980us;1363us;1980us;1365us;1980us;1366us;1980us;1368us;1980us;1369us;1980us;1371us;1980us;1372us;1980us;1374us;1925us;1375us;1925us;1382us;1972us;1386us;1980us;1388us;1980us;1390us;1980us;1391us;1980us;1392us;1980us;1395us;1980us;1400us;1980us;1408us;1980us;1409us;1980us;1412us;1980us;1413us;1980us;1414us;1416us;1415us;1417us;1419us;1972us;1422us;1972us;1424us;1972us;1425us;1972us;1431us;1980us;1438us;1980us;1445us;1980us;1452us;1980us;1469us;1980us;1476us;1980us;1477us;1980us;1483us;1980us;1489us;1980us;1490us;1980us;1491us;1980us;1503us;1980us;1509us;1980us;1517us;1925us;1518us;1925us;1519us;1980us;1532us;1980us;1534us;1980us;1537us;1980us;1538us;1980us;1544us;1980us;1550us;1925us;1553us;1925us;1555us;1925us;1557us;1925us;1564us;1980us;1569us;1980us;1573us;1925us;1577us;1925us;1585us;1925us;1594us;1980us;1619us;1925us;1620us;1925us;1627us;1980us;1634us;1974us;1636us;1980us;1639us;1974us;1641us;1980us;1651us;1974us;1653us;1974us;1657us;1925us;1659us;1925us;1660us;1925us;1664us;1925us;1668us;1925us;1671us;1925us;1674us;1925us;1677us;1925us;1679us;1925us;1680us;1925us;1681us;1925us;1682us;1925us;1684us;1685us;1686us;1925us;1687us;1925us;1689us;1925us;1690us;1925us;1691us;1925us;1693us;1694us;1695us;1925us;1696us;1925us;1698us;1925us;1699us;1925us;1700us;1925us;1703us;1925us;1706us;1925us;1709us;1925us;1713us;1925us;1714us;1925us;1717us;1925us;1719us;1925us;1722us;1925us;1725us;1925us;1726us;1925us;1729us;1925us;1731us;1925us;1734us;1925us;1737us;1925us;1739us;1925us;1746us;1925us;1751us;1925us;1753us;1925us;1757us;1925us;1760us;1925us;1827us;1925us;1831us;1925us;1837us;1925us;1839us;1925us;1844us;1925us;1848us;1925us;1854us;1925us;1855us;1925us;1864us;1980us;1870us;1925us;1878us;1925us;1880us;1925us;1891us;1925us;1895us;1925us;1902us;1925us;1909us;1925us;1915us;1925us;1916us;1925us;1917us;1925us;1918us;1919us;1920us;1921us;1926us;1927us;1976us;1974us;2018us;2019us;2021us;1980us;2025us;1980us;144us;65535us;8us;1740us;53us;54us;58us;59us;95us;295us;111us;1740us;120us;293us;149us;1740us;178us;562us;184us;1740us;188us;1740us;189us;1740us;190us;1740us;191us;1740us;201us;1740us;281us;305us;287us;288us;290us;1740us;291us;1740us;317us;330us;328us;330us;333us;334us;337us;338us;385us;1740us;439us;562us;446us;1740us;447us;1740us;454us;1740us;481us;1740us;497us;1740us;522us;1740us;561us;562us;569us;1740us;570us;1740us;595us;596us;597us;598us;613us;1740us;626us;1740us;630us;1740us;635us;1740us;640us;1740us;643us;1740us;653us;1740us;663us;1740us;664us;1740us;665us;1740us;666us;1740us;679us;1740us;681us;1740us;684us;1740us;688us;1740us;705us;1740us;708us;1740us;711us;1740us;714us;1740us;715us;1740us;716us;1740us;730us;1740us;744us;1740us;747us;748us;783us;786us;796us;786us;829us;1740us;873us;1740us;938us;1740us;952us;1023us;1005us;1740us;1021us;1023us;1046us;1740us;1231us;1740us;1234us;1740us;1237us;1740us;1374us;1740us;1375us;1740us;1517us;1740us;1518us;1740us;1550us;1740us;1553us;1740us;1555us;1740us;1557us;1740us;1573us;1590us;1577us;1590us;1585us;1590us;1619us;1740us;1620us;1740us;1657us;1740us;1659us;1740us;1660us;1740us;1664us;1740us;1668us;1740us;1671us;1740us;1674us;1740us;1677us;1740us;1679us;1740us;1680us;1740us;1681us;1740us;1682us;1740us;1686us;1740us;1687us;1740us;1689us;1740us;1690us;1740us;1691us;1740us;1695us;1740us;1696us;1740us;1698us;1740us;1699us;1740us;1700us;1740us;1703us;1740us;1706us;1740us;1709us;1740us;1713us;1740us;1714us;1740us;1717us;1740us;1719us;1740us;1722us;1740us;1725us;1740us;1726us;1740us;1729us;1740us;1731us;1740us;1734us;1740us;1737us;1740us;1739us;1740us;1746us;1740us;1751us;1740us;1753us;1740us;1757us;1740us;1760us;1740us;1827us;1740us;1831us;1740us;1837us;1740us;1839us;1740us;1844us;1740us;1848us;1740us;1854us;1740us;1855us;1740us;1870us;1871us;1878us;1740us;1880us;1740us;1891us;1740us;1895us;1900us;1902us;1900us;1909us;1900us;1915us;1900us;1916us;1900us;1917us;1900us;217us;65535us;6us;1981us;31us;1981us;108us;1973us;114us;1981us;116us;1981us;181us;1973us;203us;1973us;205us;1973us;210us;1973us;237us;1981us;251us;1981us;274us;1981us;419us;1975us;422us;1981us;424us;1975us;427us;1981us;451us;1973us;465us;1975us;468us;1981us;491us;1981us;501us;1975us;504us;1975us;507us;1975us;509us;1975us;678us;1973us;690us;1981us;701us;1981us;753us;1981us;759us;1981us;806us;1975us;809us;1981us;813us;1981us;823us;1981us;899us;1975us;901us;1975us;902us;1975us;906us;1975us;907us;1975us;910us;1975us;912us;1975us;913us;1975us;922us;1975us;926us;1975us;927us;1975us;929us;1975us;931us;1975us;934us;1975us;936us;1975us;941us;1975us;945us;1975us;947us;1975us;949us;1975us;957us;1975us;960us;1975us;971us;1975us;979us;1975us;1000us;1975us;1002us;1975us;1008us;1975us;1009us;1975us;1011us;1975us;1012us;1975us;1015us;1975us;1017us;1975us;1018us;1975us;1024us;1975us;1028us;1975us;1030us;1981us;1036us;1981us;1052us;1981us;1054us;1981us;1057us;1981us;1060us;1981us;1078us;1975us;1079us;1981us;1083us;1975us;1084us;1981us;1090us;1981us;1093us;1981us;1096us;1981us;1102us;1981us;1106us;1981us;1110us;1981us;1116us;1981us;1118us;1981us;1123us;1981us;1125us;1981us;1127us;1981us;1129us;1981us;1131us;1981us;1133us;1981us;1135us;1975us;1137us;1981us;1147us;1981us;1154us;1981us;1160us;1981us;1162us;1981us;1166us;1975us;1167us;1981us;1171us;1981us;1173us;1975us;1174us;1981us;1178us;1981us;1181us;1981us;1184us;1981us;1186us;1981us;1189us;1981us;1191us;1981us;1240us;1981us;1242us;1981us;1246us;1981us;1248us;1981us;1250us;1981us;1252us;1981us;1254us;1981us;1256us;1981us;1258us;1981us;1260us;1981us;1262us;1981us;1264us;1981us;1266us;1981us;1268us;1981us;1270us;1981us;1272us;1981us;1274us;1981us;1276us;1981us;1278us;1981us;1280us;1981us;1282us;1981us;1284us;1981us;1286us;1981us;1287us;1981us;1288us;1981us;1289us;1981us;1292us;1981us;1302us;1981us;1305us;1975us;1307us;1975us;1313us;1975us;1320us;1975us;1322us;1975us;1327us;1981us;1328us;1981us;1332us;1981us;1334us;1981us;1337us;1981us;1338us;1981us;1340us;1981us;1343us;1981us;1345us;1981us;1347us;1981us;1349us;1981us;1351us;1981us;1352us;1981us;1353us;1981us;1354us;1981us;1356us;1981us;1357us;1981us;1359us;1981us;1360us;1981us;1362us;1981us;1363us;1981us;1365us;1981us;1366us;1981us;1368us;1981us;1369us;1981us;1371us;1981us;1372us;1981us;1382us;1973us;1386us;1981us;1388us;1981us;1390us;1981us;1391us;1981us;1392us;1981us;1395us;1981us;1400us;1981us;1408us;1981us;1409us;1981us;1412us;1981us;1413us;1981us;1419us;1973us;1422us;1973us;1424us;1973us;1425us;1973us;1431us;1981us;1438us;1981us;1445us;1981us;1452us;1981us;1469us;1981us;1476us;1981us;1477us;1981us;1483us;1981us;1489us;1981us;1490us;1981us;1491us;1981us;1503us;1981us;1509us;1981us;1519us;1981us;1532us;1981us;1534us;1981us;1537us;1981us;1538us;1981us;1544us;1981us;1564us;1981us;1569us;1981us;1594us;1981us;1627us;1981us;1634us;1975us;1636us;1981us;1639us;1975us;1641us;1981us;1651us;1975us;1653us;1975us;1864us;1981us;1976us;1975us;2021us;1981us;2025us;1981us;7us;65535us;693us;1930us;941us;1930us;971us;1930us;1445us;1930us;1490us;1930us;1491us;1930us;1929us;1930us;2us;65535us;1936us;1971us;1969us;1970us;7us;65535us;693us;1935us;941us;1935us;971us;1935us;1445us;1935us;1490us;1935us;1491us;1935us;1929us;1935us;12us;65535us;108us;1979us;181us;1979us;203us;1979us;205us;1979us;210us;1979us;451us;1979us;678us;1979us;1382us;1442us;1419us;1442us;1422us;1442us;1424us;1979us;1425us;1979us;57us;65535us;419us;506us;424us;506us;465us;506us;501us;502us;504us;505us;507us;511us;509us;510us;806us;506us;899us;506us;901us;506us;902us;506us;906us;506us;907us;506us;910us;506us;912us;506us;913us;506us;922us;506us;926us;506us;927us;506us;929us;506us;931us;506us;934us;506us;936us;506us;941us;506us;945us;506us;947us;506us;949us;506us;957us;506us;960us;506us;971us;506us;979us;506us;1000us;506us;1002us;506us;1008us;506us;1009us;506us;1011us;506us;1012us;506us;1015us;506us;1017us;506us;1018us;506us;1024us;506us;1028us;506us;1078us;506us;1083us;506us;1135us;506us;1166us;506us;1173us;506us;1305us;506us;1307us;506us;1313us;506us;1320us;506us;1322us;506us;1634us;506us;1639us;506us;1651us;506us;1653us;506us;1976us;1977us;9us;65535us;108us;109us;181us;182us;203us;209us;205us;209us;210us;211us;451us;452us;678us;692us;1424us;1426us;1425us;1426us;148us;65535us;6us;1430us;31us;1430us;114us;1430us;116us;1430us;237us;1430us;251us;1430us;274us;1430us;422us;1430us;427us;1430us;468us;1430us;491us;1430us;690us;1430us;701us;1430us;753us;1430us;759us;1430us;809us;1430us;813us;1430us;823us;1430us;1030us;1430us;1036us;1430us;1052us;1430us;1054us;1430us;1057us;1430us;1060us;1430us;1079us;1430us;1084us;1430us;1090us;1430us;1093us;1430us;1096us;1430us;1102us;1430us;1106us;1430us;1110us;1430us;1116us;1430us;1118us;1430us;1123us;1430us;1125us;1430us;1127us;1430us;1129us;1430us;1131us;1430us;1133us;1430us;1137us;1430us;1147us;1430us;1154us;1430us;1160us;1430us;1162us;1430us;1167us;1430us;1171us;1430us;1174us;1430us;1178us;1430us;1181us;1430us;1184us;1430us;1186us;1430us;1189us;1430us;1191us;1430us;1240us;1430us;1242us;1430us;1246us;1430us;1248us;1430us;1250us;1430us;1252us;1430us;1254us;1430us;1256us;1430us;1258us;1430us;1260us;1430us;1262us;1430us;1264us;1430us;1266us;1430us;1268us;1430us;1270us;1430us;1272us;1430us;1274us;1430us;1276us;1430us;1278us;1430us;1280us;1430us;1282us;1430us;1284us;1430us;1286us;1430us;1287us;1430us;1288us;1430us;1289us;1430us;1292us;1430us;1302us;1430us;1327us;1430us;1328us;1430us;1332us;1430us;1334us;1430us;1337us;1430us;1338us;1430us;1340us;1430us;1343us;1430us;1345us;1430us;1347us;1430us;1349us;1430us;1351us;1430us;1352us;1430us;1353us;1430us;1354us;1430us;1356us;1430us;1357us;1430us;1359us;1430us;1360us;1430us;1362us;1430us;1363us;1430us;1365us;1430us;1366us;1430us;1368us;1430us;1369us;1430us;1371us;1430us;1372us;1430us;1386us;1430us;1388us;1430us;1390us;1430us;1391us;1430us;1392us;1430us;1395us;1430us;1400us;1430us;1408us;1430us;1409us;1430us;1412us;1430us;1413us;1430us;1431us;1430us;1438us;1430us;1445us;1430us;1452us;1430us;1469us;1430us;1476us;1430us;1477us;1430us;1483us;1430us;1489us;1430us;1490us;1430us;1491us;1430us;1503us;1430us;1509us;1430us;1519us;1430us;1532us;1430us;1534us;1430us;1537us;1430us;1538us;1430us;1544us;1430us;1564us;1430us;1569us;1430us;1594us;1430us;1627us;1430us;1636us;1430us;1641us;1430us;1864us;1430us;2021us;1430us;2025us;1430us;16us;65535us;48us;1985us;79us;1985us;82us;1985us;83us;1985us;84us;1987us;87us;1985us;227us;1985us;246us;1985us;252us;1985us;257us;1985us;261us;1985us;262us;1985us;263us;1985us;264us;1985us;1985us;1985us;1987us;1987us;14us;65535us;48us;88us;79us;88us;82us;88us;83us;88us;87us;88us;227us;265us;246us;265us;252us;253us;257us;259us;261us;265us;262us;265us;263us;265us;264us;265us;1985us;1986us;2us;65535us;84us;85us;1987us;1988us;10us;65535us;172us;2002us;318us;328us;406us;2002us;542us;2002us;721us;722us;914us;916us;916us;918us;997us;1028us;1019us;1021us;1051us;1052us;4us;65535us;221us;222us;312us;313us;517us;518us;520us;521us;2us;65535us;1611us;1612us;1621us;1622us;10us;65535us;118us;119us;443us;444us;456us;457us;459us;460us;461us;462us;463us;464us;469us;470us;548us;549us;550us;551us;554us;555us;2us;65535us;65us;66us;233us;234us;0us;65535us;18us;65535us;76us;77us;138us;139us;243us;244us;320us;321us;323us;324us;372us;373us;473us;474us;672us;704us;699us;700us;702us;703us;1086us;1087us;1136us;1144us;1169us;1170us;1176us;1177us;1183us;1184us;1598us;1602us;1599us;1600us;1622us;1623us;8us;65535us;172us;173us;318us;319us;406us;407us;542us;543us;721us;724us;914us;915us;997us;1027us;1019us;1020us;4us;65535us;52us;53us;57us;58us;749us;750us;755us;756us;0us;65535us;11us;65535us;105us;106us;179us;180us;409us;418us;411us;418us;416us;418us;442us;424us;450us;451us;546us;805us;547us;424us;553us;424us;802us;805us;7us;65535us;106us;107us;193us;727us;196us;727us;477us;478us;486us;487us;725us;727us;805us;806us;4us;65535us;1064us;1154us;1136us;1137us;1146us;1147us;1216us;1292us;9us;65535us;1062us;1141us;1063us;1151us;1065us;1158us;1066us;1300us;1138us;1139us;1148us;1149us;1155us;1156us;1293us;1294us;1296us;1297us;2us;65535us;281us;306us;296us;306us;2us;65535us;95us;127us;120us;123us;2us;65535us;70us;95us;94us;95us;302us;65535us;6us;847us;8us;847us;31us;847us;40us;42us;111us;847us;114us;847us;116us;847us;149us;847us;178us;847us;184us;847us;188us;847us;190us;847us;201us;847us;237us;847us;251us;847us;274us;847us;290us;847us;331us;847us;335us;847us;340us;847us;385us;847us;419us;847us;422us;847us;424us;847us;427us;847us;439us;847us;446us;847us;454us;847us;465us;847us;468us;847us;481us;847us;491us;847us;497us;847us;522us;847us;525us;847us;561us;847us;569us;847us;570us;571us;613us;847us;626us;847us;630us;847us;635us;847us;640us;847us;643us;847us;653us;847us;664us;847us;679us;847us;681us;847us;684us;847us;688us;847us;690us;847us;701us;847us;705us;847us;708us;847us;711us;847us;714us;847us;730us;847us;744us;847us;753us;847us;759us;847us;806us;847us;809us;847us;813us;847us;823us;847us;829us;847us;873us;847us;899us;847us;901us;847us;902us;847us;906us;847us;907us;847us;910us;847us;912us;847us;913us;847us;922us;847us;926us;847us;927us;847us;929us;847us;931us;847us;934us;847us;936us;847us;938us;847us;941us;847us;945us;847us;947us;847us;949us;847us;957us;847us;960us;847us;971us;847us;979us;847us;1000us;847us;1002us;847us;1005us;847us;1008us;847us;1009us;847us;1011us;847us;1012us;847us;1015us;847us;1017us;847us;1018us;847us;1024us;847us;1028us;847us;1030us;847us;1036us;847us;1046us;847us;1052us;847us;1054us;847us;1057us;847us;1060us;847us;1078us;847us;1079us;847us;1083us;847us;1084us;847us;1090us;847us;1093us;847us;1096us;847us;1102us;847us;1106us;847us;1110us;847us;1116us;847us;1118us;847us;1123us;847us;1125us;847us;1127us;847us;1129us;847us;1131us;847us;1133us;847us;1135us;847us;1137us;847us;1147us;847us;1154us;847us;1160us;847us;1162us;847us;1166us;847us;1167us;847us;1171us;847us;1173us;847us;1174us;847us;1178us;847us;1181us;847us;1184us;847us;1186us;847us;1189us;847us;1191us;847us;1231us;847us;1234us;847us;1237us;847us;1240us;847us;1242us;847us;1246us;847us;1248us;847us;1250us;847us;1252us;847us;1254us;847us;1256us;847us;1258us;847us;1260us;847us;1262us;847us;1264us;847us;1266us;847us;1268us;847us;1270us;847us;1272us;847us;1274us;847us;1276us;847us;1278us;847us;1280us;847us;1282us;847us;1284us;847us;1286us;847us;1287us;847us;1288us;847us;1289us;847us;1292us;847us;1302us;847us;1305us;847us;1307us;847us;1313us;847us;1320us;847us;1322us;847us;1327us;847us;1328us;847us;1332us;847us;1334us;847us;1337us;847us;1338us;847us;1340us;847us;1343us;847us;1345us;847us;1347us;847us;1349us;847us;1351us;847us;1352us;847us;1353us;847us;1354us;847us;1356us;847us;1357us;847us;1359us;847us;1360us;847us;1362us;847us;1363us;847us;1365us;847us;1366us;847us;1368us;847us;1369us;847us;1371us;847us;1372us;847us;1374us;847us;1375us;847us;1378us;847us;1379us;847us;1386us;847us;1388us;847us;1390us;847us;1391us;847us;1392us;847us;1395us;847us;1400us;847us;1408us;847us;1409us;847us;1412us;847us;1413us;847us;1431us;847us;1438us;847us;1445us;847us;1452us;847us;1469us;847us;1476us;847us;1477us;847us;1483us;847us;1489us;847us;1490us;847us;1491us;847us;1503us;847us;1509us;847us;1517us;847us;1519us;847us;1532us;847us;1534us;847us;1537us;847us;1538us;847us;1541us;1542us;1544us;847us;1550us;847us;1553us;847us;1555us;847us;1557us;847us;1559us;847us;1564us;847us;1569us;847us;1594us;847us;1619us;847us;1627us;847us;1634us;847us;1636us;847us;1639us;847us;1641us;847us;1651us;847us;1653us;847us;1657us;847us;1659us;847us;1660us;847us;1664us;847us;1668us;847us;1671us;847us;1674us;847us;1677us;847us;1679us;847us;1681us;847us;1686us;847us;1690us;847us;1695us;847us;1700us;847us;1703us;847us;1706us;847us;1709us;847us;1714us;847us;1717us;847us;1719us;847us;1722us;847us;1726us;847us;1729us;847us;1731us;847us;1734us;847us;1737us;847us;1739us;847us;1751us;847us;1757us;847us;1760us;847us;1827us;847us;1831us;847us;1837us;847us;1844us;847us;1848us;847us;1854us;847us;1855us;847us;1864us;847us;1878us;847us;1880us;847us;1891us;847us;2021us;847us;2025us;847us;301us;65535us;6us;848us;8us;848us;31us;848us;40us;43us;111us;848us;114us;848us;116us;848us;149us;848us;178us;848us;184us;848us;188us;848us;190us;848us;201us;848us;237us;848us;251us;848us;274us;848us;290us;848us;331us;848us;335us;848us;340us;848us;385us;848us;419us;848us;422us;848us;424us;848us;427us;848us;439us;848us;446us;848us;454us;848us;465us;848us;468us;848us;481us;848us;491us;848us;497us;848us;522us;848us;525us;848us;561us;848us;569us;848us;570us;848us;613us;848us;626us;848us;630us;848us;635us;848us;640us;848us;643us;848us;653us;848us;664us;848us;679us;848us;681us;848us;684us;848us;688us;848us;690us;848us;701us;848us;705us;848us;708us;848us;711us;848us;714us;848us;730us;848us;744us;848us;753us;848us;759us;848us;806us;848us;809us;848us;813us;848us;823us;848us;829us;848us;873us;848us;899us;848us;901us;848us;902us;848us;906us;848us;907us;848us;910us;848us;912us;848us;913us;848us;922us;848us;926us;848us;927us;848us;929us;848us;931us;848us;934us;848us;936us;848us;938us;848us;941us;848us;945us;848us;947us;848us;949us;848us;957us;848us;960us;848us;971us;848us;979us;848us;1000us;848us;1002us;848us;1005us;848us;1008us;848us;1009us;848us;1011us;848us;1012us;848us;1015us;848us;1017us;848us;1018us;848us;1024us;848us;1028us;848us;1030us;848us;1036us;848us;1046us;848us;1052us;848us;1054us;848us;1057us;848us;1060us;848us;1078us;848us;1079us;848us;1083us;848us;1084us;848us;1090us;848us;1093us;848us;1096us;848us;1102us;848us;1106us;848us;1110us;848us;1116us;848us;1118us;848us;1123us;848us;1125us;848us;1127us;848us;1129us;848us;1131us;848us;1133us;848us;1135us;848us;1137us;848us;1147us;848us;1154us;848us;1160us;848us;1162us;848us;1166us;848us;1167us;848us;1171us;848us;1173us;848us;1174us;848us;1178us;848us;1181us;848us;1184us;848us;1186us;848us;1189us;848us;1191us;848us;1231us;848us;1234us;848us;1237us;848us;1240us;848us;1242us;848us;1246us;848us;1248us;848us;1250us;848us;1252us;848us;1254us;848us;1256us;848us;1258us;848us;1260us;848us;1262us;848us;1264us;848us;1266us;848us;1268us;848us;1270us;848us;1272us;848us;1274us;848us;1276us;848us;1278us;848us;1280us;848us;1282us;848us;1284us;848us;1286us;848us;1287us;848us;1288us;848us;1289us;848us;1292us;848us;1302us;848us;1305us;848us;1307us;848us;1313us;848us;1320us;848us;1322us;848us;1327us;848us;1328us;848us;1332us;848us;1334us;848us;1337us;848us;1338us;848us;1340us;848us;1343us;848us;1345us;848us;1347us;848us;1349us;848us;1351us;848us;1352us;848us;1353us;848us;1354us;848us;1356us;848us;1357us;848us;1359us;848us;1360us;848us;1362us;848us;1363us;848us;1365us;848us;1366us;848us;1368us;848us;1369us;848us;1371us;848us;1372us;848us;1374us;848us;1375us;848us;1378us;848us;1379us;848us;1386us;848us;1388us;848us;1390us;848us;1391us;848us;1392us;848us;1395us;848us;1400us;848us;1408us;848us;1409us;848us;1412us;848us;1413us;848us;1431us;848us;1438us;848us;1445us;848us;1452us;848us;1469us;848us;1476us;848us;1477us;848us;1483us;848us;1489us;848us;1490us;848us;1491us;848us;1503us;848us;1509us;848us;1517us;848us;1519us;848us;1532us;848us;1534us;848us;1537us;848us;1538us;848us;1544us;848us;1550us;848us;1553us;848us;1555us;848us;1557us;848us;1559us;848us;1564us;848us;1569us;848us;1594us;848us;1619us;848us;1627us;848us;1634us;848us;1636us;848us;1639us;848us;1641us;848us;1651us;848us;1653us;848us;1657us;848us;1659us;848us;1660us;848us;1664us;848us;1668us;848us;1671us;848us;1674us;848us;1677us;848us;1679us;848us;1681us;848us;1686us;848us;1690us;848us;1695us;848us;1700us;848us;1703us;848us;1706us;848us;1709us;848us;1714us;848us;1717us;848us;1719us;848us;1722us;848us;1726us;848us;1729us;848us;1731us;848us;1734us;848us;1737us;848us;1739us;848us;1751us;848us;1757us;848us;1760us;848us;1827us;848us;1831us;848us;1837us;848us;1844us;848us;1848us;848us;1854us;848us;1855us;848us;1864us;848us;1878us;848us;1880us;848us;1891us;848us;2021us;848us;2025us;848us;2us;65535us;2021us;2022us;2025us;2026us;4us;65535us;2021us;2024us;2022us;2023us;2025us;2029us;2026us;2027us;155us;65535us;6us;1462us;31us;1462us;114us;1462us;116us;1462us;237us;1462us;251us;1462us;274us;1462us;331us;1462us;335us;1462us;340us;1462us;422us;1462us;427us;1462us;468us;1462us;491us;1462us;525us;1462us;690us;1462us;701us;1462us;753us;1462us;759us;1462us;809us;1462us;813us;1462us;823us;1462us;1030us;1462us;1036us;1462us;1052us;1462us;1054us;1462us;1057us;1462us;1060us;1462us;1079us;1462us;1084us;1462us;1090us;1462us;1093us;1462us;1096us;1462us;1102us;1462us;1106us;1462us;1110us;1462us;1116us;1462us;1118us;1462us;1123us;1462us;1125us;1462us;1127us;1462us;1129us;1462us;1131us;1462us;1133us;1462us;1137us;1462us;1147us;1462us;1154us;1462us;1160us;1462us;1162us;1462us;1167us;1462us;1171us;1462us;1174us;1462us;1178us;1462us;1181us;1462us;1184us;1462us;1186us;1462us;1189us;1462us;1191us;1462us;1240us;1462us;1242us;1462us;1246us;1462us;1248us;1462us;1250us;1462us;1252us;1462us;1254us;1462us;1256us;1462us;1258us;1462us;1260us;1462us;1262us;1462us;1264us;1462us;1266us;1462us;1268us;1462us;1270us;1462us;1272us;1462us;1274us;1462us;1276us;1462us;1278us;1462us;1280us;1462us;1282us;1462us;1284us;1462us;1286us;1462us;1287us;1462us;1288us;1462us;1289us;1462us;1292us;1462us;1302us;1462us;1327us;1462us;1328us;1462us;1332us;1462us;1334us;1462us;1337us;1462us;1338us;1462us;1340us;1462us;1343us;1462us;1345us;1462us;1347us;1462us;1349us;1462us;1351us;1462us;1352us;1462us;1353us;1462us;1354us;1462us;1356us;1462us;1357us;1462us;1359us;1462us;1360us;1462us;1362us;1462us;1363us;1462us;1365us;1462us;1366us;1462us;1368us;1462us;1369us;1462us;1371us;1462us;1372us;1462us;1378us;1462us;1379us;1462us;1386us;1462us;1388us;1462us;1390us;1462us;1391us;1462us;1392us;1462us;1395us;1462us;1400us;1462us;1408us;1462us;1409us;1462us;1412us;1462us;1413us;1462us;1431us;1462us;1438us;1462us;1445us;1462us;1452us;1462us;1469us;1462us;1476us;1462us;1477us;1462us;1483us;1462us;1489us;1462us;1490us;1462us;1491us;1462us;1503us;1462us;1509us;1462us;1519us;1462us;1532us;1462us;1534us;1462us;1537us;1462us;1538us;1462us;1544us;1462us;1559us;1462us;1564us;1462us;1569us;1462us;1594us;1462us;1627us;1462us;1636us;1462us;1641us;1462us;1864us;1462us;2021us;1462us;2025us;1462us;11us;65535us;330us;331us;334us;335us;339us;340us;364us;365us;523us;525us;772us;773us;784us;788us;787us;788us;1376us;1378us;1377us;1379us;1558us;1559us;5us;65535us;109us;620us;182us;620us;452us;620us;596us;615us;926us;620us;14us;65535us;31us;276us;69us;99us;93us;99us;195us;198us;237us;276us;251us;276us;270us;276us;287us;290us;317us;344us;328us;344us;350us;475us;1542us;1549us;2033us;2035us;2034us;2035us;10us;65535us;31us;50us;69us;50us;93us;50us;237us;50us;251us;50us;270us;50us;317us;342us;328us;342us;2038us;2040us;2039us;2040us;9us;65535us;574us;580us;575us;576us;578us;579us;953us;954us;955us;956us;1075us;1523us;1519us;1525us;1520us;1521us;2043us;2044us;5us;65535us;585us;586us;588us;589us;1076us;1631us;1627us;1633us;1628us;1629us;44us;65535us;572us;573us;603us;604us;651us;652us;654us;655us;658us;659us;694us;695us;697us;698us;775us;776us;859us;860us;880us;883us;881us;882us;885us;886us;942us;943us;972us;973us;975us;976us;980us;981us;983us;984us;1073us;1496us;1074us;1497us;1226us;1504us;1245us;1439us;1303us;1304us;1446us;1447us;1450us;1451us;1489us;1492us;1490us;1492us;1491us;1492us;1493us;1494us;1508us;1509us;1515us;1516us;1551us;1552us;1555us;1556us;1752us;1753us;1838us;1839us;1849us;1851us;1850us;1851us;1856us;1857us;1867us;1868us;1903us;1904us;1930us;1931us;1932us;1933us;1936us;1937us;1939us;1940us;2048us;2049us;28us;65535us;75us;76us;79us;80us;117us;118us;121us;122us;125us;126us;141us;142us;159us;160us;167us;168us;213us;214us;242us;243us;246us;247us;263us;303us;293us;294us;297us;298us;300us;301us;338us;339us;371us;379us;375us;376us;395us;397us;399us;401us;538us;539us;814us;815us;1030us;1034us;1031us;1032us;1036us;1039us;1037us;1038us;1058us;1059us;2052us;2053us;1us;65535us;1493us;1495us;49us;65535us;317us;326us;319us;325us;389us;391us;467us;471us;490us;494us;522us;528us;906us;908us;907us;909us;910us;911us;998us;1536us;1011us;1013us;1012us;1014us;1015us;1016us;1135us;1157us;1136us;1143us;1137us;1142us;1138us;1140us;1246us;1247us;1248us;1249us;1250us;1251us;1252us;1253us;1254us;1255us;1256us;1257us;1258us;1259us;1260us;1261us;1262us;1263us;1264us;1265us;1266us;1267us;1268us;1269us;1270us;1271us;1272us;1273us;1274us;1275us;1276us;1277us;1278us;1279us;1280us;1281us;1282us;1283us;1284us;1285us;1343us;1344us;1345us;1346us;1347us;1348us;1349us;1350us;1534us;1535us;1593us;1597us;1594us;1596us;1873us;1874us;1880us;1884us;1885us;1887us;1926us;1928us;1976us;1978us;|]
-let _fsyacc_sparseGotoTableRowOffsets = [|0us;1us;2us;3us;4us;5us;7us;15us;20us;26us;31us;36us;41us;46us;70us;72us;74us;76us;83us;88us;90us;93us;96us;99us;103us;110us;120us;130us;140us;143us;145us;148us;152us;154us;157us;160us;163us;167us;176us;185us;197us;201us;204us;207us;210us;216us;218us;220us;223us;226us;229us;233us;239us;249us;260us;271us;287us;312us;314us;316us;319us;321us;403us;526us;649us;651us;654us;657us;662us;669us;672us;676us;678us;681us;684us;687us;691us;700us;711us;713us;716us;720us;724us;729us;740us;744us;747us;749us;802us;825us;900us;902us;907us;910us;913us;916us;919us;923us;926us;931us;936us;939us;944us;954us;1038us;1123us;1128us;1138us;1140us;1142us;1146us;1152us;1154us;1156us;1161us;1165us;1169us;1173us;1177us;1182us;1184us;1188us;1194us;1198us;1202us;1204us;1208us;1212us;1220us;1228us;1235us;1239us;1243us;1247us;1252us;1259us;1261us;1263us;1384us;1392us;1513us;1633us;1637us;1643us;1764us;1766us;1768us;1772us;1775us;1777us;1782us;1785us;1791us;1794us;1796us;1799us;1801us;1803us;1805us;1808us;2109us;2111us;2116us;2120us;2328us;2332us;2336us;2339us;2341us;2343us;2358us;2373us;2388us;2392us;2396us;2437us;2444us;2456us;2509us;2512us;2537us;2562us;2587us;2590us;2593us;2597us;2625us;2632us;2638us;2691us;2693us;2751us;2948us;2953us;3070us;3073us;3075us;3080us;3085us;3093us;3101us;3103us;3105us;3108us;3111us;3113us;3230us;3365us;3501us;3506us;3655us;3659us;3815us;3971us;4179us;4335us;4491us;4495us;4499us;4501us;4657us;4659us;4661us;4663us;4665us;4667us;4669us;4671us;4673us;4677us;4679us;4684us;4686us;4688us;4690us;4693us;4700us;4707us;4711us;4717us;4721us;4723us;4725us;4727us;4730us;4732us;4737us;4743us;4899us;5057us;5174us;5291us;5295us;5301us;5305us;5315us;5325us;5330us;5344us;5355us;5389us;5391us;5425us;5435us;5518us;5636us;5754us;5837us;5861us;5867us;5870us;5953us;5958us;6042us;6136us;6141us;6148us;6158us;6161us;6165us;6167us;6174us;6181us;6188us;6194us;6326us;6712us;6857us;7075us;7083us;7086us;7094us;7107us;7165us;7175us;7324us;7341us;7356us;7359us;7370us;7375us;7378us;7389us;7392us;7393us;7412us;7421us;7426us;7427us;7439us;7447us;7452us;7462us;7465us;7468us;7471us;7774us;8076us;8079us;8084us;8240us;8252us;8258us;8273us;8284us;8294us;8300us;8345us;8374us;8376us;|]
-let _fsyacc_stateToProdIdxsTableElements = [| 1us;0us;1us;0us;1us;1us;1us;1us;1us;2us;1us;2us;1us;3us;1us;3us;1us;4us;1us;4us;1us;5us;1us;6us;1us;7us;1us;8us;1us;9us;1us;10us;2us;11us;14us;1us;11us;2us;12us;15us;1us;12us;2us;13us;16us;1us;13us;1us;14us;1us;14us;1us;15us;1us;15us;1us;16us;1us;16us;2us;17us;18us;1us;18us;8us;19us;142us;143us;144us;145us;146us;147us;148us;8us;19us;142us;143us;144us;145us;146us;147us;148us;54us;19us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;20us;2us;21us;22us;1us;22us;1us;23us;1us;24us;1us;25us;1us;25us;2us;25us;27us;1us;27us;1us;28us;1us;29us;2us;30us;31us;1us;30us;1us;31us;1us;31us;3us;32us;50us;53us;1us;32us;3us;33us;34us;35us;3us;33us;34us;35us;3us;33us;34us;35us;3us;33us;34us;35us;3us;33us;1089us;1090us;1us;34us;1us;35us;2us;36us;37us;2us;36us;37us;3us;36us;1089us;1090us;1us;37us;2us;38us;39us;1us;39us;2us;40us;41us;1us;40us;1us;42us;1us;42us;1us;42us;7us;43us;57us;58us;59us;60us;61us;63us;7us;43us;57us;58us;59us;60us;61us;63us;4us;43us;57us;58us;59us;1us;43us;1us;44us;1us;45us;3us;46us;47us;48us;2us;46us;47us;1us;46us;1us;46us;1us;47us;3us;48us;50us;53us;1us;48us;1us;49us;2us;50us;53us;3us;50us;53us;59us;2us;52us;54us;2us;52us;54us;1us;52us;1us;53us;1us;53us;1us;53us;1us;55us;1us;56us;6us;57us;58us;59us;60us;61us;63us;6us;57us;58us;59us;60us;61us;63us;3us;57us;58us;59us;2us;57us;58us;1us;57us;1us;58us;1us;59us;1us;60us;1us;60us;1us;60us;1us;61us;1us;62us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;2us;65us;66us;54us;65us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;66us;54us;66us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;66us;1us;66us;3us;67us;68us;155us;1us;67us;1us;67us;1us;68us;1us;68us;1us;68us;1us;68us;1us;69us;1us;69us;1us;69us;1us;70us;1us;70us;1us;70us;2us;72us;73us;1us;72us;1us;72us;1us;73us;3us;74us;83us;84us;1us;74us;1us;74us;1us;74us;1us;74us;1us;74us;1us;74us;1us;75us;1us;75us;1us;76us;1us;77us;1us;78us;1us;78us;1us;78us;1us;79us;3us;80us;81us;82us;2us;80us;81us;1us;80us;1us;81us;1us;82us;1us;82us;2us;83us;84us;2us;83us;84us;1us;83us;1us;84us;2us;85us;86us;2us;85us;86us;1us;85us;1us;86us;2us;87us;88us;2us;87us;88us;1us;87us;1us;88us;1us;89us;1us;90us;1us;92us;1us;92us;1us;92us;8us;93us;94us;95us;96us;97us;98us;99us;100us;13us;93us;94us;95us;96us;97us;98us;99us;100us;296us;297us;298us;299us;300us;8us;93us;94us;95us;96us;97us;98us;99us;100us;13us;93us;94us;95us;96us;97us;98us;99us;100us;296us;297us;298us;299us;300us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;94us;4us;94us;985us;986us;987us;2us;95us;96us;4us;95us;985us;986us;987us;1us;96us;1us;97us;1us;97us;6us;98us;99us;185us;186us;229us;230us;1us;98us;1us;98us;1us;99us;1us;99us;1us;100us;1us;100us;1us;100us;1us;102us;1us;102us;2us;103us;104us;2us;103us;104us;1us;103us;1us;104us;3us;105us;106us;107us;2us;106us;107us;1us;106us;1us;107us;1us;108us;1us;108us;1us;108us;1us;109us;1us;110us;1us;111us;1us;111us;1us;112us;1us;112us;1us;112us;2us;114us;115us;1us;114us;1us;115us;1us;115us;2us;116us;139us;1us;116us;2us;117us;118us;1us;118us;2us;119us;120us;1us;119us;1us;121us;1us;121us;1us;121us;12us;122us;130us;131us;132us;134us;142us;143us;144us;145us;146us;147us;148us;11us;122us;130us;131us;132us;142us;143us;144us;145us;146us;147us;148us;3us;122us;147us;148us;1us;122us;1us;123us;3us;124us;125us;126us;2us;124us;125us;1us;124us;1us;124us;1us;125us;2us;126us;139us;1us;126us;1us;127us;1us;128us;11us;130us;131us;132us;134us;142us;143us;144us;145us;146us;147us;148us;10us;130us;131us;132us;142us;143us;144us;145us;146us;147us;148us;56us;130us;131us;132us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;2us;130us;131us;1us;130us;1us;133us;1us;134us;4us;135us;136us;137us;138us;1us;135us;2us;136us;138us;1us;136us;1us;139us;2us;139us;148us;2us;139us;161us;2us;139us;166us;1us;139us;1us;139us;1us;140us;1us;141us;7us;142us;143us;144us;145us;146us;147us;148us;7us;142us;143us;144us;145us;146us;147us;148us;1us;142us;3us;142us;595us;596us;1us;143us;5us;143us;597us;598us;599us;600us;1us;144us;1us;145us;1us;145us;1us;145us;1us;146us;2us;147us;148us;1us;147us;1us;147us;1us;148us;2us;149us;168us;1us;149us;1us;150us;4us;151us;152us;153us;154us;3us;151us;1089us;1090us;1us;152us;2us;153us;154us;4us;153us;985us;986us;987us;1us;154us;3us;155us;1089us;1090us;1us;155us;3us;156us;1089us;1090us;5us;157us;158us;159us;160us;161us;2us;157us;158us;1us;157us;1us;158us;2us;159us;160us;1us;159us;1us;160us;1us;161us;1us;162us;3us;163us;1089us;1090us;3us;164us;165us;166us;2us;164us;165us;1us;164us;1us;165us;1us;166us;1us;167us;1us;167us;1us;167us;1us;168us;2us;170us;171us;1us;171us;4us;172us;173us;174us;175us;3us;172us;174us;177us;2us;172us;174us;1us;172us;1us;172us;2us;173us;590us;1us;173us;1us;173us;1us;174us;1us;175us;1us;176us;2us;177us;1160us;1us;177us;3us;178us;1089us;1090us;1us;178us;1us;178us;2us;179us;180us;3us;179us;1089us;1090us;1us;179us;1us;179us;1us;180us;3us;180us;1089us;1090us;1us;180us;1us;180us;1us;180us;1us;181us;1us;181us;1us;182us;1us;182us;2us;183us;1088us;1us;183us;1us;184us;1us;184us;7us;185us;186us;229us;230us;232us;240us;246us;1us;185us;1us;187us;1us;188us;1us;189us;1us;190us;1us;190us;1us;190us;1us;191us;1us;191us;1us;191us;4us;193us;194us;195us;196us;1us;194us;2us;195us;196us;2us;195us;196us;2us;195us;196us;2us;195us;196us;2us;195us;196us;1us;195us;1us;195us;1us;196us;5us;197us;198us;199us;208us;209us;2us;197us;198us;2us;197us;198us;2us;197us;198us;2us;197us;198us;1us;197us;1us;197us;1us;198us;1us;199us;1us;200us;1us;200us;1us;201us;1us;202us;1us;203us;1us;203us;1us;203us;1us;204us;3us;205us;206us;207us;2us;205us;206us;1us;205us;1us;206us;2us;207us;214us;1us;207us;2us;208us;209us;2us;208us;209us;1us;208us;1us;209us;2us;210us;211us;2us;210us;211us;1us;210us;1us;211us;1us;212us;1us;213us;1us;214us;1us;214us;1us;216us;1us;216us;1us;216us;1us;217us;1us;217us;2us;218us;219us;2us;218us;219us;1us;218us;1us;219us;2us;220us;221us;1us;221us;1us;221us;1us;222us;1us;222us;1us;222us;1us;222us;1us;222us;1us;222us;4us;223us;224us;225us;226us;4us;223us;224us;225us;226us;4us;223us;224us;225us;226us;1us;223us;1us;223us;1us;224us;1us;225us;1us;226us;2us;227us;228us;1us;228us;2us;229us;230us;1us;230us;16us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;21us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;296us;297us;298us;299us;300us;16us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;21us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;296us;297us;298us;299us;300us;1us;231us;1us;232us;3us;233us;234us;241us;1us;233us;1us;233us;1us;234us;2us;235us;236us;4us;235us;985us;986us;987us;1us;235us;1us;236us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;238us;1us;239us;1us;239us;1us;240us;1us;240us;1us;241us;1us;241us;4us;242us;243us;244us;245us;3us;242us;243us;244us;3us;242us;243us;244us;1us;242us;1us;242us;1us;242us;1us;243us;1us;244us;1us;245us;1us;245us;1us;246us;1us;246us;4us;247us;248us;249us;250us;4us;247us;248us;249us;250us;4us;247us;248us;249us;250us;3us;247us;248us;249us;2us;247us;248us;1us;247us;1us;248us;1us;249us;1us;250us;4us;251us;252us;253us;254us;4us;251us;252us;253us;254us;4us;251us;252us;253us;254us;3us;251us;252us;253us;3us;251us;252us;253us;1us;251us;1us;251us;1us;251us;1us;252us;1us;253us;1us;254us;2us;256us;257us;1us;256us;1us;257us;2us;258us;528us;1us;258us;1us;258us;1us;259us;1us;259us;1us;259us;1us;260us;2us;261us;262us;1us;261us;1us;261us;1us;261us;1us;262us;1us;264us;1us;265us;1us;266us;1us;267us;2us;268us;269us;1us;268us;1us;268us;1us;271us;1us;271us;1us;271us;3us;273us;274us;275us;2us;273us;274us;1us;273us;1us;274us;1us;274us;1us;274us;1us;275us;1us;276us;2us;278us;279us;1us;278us;1us;279us;1us;280us;2us;282us;283us;1us;282us;1us;283us;2us;284us;285us;2us;284us;285us;1us;284us;1us;285us;1us;286us;2us;287us;288us;2us;287us;288us;1us;287us;4us;289us;290us;291us;292us;5us;289us;290us;291us;292us;429us;3us;289us;290us;291us;1us;289us;1us;289us;1us;290us;1us;290us;1us;291us;1us;292us;1us;292us;1us;292us;1us;293us;1us;293us;1us;294us;1us;295us;5us;296us;297us;298us;299us;300us;5us;296us;297us;298us;299us;300us;4us;296us;981us;1089us;1090us;1us;296us;1us;296us;1us;296us;1us;297us;1us;298us;1us;299us;5us;300us;988us;1038us;1039us;1050us;2us;300us;1035us;2us;300us;460us;1us;300us;1us;300us;4us;301us;302us;303us;304us;2us;301us;302us;1us;301us;1us;302us;1us;303us;1us;303us;1us;304us;6us;305us;1040us;1041us;1042us;1043us;1044us;1us;305us;1us;306us;3us;307us;308us;309us;2us;307us;308us;1us;307us;1us;308us;1us;309us;1us;309us;1us;310us;1us;311us;1us;312us;1us;313us;1us;314us;4us;315us;316us;317us;318us;4us;315us;317us;1089us;1090us;1us;316us;3us;316us;1089us;1090us;1us;317us;1us;318us;1us;319us;1us;320us;2us;320us;321us;1us;320us;2us;321us;325us;3us;321us;326us;327us;1us;321us;2us;321us;326us;1us;321us;1us;322us;2us;323us;324us;2us;323us;324us;1us;324us;2us;324us;336us;1us;325us;1us;325us;1us;325us;1us;325us;1us;326us;1us;329us;1us;329us;1us;329us;1us;329us;1us;329us;1us;330us;1us;333us;2us;333us;334us;2us;334us;928us;2us;334us;930us;1us;334us;1us;334us;1us;335us;2us;336us;979us;2us;336us;980us;1us;336us;3us;336us;1052us;1053us;3us;337us;1052us;1053us;1us;338us;1us;338us;1us;338us;1us;338us;11us;339us;340us;341us;342us;343us;345us;346us;347us;979us;982us;991us;2us;339us;991us;2us;339us;991us;7us;340us;341us;342us;343us;345us;346us;347us;1us;340us;3us;341us;346us;347us;1us;341us;1us;342us;1us;343us;1us;343us;1us;343us;5us;344us;988us;1038us;1039us;1050us;2us;344us;349us;1us;344us;1us;344us;1us;344us;1us;344us;1us;344us;1us;345us;1us;345us;1us;346us;4us;348us;985us;986us;987us;1us;349us;4us;349us;985us;986us;987us;9us;350us;964us;965us;969us;970us;971us;985us;986us;987us;1us;351us;1us;351us;1us;352us;1us;352us;1us;352us;2us;353us;371us;1us;354us;2us;355us;356us;1us;355us;1us;355us;9us;357us;358us;359us;360us;361us;362us;363us;364us;365us;9us;357us;358us;359us;360us;361us;362us;363us;364us;365us;6us;357us;359us;360us;363us;364us;365us;1us;358us;2us;359us;363us;1us;359us;1us;360us;2us;361us;362us;1us;361us;1us;362us;1us;363us;1us;364us;1us;364us;1us;365us;6us;365us;769us;770us;771us;775us;778us;1us;366us;6us;367us;368us;1091us;1092us;1094us;1095us;1us;367us;1us;367us;1us;368us;1us;368us;1us;368us;6us;369us;370us;372us;373us;375us;1088us;1us;369us;2us;370us;375us;7us;370us;375us;769us;770us;771us;775us;778us;2us;370us;375us;1us;371us;2us;372us;373us;1us;372us;1us;373us;1us;374us;1us;374us;2us;376us;377us;1us;376us;1us;376us;3us;378us;380us;1088us;2us;378us;380us;8us;378us;955us;956us;957us;958us;985us;986us;987us;8us;379us;955us;956us;957us;958us;985us;986us;987us;1us;380us;1us;381us;1us;382us;1us;383us;2us;384us;385us;2us;384us;1160us;1us;384us;1us;385us;1us;386us;1us;386us;4us;387us;388us;389us;390us;4us;387us;388us;389us;390us;3us;387us;388us;389us;2us;387us;388us;1us;387us;1us;388us;1us;389us;1us;390us;1us;391us;1us;391us;2us;392us;393us;2us;392us;393us;2us;392us;393us;1us;392us;1us;392us;1us;393us;3us;394us;395us;396us;2us;395us;396us;1us;395us;1us;396us;1us;398us;3us;398us;1089us;1090us;1us;399us;1us;399us;1us;399us;1us;400us;1us;401us;1us;401us;1us;402us;1us;402us;1us;402us;1us;402us;2us;403us;404us;1us;403us;1us;403us;1us;404us;1us;405us;1us;406us;1us;407us;1us;408us;1us;409us;1us;410us;1us;411us;1us;411us;1us;411us;1us;411us;1us;411us;1us;411us;1us;411us;1us;411us;2us;412us;415us;2us;413us;416us;1us;415us;1us;415us;1us;416us;1us;416us;2us;417us;418us;5us;417us;418us;420us;421us;422us;1us;418us;3us;419us;1089us;1090us;4us;420us;421us;422us;424us;1us;420us;1us;420us;1us;420us;1us;421us;1us;422us;1us;423us;2us;423us;425us;1us;423us;2us;424us;425us;1us;426us;1us;426us;1us;427us;1us;427us;1us;427us;1us;429us;1us;429us;1us;430us;3us;431us;432us;433us;3us;431us;432us;433us;3us;431us;432us;433us;3us;431us;432us;433us;2us;431us;432us;1us;431us;1us;432us;1us;433us;2us;434us;435us;2us;434us;435us;1us;434us;1us;435us;1us;436us;1us;437us;2us;437us;438us;1us;438us;1us;440us;2us;440us;441us;1us;440us;1us;440us;1us;441us;1us;441us;1us;442us;2us;443us;444us;1us;443us;1us;443us;1us;444us;1us;445us;1us;446us;1us;447us;1us;448us;1us;449us;1us;450us;1us;451us;1us;452us;1us;453us;1us;454us;1us;455us;1us;456us;1us;457us;1us;458us;1us;459us;1us;460us;1us;461us;1us;462us;2us;463us;465us;1us;463us;1us;463us;2us;464us;466us;2us;464us;466us;1us;464us;1us;464us;1us;467us;1us;468us;1us;468us;1us;468us;1us;469us;1us;470us;1us;470us;2us;471us;472us;1us;472us;1us;472us;7us;473us;488us;489us;490us;495us;497us;501us;1us;474us;1us;475us;1us;475us;3us;476us;477us;478us;4us;476us;477us;479us;480us;2us;476us;477us;1us;476us;1us;477us;1us;478us;1us;480us;1us;480us;1us;481us;5us;483us;484us;485us;486us;487us;2us;483us;485us;1us;483us;1us;484us;1us;485us;2us;486us;590us;1us;486us;1us;487us;7us;488us;489us;489us;490us;495us;497us;501us;7us;488us;489us;490us;490us;495us;497us;501us;7us;488us;489us;490us;494us;495us;497us;501us;7us;488us;489us;490us;495us;495us;497us;501us;7us;488us;489us;490us;495us;497us;498us;501us;7us;488us;489us;490us;495us;497us;500us;501us;7us;488us;489us;490us;495us;497us;501us;501us;7us;488us;489us;490us;495us;497us;501us;592us;7us;488us;489us;490us;495us;497us;501us;593us;7us;488us;489us;490us;495us;497us;501us;643us;8us;488us;489us;490us;495us;497us;501us;644us;645us;1us;488us;1us;488us;1us;489us;1us;490us;3us;491us;494us;496us;2us;492us;500us;1us;493us;2us;494us;496us;2us;495us;497us;1us;496us;1us;497us;2us;498us;499us;1us;499us;1us;500us;1us;501us;3us;502us;503us;504us;1us;502us;3us;503us;504us;1160us;1us;503us;1us;504us;1us;504us;3us;505us;506us;507us;6us;505us;506us;507us;1127us;1129us;1130us;2us;505us;506us;9us;505us;545us;546us;549us;550us;552us;555us;557us;561us;1us;506us;1us;507us;8us;508us;509us;510us;511us;512us;513us;514us;530us;4us;508us;509us;510us;511us;1us;509us;1us;510us;1us;510us;1us;511us;1us;511us;1us;512us;1us;513us;1us;513us;1us;514us;1us;514us;1us;515us;1us;515us;1us;516us;9us;517us;535us;536us;537us;538us;1091us;1092us;1094us;1095us;1us;517us;1us;517us;1us;518us;4us;519us;520us;521us;522us;1us;519us;1us;520us;1us;520us;1us;521us;1us;521us;1us;523us;2us;524us;525us;1us;524us;1us;524us;1us;525us;1us;525us;1us;526us;1us;526us;1us;526us;1us;527us;1us;527us;1us;527us;1us;529us;2us;529us;1112us;1us;529us;1us;530us;1us;531us;1us;532us;1us;533us;1us;534us;8us;535us;536us;537us;538us;1091us;1092us;1094us;1095us;2us;535us;536us;1us;535us;1us;536us;3us;537us;590us;1092us;2us;537us;1092us;1us;538us;4us;539us;540us;541us;542us;4us;539us;540us;541us;542us;5us;539us;540us;547us;554us;556us;1us;539us;1us;540us;2us;541us;590us;1us;541us;1us;542us;9us;543us;545us;546us;549us;550us;552us;555us;557us;561us;9us;545us;546us;546us;549us;550us;552us;555us;557us;561us;9us;545us;546us;549us;550us;551us;552us;555us;557us;561us;9us;545us;546us;549us;550us;552us;552us;555us;557us;561us;9us;545us;546us;549us;550us;552us;554us;555us;557us;561us;9us;545us;546us;549us;550us;552us;555us;555us;557us;561us;9us;545us;546us;549us;550us;552us;555us;557us;558us;561us;9us;545us;546us;549us;550us;552us;555us;557us;560us;561us;8us;545us;546us;549us;550us;552us;555us;557us;561us;9us;545us;546us;549us;550us;552us;555us;557us;561us;561us;9us;545us;546us;549us;550us;552us;555us;557us;561us;564us;10us;545us;546us;549us;550us;552us;555us;557us;561us;568us;569us;14us;545us;546us;549us;550us;552us;555us;557us;561us;637us;638us;852us;853us;854us;855us;9us;545us;546us;549us;550us;552us;555us;557us;561us;720us;1us;545us;1us;545us;1us;546us;3us;547us;554us;556us;2us;548us;560us;2us;549us;550us;1us;549us;1us;550us;1us;551us;1us;552us;1us;553us;2us;554us;556us;2us;555us;557us;1us;556us;1us;557us;2us;558us;559us;1us;559us;1us;560us;1us;561us;2us;562us;563us;1us;562us;2us;563us;1160us;1us;563us;5us;564us;565us;566us;1089us;1090us;2us;564us;565us;1us;565us;1us;566us;1us;568us;2us;569us;1160us;1us;569us;3us;570us;571us;572us;2us;570us;571us;1us;570us;1us;571us;1us;572us;1us;573us;2us;574us;575us;1us;574us;1us;574us;1us;575us;54us;576us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;2us;577us;578us;1us;577us;1us;579us;2us;579us;922us;3us;580us;581us;582us;2us;580us;581us;1us;580us;1us;581us;1us;583us;1us;583us;58us;584us;585us;586us;587us;588us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;2us;584us;585us;1us;584us;1us;587us;1us;587us;1us;588us;1us;588us;1us;588us;1us;588us;5us;589us;597us;598us;599us;600us;1us;590us;2us;590us;626us;2us;590us;632us;2us;590us;635us;2us;590us;637us;2us;590us;709us;2us;590us;719us;2us;590us;723us;2us;590us;783us;2us;590us;796us;2us;590us;815us;2us;590us;819us;2us;590us;824us;3us;590us;824us;1092us;2us;590us;840us;2us;590us;914us;1us;591us;1us;592us;1us;592us;1us;592us;1us;592us;1us;592us;1us;593us;1us;593us;1us;593us;1us;593us;1us;593us;1us;593us;2us;595us;596us;2us;595us;596us;1us;595us;1us;596us;4us;597us;598us;599us;600us;1us;597us;1us;598us;2us;599us;600us;1us;599us;1us;600us;1us;601us;1us;602us;1us;603us;2us;604us;605us;2us;604us;605us;1us;604us;1us;605us;2us;606us;607us;2us;606us;607us;1us;606us;1us;607us;5us;608us;609us;610us;611us;612us;3us;608us;609us;612us;1us;608us;1us;609us;2us;610us;611us;1us;611us;1us;612us;1us;612us;3us;613us;614us;615us;55us;613us;614us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;613us;1us;614us;1us;615us;1us;616us;54us;616us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;2us;617us;618us;54us;617us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;619us;1us;619us;2us;620us;621us;1us;620us;1us;622us;1us;622us;1us;623us;1us;623us;15us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;6us;624us;625us;626us;627us;628us;629us;4us;624us;625us;626us;627us;2us;624us;625us;1us;624us;1us;625us;1us;626us;1us;627us;1us;628us;1us;629us;1us;629us;5us;630us;631us;632us;633us;634us;4us;630us;631us;632us;633us;2us;630us;631us;1us;630us;1us;631us;1us;632us;1us;633us;1us;634us;1us;635us;1us;635us;1us;635us;1us;636us;1us;637us;2us;638us;1221us;2us;639us;641us;54us;639us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;2us;640us;642us;54us;640us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;641us;1us;642us;1us;643us;1us;643us;1us;643us;1us;643us;1us;643us;1us;643us;1us;643us;2us;644us;645us;2us;644us;645us;2us;644us;645us;2us;644us;645us;2us;644us;645us;1us;644us;1us;644us;1us;645us;1us;646us;1us;646us;1us;646us;1us;646us;1us;646us;1us;647us;1us;647us;1us;647us;1us;648us;54us;648us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1us;649us;1us;649us;54us;650us;651us;652us;653us;654us;655us;656us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;744us;745us;746us;747us;57us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;704us;705us;706us;707us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;727us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;731us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;736us;744us;745us;746us;747us;55us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;738us;739us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;740us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;742us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;745us;746us;747us;53us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;747us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;830us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;852us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;855us;54us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;855us;55us;650us;651us;652us;653us;654us;655us;656us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;744us;745us;746us;747us;1182us;1183us;2us;650us;651us;1us;650us;1us;651us;2us;652us;653us;1us;652us;1us;653us;2us;654us;655us;1us;654us;1us;655us;1us;656us;2us;657us;703us;1us;657us;1us;657us;5us;658us;740us;741us;742us;743us;7us;658us;740us;741us;742us;743us;785us;786us;2us;659us;660us;1us;660us;2us;661us;662us;1us;662us;2us;663us;664us;1us;664us;2us;665us;666us;1us;666us;2us;667us;668us;1us;668us;2us;669us;670us;1us;670us;2us;671us;672us;1us;672us;2us;673us;674us;1us;674us;2us;675us;676us;1us;676us;2us;677us;678us;1us;678us;2us;679us;680us;1us;680us;2us;681us;682us;1us;682us;2us;683us;684us;1us;684us;2us;685us;686us;1us;686us;2us;687us;688us;1us;688us;2us;689us;690us;1us;690us;2us;691us;692us;1us;692us;2us;693us;694us;1us;694us;2us;695us;696us;1us;696us;2us;697us;698us;1us;698us;2us;699us;700us;1us;701us;3us;701us;1119us;1120us;2us;701us;1120us;1us;702us;2us;702us;1107us;3us;704us;705us;706us;2us;704us;705us;1us;704us;1us;705us;1us;706us;1us;706us;1us;707us;1us;708us;1us;709us;1us;710us;1us;711us;1us;711us;1us;711us;1us;712us;1us;712us;3us;713us;714us;715us;2us;713us;714us;1us;713us;1us;714us;1us;715us;1us;716us;2us;717us;718us;1us;717us;1us;718us;1us;719us;1us;720us;6us;721us;722us;723us;724us;725us;726us;4us;721us;722us;724us;725us;2us;722us;724us;1us;722us;1us;723us;1us;723us;1us;724us;1us;725us;1us;726us;1us;727us;1us;729us;1us;729us;1us;730us;1us;730us;2us;731us;732us;1us;732us;2us;733us;734us;1us;733us;1us;734us;1us;736us;1us;737us;1us;737us;2us;738us;739us;1us;738us;1us;739us;4us;740us;741us;742us;743us;1us;741us;2us;742us;743us;1us;743us;4us;744us;745us;746us;747us;1us;744us;2us;746us;747us;1us;746us;1us;748us;2us;748us;1085us;3us;748us;1085us;1099us;2us;748us;1099us;1us;748us;1us;749us;2us;749us;1106us;1us;749us;1us;750us;2us;750us;1102us;1us;750us;1us;751us;2us;751us;1105us;1us;751us;1us;752us;2us;752us;1118us;1us;752us;1us;753us;2us;753us;1113us;1us;753us;1us;754us;2us;754us;1114us;1us;754us;4us;755us;756us;757us;758us;8us;755us;756us;757us;758us;896us;897us;898us;899us;3us;755us;756us;757us;7us;755us;756us;757us;896us;897us;898us;899us;3us;755us;756us;757us;5us;755us;756us;757us;897us;898us;2us;755us;756us;4us;755us;756us;897us;898us;1us;755us;1us;755us;1us;757us;1us;758us;1us;759us;1us;759us;1us;760us;1us;760us;2us;761us;762us;8us;761us;762us;870us;871us;872us;876us;877us;878us;7us;762us;870us;871us;872us;876us;877us;878us;1us;762us;6us;763us;769us;770us;771us;775us;778us;1us;764us;6us;764us;769us;770us;771us;775us;778us;6us;765us;769us;770us;771us;775us;778us;3us;766us;767us;768us;6us;766us;767us;768us;873us;874us;875us;2us;766us;767us;6us;766us;769us;770us;771us;775us;778us;1us;767us;1us;768us;6us;769us;769us;770us;771us;775us;778us;6us;769us;770us;770us;771us;775us;778us;6us;769us;770us;771us;772us;775us;778us;6us;769us;770us;771us;775us;778us;1047us;1us;769us;1us;770us;1us;771us;1us;771us;1us;772us;2us;772us;1096us;1us;773us;2us;773us;1084us;1us;773us;2us;773us;1084us;1us;774us;1us;775us;1us;775us;1us;776us;1us;776us;1us;776us;1us;777us;2us;777us;1112us;1us;777us;1us;778us;1us;778us;1us;779us;1us;780us;4us;781us;782us;783us;784us;2us;781us;782us;1us;781us;1us;782us;1us;783us;1us;784us;3us;785us;786us;910us;2us;785us;786us;1us;785us;1us;786us;1us;787us;1us;788us;1us;789us;1us;791us;6us;792us;793us;1091us;1092us;1094us;1095us;1us;792us;1us;792us;1us;792us;1us;792us;1us;793us;1us;793us;4us;794us;795us;796us;797us;2us;794us;795us;1us;794us;1us;795us;1us;796us;1us;797us;1us;798us;1us;799us;1us;800us;1us;801us;1us;802us;1us;803us;1us;804us;1us;805us;1us;806us;1us;807us;1us;808us;4us;809us;810us;811us;812us;2us;809us;810us;1us;809us;1us;810us;1us;811us;1us;811us;1us;812us;4us;813us;814us;815us;816us;5us;813us;814us;815us;816us;1121us;2us;813us;814us;1us;813us;1us;814us;1us;815us;1us;816us;4us;817us;818us;819us;820us;2us;817us;818us;1us;817us;1us;818us;1us;819us;1us;820us;10us;821us;822us;823us;824us;825us;826us;827us;828us;829us;830us;15us;821us;822us;823us;824us;825us;826us;827us;828us;829us;830us;835us;1091us;1092us;1094us;1095us;14us;821us;822us;823us;824us;825us;826us;827us;828us;829us;830us;1091us;1092us;1094us;1095us;1us;821us;2us;822us;823us;1us;822us;1us;823us;1us;824us;2us;824us;1092us;1us;825us;1us;826us;1us;827us;1us;828us;1us;829us;1us;830us;1us;830us;1us;831us;1us;831us;1us;831us;1us;831us;1us;831us;1us;831us;1us;832us;1us;833us;1us;834us;2us;834us;837us;2us;835us;836us;1us;835us;1us;836us;4us;836us;985us;986us;987us;5us;838us;839us;840us;841us;842us;2us;838us;839us;1us;838us;1us;839us;1us;840us;1us;841us;1us;842us;1us;843us;1us;844us;1us;845us;1us;846us;1us;848us;1us;850us;1us;851us;1us;851us;2us;852us;853us;1us;853us;1us;854us;1us;855us;1us;855us;1us;856us;1us;857us;1us;858us;1us;858us;1us;858us;2us;858us;859us;1us;858us;1us;858us;1us;859us;1us;862us;1us;864us;1us;864us;1us;864us;1us;864us;2us;866us;867us;1us;866us;5us;867us;988us;1038us;1039us;1050us;1us;867us;1us;868us;1us;868us;1us;868us;1us;868us;2us;868us;887us;1us;868us;1us;869us;2us;870us;871us;1us;870us;2us;870us;887us;1us;870us;1us;871us;2us;874us;875us;1us;875us;2us;875us;887us;1us;875us;1us;876us;1us;876us;2us;876us;887us;1us;876us;2us;877us;878us;1us;877us;1us;877us;1us;878us;2us;878us;887us;1us;878us;1us;878us;1us;879us;2us;879us;887us;2us;881us;884us;2us;882us;883us;1us;883us;1us;884us;3us;885us;1089us;1090us;1us;886us;1us;887us;5us;889us;890us;891us;892us;893us;3us;889us;890us;891us;1us;889us;1us;891us;1us;893us;2us;894us;895us;1us;894us;1us;894us;1us;894us;1us;895us;1us;895us;1us;897us;1us;900us;2us;902us;904us;1us;902us;1us;903us;1us;903us;1us;903us;1us;904us;1us;904us;1us;905us;1us;905us;1us;907us;1us;907us;1us;908us;1us;908us;1us;909us;4us;909us;985us;986us;987us;1us;909us;1us;909us;1us;909us;1us;910us;1us;910us;1us;911us;5us;912us;913us;914us;915us;916us;2us;912us;913us;1us;912us;1us;913us;1us;914us;1us;915us;1us;916us;2us;917us;918us;2us;917us;918us;2us;917us;918us;1us;917us;1us;918us;6us;919us;920us;921us;922us;923us;924us;5us;919us;920us;921us;922us;923us;4us;919us;920us;921us;922us;2us;919us;920us;1us;919us;1us;920us;1us;921us;1us;921us;1us;923us;1us;923us;1us;924us;1us;924us;1us;925us;1us;925us;1us;926us;1us;926us;1us;926us;2us;927us;928us;1us;928us;2us;929us;930us;1us;930us;2us;932us;933us;1us;932us;1us;933us;3us;934us;935us;936us;2us;934us;935us;1us;934us;1us;935us;3us;937us;938us;940us;2us;937us;938us;1us;937us;1us;938us;1us;939us;1us;939us;3us;941us;942us;944us;2us;941us;942us;1us;941us;1us;942us;1us;943us;1us;943us;5us;945us;946us;947us;948us;949us;6us;945us;946us;949us;985us;986us;987us;2us;945us;946us;4us;945us;985us;986us;987us;1us;946us;2us;947us;948us;2us;947us;948us;2us;947us;948us;4us;947us;985us;986us;987us;1us;948us;6us;950us;951us;954us;985us;986us;987us;2us;950us;951us;4us;950us;985us;986us;987us;1us;951us;2us;952us;953us;2us;952us;953us;2us;952us;953us;4us;952us;985us;986us;987us;1us;953us;8us;955us;956us;957us;958us;958us;985us;986us;987us;7us;955us;956us;957us;958us;985us;986us;987us;4us;955us;956us;957us;958us;1us;955us;1us;956us;1us;957us;1us;957us;4us;959us;960us;961us;962us;3us;959us;960us;961us;1us;959us;1us;960us;1us;961us;1us;961us;1us;963us;1us;963us;8us;964us;965us;969us;970us;971us;985us;986us;987us;2us;964us;965us;1us;964us;1us;965us;1us;966us;1us;966us;2us;967us;968us;1us;967us;1us;968us;2us;969us;970us;1us;969us;1us;970us;8us;972us;973us;975us;976us;978us;985us;986us;987us;2us;972us;973us;1us;972us;1us;973us;1us;974us;1us;974us;2us;975us;976us;1us;975us;1us;976us;1us;977us;1us;977us;3us;979us;982us;991us;1us;979us;4us;980us;1033us;1052us;1053us;1us;980us;3us;981us;1089us;1090us;1us;982us;2us;983us;984us;4us;983us;984us;1051us;1054us;1us;983us;1us;983us;7us;985us;986us;987us;1040us;1041us;1042us;1043us;1us;985us;1us;986us;1us;986us;1us;987us;4us;988us;1038us;1039us;1050us;1us;988us;1us;988us;1us;988us;1us;989us;1us;990us;1us;991us;1us;991us;2us;992us;1037us;1us;992us;1us;992us;32us;993us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;993us;31us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;994us;30us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;995us;29us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;996us;28us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;997us;27us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;998us;26us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;999us;25us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1000us;24us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1001us;23us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1002us;22us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1003us;21us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1004us;20us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1005us;19us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1006us;18us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1007us;17us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1008us;16us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1009us;15us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1010us;14us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1011us;13us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1012us;12us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1013us;11us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1014us;10us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1015us;9us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1016us;8us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1017us;7us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1018us;6us;1019us;1020us;1021us;1022us;1023us;1024us;1us;1019us;5us;1020us;1021us;1022us;1023us;1024us;1us;1020us;4us;1021us;1022us;1023us;1024us;1us;1021us;3us;1022us;1023us;1024us;1us;1022us;2us;1023us;1024us;1us;1023us;1us;1024us;1us;1024us;1us;1025us;1us;1025us;1us;1025us;3us;1025us;1026us;1027us;4us;1026us;1027us;1057us;1058us;2us;1026us;1027us;1us;1026us;1us;1027us;2us;1029us;1030us;1us;1030us;1us;1030us;4us;1031us;1038us;1039us;1050us;1us;1031us;1us;1031us;1us;1031us;3us;1032us;1052us;1053us;3us;1033us;1052us;1053us;1us;1034us;1us;1035us;3us;1035us;1052us;1053us;1us;1036us;1us;1037us;3us;1038us;1039us;1050us;2us;1038us;1039us;5us;1038us;1039us;1064us;1065us;1066us;1us;1038us;1us;1039us;5us;1040us;1041us;1042us;1043us;1044us;5us;1040us;1041us;1042us;1043us;1044us;3us;1040us;1041us;1042us;2us;1040us;1041us;1us;1040us;1us;1041us;1us;1042us;1us;1043us;1us;1044us;1us;1045us;1us;1046us;1us;1047us;1us;1048us;1us;1049us;1us;1050us;1us;1050us;1us;1051us;2us;1052us;1053us;4us;1052us;1053us;1089us;1090us;1us;1053us;1us;1054us;1us;1054us;1us;1055us;1us;1056us;1us;1056us;7us;1057us;1058us;1059us;1060us;1061us;1062us;1063us;3us;1057us;1058us;1059us;3us;1057us;1058us;1059us;2us;1057us;1058us;1us;1057us;1us;1058us;1us;1059us;3us;1060us;1061us;1067us;1us;1060us;1us;1061us;1us;1062us;1us;1063us;3us;1064us;1065us;1066us;2us;1065us;1066us;1us;1065us;1us;1067us;1us;1068us;2us;1070us;1071us;3us;1070us;1081us;1082us;1us;1070us;1us;1071us;1us;1071us;3us;1072us;1089us;1090us;1us;1073us;1us;1074us;3us;1074us;1081us;1082us;1us;1074us;2us;1075us;1076us;1us;1076us;1us;1076us;1us;1077us;2us;1078us;1079us;1us;1079us;1us;1080us;3us;1081us;1081us;1082us;3us;1081us;1082us;1082us;3us;1081us;1082us;1083us;1us;1081us;1us;1082us;1us;1083us;1us;1084us;1us;1084us;1us;1085us;1us;1085us;2us;1085us;1132us;1us;1086us;1us;1087us;1us;1088us;2us;1089us;1090us;1us;1089us;1us;1090us;4us;1091us;1092us;1094us;1095us;1us;1091us;1us;1091us;1us;1092us;1us;1092us;1us;1093us;3us;1094us;1095us;1124us;3us;1094us;1095us;1124us;1us;1094us;1us;1095us;1us;1095us;1us;1095us;1us;1096us;1us;1097us;1us;1098us;1us;1099us;1us;1100us;1us;1101us;1us;1102us;1us;1103us;1us;1104us;1us;1105us;1us;1106us;1us;1107us;1us;1108us;1us;1109us;1us;1110us;1us;1111us;1us;1112us;1us;1113us;1us;1114us;1us;1115us;1us;1116us;1us;1117us;1us;1118us;2us;1119us;1120us;1us;1120us;1us;1121us;1us;1121us;1us;1122us;1us;1123us;1us;1123us;1us;1124us;1us;1125us;1us;1126us;3us;1127us;1129us;1130us;1us;1128us;2us;1129us;1130us;1us;1129us;1us;1130us;1us;1131us;1us;1132us;1us;1133us;1us;1134us;1us;1135us;1us;1136us;2us;1137us;1138us;1us;1138us;1us;1139us;1us;1139us;2us;1141us;1143us;2us;1142us;1144us;1us;1143us;1us;1144us;1us;1145us;1us;1146us;1us;1147us;1us;1148us;1us;1149us;1us;1150us;1us;1152us;1us;1154us;1us;1158us;1us;1160us;1us;1162us;1us;1166us;1us;1168us;1us;1170us;1us;1171us;1us;1172us;1us;1173us;1us;1174us;1us;1175us;1us;1176us;1us;1177us;1us;1178us;1us;1179us;1us;1180us;1us;1181us;1us;1183us;1us;1183us;1us;1184us;2us;1185us;1186us;1us;1185us;1us;1185us;1us;1186us;2us;1187us;1189us;1us;1187us;1us;1187us;1us;1188us;1us;1189us;1us;1190us;1us;1191us;1us;1193us;1us;1195us;2us;1195us;1216us;1us;1195us;1us;1196us;1us;1197us;1us;1198us;2us;1198us;1217us;1us;1198us;1us;1199us;1us;1200us;1us;1201us;1us;1201us;1us;1202us;1us;1203us;1us;1204us;1us;1205us;1us;1205us;1us;1206us;1us;1207us;1us;1208us;1us;1208us;1us;1209us;1us;1210us;1us;1211us;1us;1212us;1us;1213us;1us;1214us;1us;1215us;1us;1216us;1us;1217us;1us;1218us;1us;1219us;1us;1220us;1us;1221us;|]
-let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us;2us;4us;6us;8us;10us;12us;14us;16us;18us;20us;22us;24us;26us;28us;30us;32us;35us;37us;40us;42us;45us;47us;49us;51us;53us;55us;57us;59us;62us;64us;73us;82us;137us;139us;142us;144us;146us;148us;150us;152us;155us;157us;159us;161us;164us;166us;168us;170us;174us;176us;180us;184us;188us;192us;196us;198us;200us;203us;206us;210us;212us;215us;217us;220us;222us;224us;226us;228us;236us;244us;249us;251us;253us;255us;259us;262us;264us;266us;268us;272us;274us;276us;279us;283us;286us;289us;291us;293us;295us;297us;299us;301us;308us;315us;319us;322us;324us;326us;328us;330us;332us;334us;336us;338us;340us;342us;344us;346us;348us;350us;352us;354us;356us;358us;361us;416us;418us;473us;475us;477us;481us;483us;485us;487us;489us;491us;493us;495us;497us;499us;501us;503us;505us;508us;510us;512us;514us;518us;520us;522us;524us;526us;528us;530us;532us;534us;536us;538us;540us;542us;544us;546us;550us;553us;555us;557us;559us;561us;564us;567us;569us;571us;574us;577us;579us;581us;584us;587us;589us;591us;593us;595us;597us;599us;601us;610us;624us;633us;647us;649us;651us;653us;655us;657us;659us;661us;663us;665us;667us;672us;675us;680us;682us;684us;686us;693us;695us;697us;699us;701us;703us;705us;707us;709us;711us;714us;717us;719us;721us;725us;728us;730us;732us;734us;736us;738us;740us;742us;744us;746us;748us;750us;752us;755us;757us;759us;761us;764us;766us;769us;771us;774us;776us;778us;780us;782us;795us;807us;811us;813us;815us;819us;822us;824us;826us;828us;831us;833us;835us;837us;849us;860us;917us;920us;922us;924us;926us;931us;933us;936us;938us;940us;943us;946us;949us;951us;953us;955us;957us;965us;973us;975us;979us;981us;987us;989us;991us;993us;995us;997us;1000us;1002us;1004us;1006us;1009us;1011us;1013us;1018us;1022us;1024us;1027us;1032us;1034us;1038us;1040us;1044us;1050us;1053us;1055us;1057us;1060us;1062us;1064us;1066us;1068us;1072us;1076us;1079us;1081us;1083us;1085us;1087us;1089us;1091us;1093us;1096us;1098us;1103us;1107us;1110us;1112us;1114us;1117us;1119us;1121us;1123us;1125us;1127us;1130us;1132us;1136us;1138us;1140us;1143us;1147us;1149us;1151us;1153us;1157us;1159us;1161us;1163us;1165us;1167us;1169us;1171us;1174us;1176us;1178us;1180us;1188us;1190us;1192us;1194us;1196us;1198us;1200us;1202us;1204us;1206us;1208us;1213us;1215us;1218us;1221us;1224us;1227us;1230us;1232us;1234us;1236us;1242us;1245us;1248us;1251us;1254us;1256us;1258us;1260us;1262us;1264us;1266us;1268us;1270us;1272us;1274us;1276us;1278us;1282us;1285us;1287us;1289us;1292us;1294us;1297us;1300us;1302us;1304us;1307us;1310us;1312us;1314us;1316us;1318us;1320us;1322us;1324us;1326us;1328us;1330us;1332us;1335us;1338us;1340us;1342us;1345us;1347us;1349us;1351us;1353us;1355us;1357us;1359us;1361us;1366us;1371us;1376us;1378us;1380us;1382us;1384us;1386us;1389us;1391us;1394us;1396us;1413us;1435us;1452us;1474us;1476us;1478us;1482us;1484us;1486us;1488us;1491us;1496us;1498us;1500us;1502us;1504us;1506us;1508us;1510us;1512us;1514us;1516us;1518us;1520us;1522us;1524us;1526us;1528us;1530us;1535us;1539us;1543us;1545us;1547us;1549us;1551us;1553us;1555us;1557us;1559us;1561us;1566us;1571us;1576us;1580us;1583us;1585us;1587us;1589us;1591us;1596us;1601us;1606us;1610us;1614us;1616us;1618us;1620us;1622us;1624us;1626us;1629us;1631us;1633us;1636us;1638us;1640us;1642us;1644us;1646us;1648us;1651us;1653us;1655us;1657us;1659us;1661us;1663us;1665us;1667us;1670us;1672us;1674us;1676us;1678us;1680us;1684us;1687us;1689us;1691us;1693us;1695us;1697us;1699us;1702us;1704us;1706us;1708us;1711us;1713us;1715us;1718us;1721us;1723us;1725us;1727us;1730us;1733us;1735us;1740us;1746us;1750us;1752us;1754us;1756us;1758us;1760us;1762us;1764us;1766us;1768us;1770us;1772us;1774us;1780us;1786us;1791us;1793us;1795us;1797us;1799us;1801us;1803us;1809us;1812us;1815us;1817us;1819us;1824us;1827us;1829us;1831us;1833us;1835us;1837us;1844us;1846us;1848us;1852us;1855us;1857us;1859us;1861us;1863us;1865us;1867us;1869us;1871us;1873us;1878us;1883us;1885us;1889us;1891us;1893us;1895us;1897us;1900us;1902us;1905us;1909us;1911us;1914us;1916us;1918us;1921us;1924us;1926us;1929us;1931us;1933us;1935us;1937us;1939us;1941us;1943us;1945us;1947us;1949us;1951us;1953us;1956us;1959us;1962us;1964us;1966us;1968us;1971us;1974us;1976us;1980us;1984us;1986us;1988us;1990us;1992us;2004us;2007us;2010us;2018us;2020us;2024us;2026us;2028us;2030us;2032us;2034us;2040us;2043us;2045us;2047us;2049us;2051us;2053us;2055us;2057us;2059us;2064us;2066us;2071us;2081us;2083us;2085us;2087us;2089us;2091us;2094us;2096us;2099us;2101us;2103us;2113us;2123us;2130us;2132us;2135us;2137us;2139us;2142us;2144us;2146us;2148us;2150us;2152us;2154us;2161us;2163us;2170us;2172us;2174us;2176us;2178us;2180us;2187us;2189us;2192us;2200us;2203us;2205us;2208us;2210us;2212us;2214us;2216us;2219us;2221us;2223us;2227us;2230us;2239us;2248us;2250us;2252us;2254us;2256us;2259us;2262us;2264us;2266us;2268us;2270us;2275us;2280us;2284us;2287us;2289us;2291us;2293us;2295us;2297us;2299us;2302us;2305us;2308us;2310us;2312us;2314us;2318us;2321us;2323us;2325us;2327us;2331us;2333us;2335us;2337us;2339us;2341us;2343us;2345us;2347us;2349us;2351us;2354us;2356us;2358us;2360us;2362us;2364us;2366us;2368us;2370us;2372us;2374us;2376us;2378us;2380us;2382us;2384us;2386us;2388us;2391us;2394us;2396us;2398us;2400us;2402us;2405us;2411us;2413us;2417us;2422us;2424us;2426us;2428us;2430us;2432us;2434us;2437us;2439us;2442us;2444us;2446us;2448us;2450us;2452us;2454us;2456us;2458us;2462us;2466us;2470us;2474us;2477us;2479us;2481us;2483us;2486us;2489us;2491us;2493us;2495us;2497us;2500us;2502us;2504us;2507us;2509us;2511us;2513us;2515us;2517us;2520us;2522us;2524us;2526us;2528us;2530us;2532us;2534us;2536us;2538us;2540us;2542us;2544us;2546us;2548us;2550us;2552us;2554us;2556us;2558us;2560us;2562us;2565us;2567us;2569us;2572us;2575us;2577us;2579us;2581us;2583us;2585us;2587us;2589us;2591us;2593us;2596us;2598us;2600us;2608us;2610us;2612us;2614us;2618us;2623us;2626us;2628us;2630us;2632us;2634us;2636us;2638us;2644us;2647us;2649us;2651us;2653us;2656us;2658us;2660us;2668us;2676us;2684us;2692us;2700us;2708us;2716us;2724us;2732us;2740us;2749us;2751us;2753us;2755us;2757us;2761us;2764us;2766us;2769us;2772us;2774us;2776us;2779us;2781us;2783us;2785us;2789us;2791us;2795us;2797us;2799us;2801us;2805us;2812us;2815us;2825us;2827us;2829us;2838us;2843us;2845us;2847us;2849us;2851us;2853us;2855us;2857us;2859us;2861us;2863us;2865us;2867us;2869us;2879us;2881us;2883us;2885us;2890us;2892us;2894us;2896us;2898us;2900us;2902us;2905us;2907us;2909us;2911us;2913us;2915us;2917us;2919us;2921us;2923us;2925us;2927us;2930us;2932us;2934us;2936us;2938us;2940us;2942us;2951us;2954us;2956us;2958us;2962us;2965us;2967us;2972us;2977us;2983us;2985us;2987us;2990us;2992us;2994us;3004us;3014us;3024us;3034us;3044us;3054us;3064us;3074us;3083us;3093us;3103us;3114us;3129us;3139us;3141us;3143us;3145us;3149us;3152us;3155us;3157us;3159us;3161us;3163us;3165us;3168us;3171us;3173us;3175us;3178us;3180us;3182us;3184us;3187us;3189us;3192us;3194us;3200us;3203us;3205us;3207us;3209us;3212us;3214us;3218us;3221us;3223us;3225us;3227us;3229us;3232us;3234us;3236us;3238us;3293us;3296us;3298us;3300us;3303us;3307us;3310us;3312us;3314us;3316us;3318us;3377us;3380us;3382us;3384us;3386us;3388us;3390us;3392us;3394us;3400us;3402us;3405us;3408us;3411us;3414us;3417us;3420us;3423us;3426us;3429us;3432us;3435us;3438us;3442us;3445us;3448us;3450us;3452us;3454us;3456us;3458us;3460us;3462us;3464us;3466us;3468us;3470us;3472us;3475us;3478us;3480us;3482us;3487us;3489us;3491us;3494us;3496us;3498us;3500us;3502us;3504us;3507us;3510us;3512us;3514us;3517us;3520us;3522us;3524us;3530us;3534us;3536us;3538us;3541us;3543us;3545us;3547us;3551us;3607us;3609us;3611us;3613us;3615us;3670us;3673us;3728us;3730us;3732us;3735us;3737us;3739us;3741us;3743us;3745us;3761us;3768us;3773us;3776us;3778us;3780us;3782us;3784us;3786us;3788us;3790us;3796us;3801us;3804us;3806us;3808us;3810us;3812us;3814us;3816us;3818us;3820us;3822us;3824us;3827us;3830us;3885us;3888us;3943us;3945us;3947us;3949us;3951us;3953us;3955us;3957us;3959us;3961us;3964us;3967us;3970us;3973us;3976us;3978us;3980us;3982us;3984us;3986us;3988us;3990us;3992us;3994us;3996us;3998us;4000us;4055us;4057us;4059us;4114us;4169us;4224us;4279us;4334us;4389us;4444us;4499us;4554us;4609us;4664us;4719us;4774us;4829us;4884us;4939us;4994us;5049us;5104us;5159us;5214us;5269us;5324us;5382us;5437us;5492us;5547us;5603us;5658us;5713us;5768us;5822us;5877us;5932us;5987us;6042us;6097us;6153us;6156us;6158us;6160us;6163us;6165us;6167us;6170us;6172us;6174us;6176us;6179us;6181us;6183us;6189us;6197us;6200us;6202us;6205us;6207us;6210us;6212us;6215us;6217us;6220us;6222us;6225us;6227us;6230us;6232us;6235us;6237us;6240us;6242us;6245us;6247us;6250us;6252us;6255us;6257us;6260us;6262us;6265us;6267us;6270us;6272us;6275us;6277us;6280us;6282us;6285us;6287us;6290us;6292us;6295us;6297us;6300us;6302us;6306us;6309us;6311us;6314us;6318us;6321us;6323us;6325us;6327us;6329us;6331us;6333us;6335us;6337us;6339us;6341us;6343us;6345us;6347us;6351us;6354us;6356us;6358us;6360us;6362us;6365us;6367us;6369us;6371us;6373us;6380us;6385us;6388us;6390us;6392us;6394us;6396us;6398us;6400us;6402us;6404us;6406us;6408us;6410us;6413us;6415us;6418us;6420us;6422us;6424us;6426us;6428us;6431us;6433us;6435us;6440us;6442us;6445us;6447us;6452us;6454us;6457us;6459us;6461us;6464us;6468us;6471us;6473us;6475us;6478us;6480us;6482us;6485us;6487us;6489us;6492us;6494us;6496us;6499us;6501us;6503us;6506us;6508us;6510us;6513us;6515us;6520us;6529us;6533us;6541us;6545us;6551us;6554us;6559us;6561us;6563us;6565us;6567us;6569us;6571us;6573us;6575us;6578us;6587us;6595us;6597us;6604us;6606us;6613us;6620us;6624us;6631us;6634us;6641us;6643us;6645us;6652us;6659us;6666us;6673us;6675us;6677us;6679us;6681us;6683us;6686us;6688us;6691us;6693us;6696us;6698us;6700us;6702us;6704us;6706us;6708us;6710us;6713us;6715us;6717us;6719us;6721us;6723us;6728us;6731us;6733us;6735us;6737us;6739us;6743us;6746us;6748us;6750us;6752us;6754us;6756us;6758us;6765us;6767us;6769us;6771us;6773us;6775us;6777us;6782us;6785us;6787us;6789us;6791us;6793us;6795us;6797us;6799us;6801us;6803us;6805us;6807us;6809us;6811us;6813us;6815us;6820us;6823us;6825us;6827us;6829us;6831us;6833us;6838us;6844us;6847us;6849us;6851us;6853us;6855us;6860us;6863us;6865us;6867us;6869us;6871us;6882us;6898us;6913us;6915us;6918us;6920us;6922us;6924us;6927us;6929us;6931us;6933us;6935us;6937us;6939us;6941us;6943us;6945us;6947us;6949us;6951us;6953us;6955us;6957us;6959us;6962us;6965us;6967us;6969us;6974us;6980us;6983us;6985us;6987us;6989us;6991us;6993us;6995us;6997us;6999us;7001us;7003us;7005us;7007us;7009us;7012us;7014us;7016us;7018us;7020us;7022us;7024us;7026us;7028us;7030us;7033us;7035us;7037us;7039us;7041us;7043us;7045us;7047us;7049us;7052us;7054us;7060us;7062us;7064us;7066us;7068us;7070us;7073us;7075us;7077us;7080us;7082us;7085us;7087us;7089us;7092us;7094us;7097us;7099us;7101us;7103us;7106us;7108us;7111us;7113us;7115us;7117us;7120us;7122us;7124us;7126us;7129us;7132us;7135us;7137us;7139us;7143us;7145us;7147us;7153us;7157us;7159us;7161us;7163us;7166us;7168us;7170us;7172us;7174us;7176us;7178us;7180us;7183us;7185us;7187us;7189us;7191us;7193us;7195us;7197us;7199us;7201us;7203us;7205us;7207us;7209us;7214us;7216us;7218us;7220us;7222us;7224us;7226us;7232us;7235us;7237us;7239us;7241us;7243us;7245us;7248us;7251us;7254us;7256us;7258us;7265us;7271us;7276us;7279us;7281us;7283us;7285us;7287us;7289us;7291us;7293us;7295us;7297us;7299us;7301us;7303us;7305us;7308us;7310us;7313us;7315us;7318us;7320us;7322us;7326us;7329us;7331us;7333us;7337us;7340us;7342us;7344us;7346us;7348us;7352us;7355us;7357us;7359us;7361us;7363us;7369us;7376us;7379us;7384us;7386us;7389us;7392us;7395us;7400us;7402us;7409us;7412us;7417us;7419us;7422us;7425us;7428us;7433us;7435us;7444us;7452us;7457us;7459us;7461us;7463us;7465us;7470us;7474us;7476us;7478us;7480us;7482us;7484us;7486us;7495us;7498us;7500us;7502us;7504us;7506us;7509us;7511us;7513us;7516us;7518us;7520us;7529us;7532us;7534us;7536us;7538us;7540us;7543us;7545us;7547us;7549us;7551us;7555us;7557us;7562us;7564us;7568us;7570us;7573us;7578us;7580us;7582us;7590us;7592us;7594us;7596us;7598us;7603us;7605us;7607us;7609us;7611us;7613us;7615us;7617us;7620us;7622us;7624us;7657us;7659us;7691us;7693us;7724us;7726us;7756us;7758us;7787us;7789us;7817us;7819us;7846us;7848us;7874us;7876us;7901us;7903us;7927us;7929us;7952us;7954us;7976us;7978us;7999us;8001us;8021us;8023us;8042us;8044us;8062us;8064us;8081us;8083us;8099us;8101us;8116us;8118us;8132us;8134us;8147us;8149us;8161us;8163us;8174us;8176us;8186us;8188us;8197us;8199us;8207us;8209us;8216us;8218us;8224us;8226us;8231us;8233us;8237us;8239us;8242us;8244us;8246us;8248us;8250us;8252us;8254us;8258us;8263us;8266us;8268us;8270us;8273us;8275us;8277us;8282us;8284us;8286us;8288us;8292us;8296us;8298us;8300us;8304us;8306us;8308us;8312us;8315us;8321us;8323us;8325us;8331us;8337us;8341us;8344us;8346us;8348us;8350us;8352us;8354us;8356us;8358us;8360us;8362us;8364us;8366us;8368us;8370us;8373us;8378us;8380us;8382us;8384us;8386us;8388us;8390us;8398us;8402us;8406us;8409us;8411us;8413us;8415us;8419us;8421us;8423us;8425us;8427us;8431us;8434us;8436us;8438us;8440us;8443us;8447us;8449us;8451us;8453us;8457us;8459us;8461us;8465us;8467us;8470us;8472us;8474us;8476us;8479us;8481us;8483us;8487us;8491us;8495us;8497us;8499us;8501us;8503us;8505us;8507us;8509us;8512us;8514us;8516us;8518us;8521us;8523us;8525us;8530us;8532us;8534us;8536us;8538us;8540us;8544us;8548us;8550us;8552us;8554us;8556us;8558us;8560us;8562us;8564us;8566us;8568us;8570us;8572us;8574us;8576us;8578us;8580us;8582us;8584us;8586us;8588us;8590us;8592us;8594us;8596us;8598us;8600us;8602us;8605us;8607us;8609us;8611us;8613us;8615us;8617us;8619us;8621us;8623us;8627us;8629us;8632us;8634us;8636us;8638us;8640us;8642us;8644us;8646us;8648us;8651us;8653us;8655us;8657us;8660us;8663us;8665us;8667us;8669us;8671us;8673us;8675us;8677us;8679us;8681us;8683us;8685us;8687us;8689us;8691us;8693us;8695us;8697us;8699us;8701us;8703us;8705us;8707us;8709us;8711us;8713us;8715us;8717us;8719us;8721us;8723us;8726us;8728us;8730us;8732us;8735us;8737us;8739us;8741us;8743us;8745us;8747us;8749us;8751us;8754us;8756us;8758us;8760us;8762us;8765us;8767us;8769us;8771us;8773us;8775us;8777us;8779us;8781us;8783us;8785us;8787us;8789us;8791us;8793us;8795us;8797us;8799us;8801us;8803us;8805us;8807us;8809us;8811us;8813us;8815us;8817us;|]
-let _fsyacc_action_rows = 2067
-let _fsyacc_actionTableElements = [|16us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;48us;0us;49152us;95us;16513us;13us;16553us;22us;241us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;227us;0us;49152us;7us;16553us;10us;14us;21us;12us;67us;13us;73us;317us;83us;11us;88us;38us;101us;287us;0us;49152us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;49152us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;49152us;0us;16389us;0us;16390us;0us;16391us;0us;16392us;0us;16393us;0us;16394us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16395us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16396us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16397us;5us;16553us;10us;14us;67us;13us;73us;317us;88us;38us;101us;287us;0us;16398us;5us;16553us;10us;14us;67us;13us;73us;317us;88us;38us;101us;287us;0us;16399us;5us;16553us;10us;14us;67us;13us;73us;317us;88us;38us;101us;287us;0us;16400us;16us;16401us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;101us;287us;108us;16553us;121us;16553us;137us;16553us;150us;16553us;162us;16553us;0us;16402us;3us;16647us;43us;514us;44us;513us;45us;515us;87us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;108us;2037us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;121us;737us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;137us;753us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;150us;2042us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;26us;16403us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;0us;16404us;2us;16405us;21us;37us;83us;36us;0us;16406us;0us;16407us;0us;16408us;1us;32768us;193us;39us;0us;16410us;2us;16409us;194us;2017us;201us;2016us;0us;16411us;0us;16412us;0us;16413us;2us;32768us;10us;45us;203us;46us;0us;16414us;1us;32768us;10us;47us;0us;16415us;4us;16434us;10us;49us;21us;1984us;67us;1983us;83us;1982us;0us;16416us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;17547us;103us;2003us;5us;32768us;10us;1077us;21us;55us;46us;1924us;193us;1923us;203us;1061us;1us;16417us;76us;1926us;0us;16418us;0us;16419us;1us;17547us;103us;2003us;4us;32768us;10us;1077us;46us;1924us;193us;1923us;203us;1061us;1us;16420us;76us;1926us;0us;16421us;1us;16422us;151us;57us;0us;16423us;1us;16425us;151us;57us;0us;16424us;1us;17539us;69us;2000us;16us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;82us;0us;16426us;3us;16647us;43us;514us;44us;513us;45us;515us;8us;32768us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;108us;2037us;109us;104us;121us;737us;150us;2042us;18us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;69us;2015us;73us;317us;77us;2014us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;83us;0us;16427us;0us;16428us;0us;16429us;15us;16435us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;79us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;1us;17543us;21us;2001us;0us;16430us;0us;16431us;6us;16434us;15us;2052us;16us;2054us;17us;2055us;21us;1984us;67us;1983us;83us;1982us;0us;16432us;0us;16433us;3us;16434us;21us;1984us;67us;1983us;83us;1982us;17us;16434us;21us;1984us;37us;16443us;38us;16443us;39us;16443us;40us;16443us;43us;16443us;44us;16443us;45us;16443us;67us;1983us;73us;16443us;83us;1982us;88us;16443us;101us;16443us;108us;16443us;109us;16443us;121us;16443us;150us;16443us;3us;17524us;21us;1984us;67us;1983us;83us;1982us;15us;16438us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;87us;0us;16436us;3us;32768us;21us;1984us;67us;1983us;83us;1982us;4us;16553us;73us;317us;88us;38us;101us;287us;203us;87us;0us;16437us;0us;16439us;0us;16440us;3us;16647us;43us;514us;44us;513us;45us;515us;8us;32768us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;108us;2037us;109us;104us;121us;737us;150us;2042us;3us;32768us;69us;2015us;77us;2014us;203us;98us;5us;32768us;22us;120us;46us;1924us;57us;2012us;136us;2013us;193us;1923us;0us;16441us;0us;16442us;0us;16443us;1us;16553us;73us;317us;1us;16455us;131us;130us;0us;16444us;0us;16445us;0us;16446us;1us;16553us;73us;317us;1us;17551us;110us;2004us;1us;17553us;118us;2005us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;2us;16715us;34us;2032us;160us;17578us;1us;32768us;77us;111us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;16448us;69us;114us;0us;16447us;80us;32768us;13us;1189us;22us;116us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;26us;16449us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;29us;32768us;15us;2052us;16us;2054us;17us;2055us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;1us;17537us;19us;1999us;0us;16450us;8us;16553us;46us;1924us;57us;2012us;73us;317us;88us;38us;101us;287us;136us;2013us;193us;1923us;203us;87us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;0us;16451us;15us;16435us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;82us;1us;32768us;142us;125us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;0us;16452us;15us;16435us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;82us;1us;32768us;142us;129us;0us;16453us;1us;16553us;73us;317us;1us;16455us;131us;130us;0us;16454us;2us;16497us;69us;134us;87us;220us;7us;16553us;22us;137us;49us;590us;56us;592us;73us;317us;111us;591us;136us;162us;152us;148us;0us;16456us;0us;16457us;54us;16475us;14us;16553us;22us;158us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;47us;16553us;48us;16553us;49us;590us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;56us;592us;58us;16553us;66us;16553us;72us;16553us;73us;317us;88us;16553us;91us;16553us;92us;16553us;96us;16553us;106us;16553us;109us;16553us;111us;591us;113us;16553us;119us;16553us;120us;16553us;122us;16553us;136us;162us;148us;16553us;152us;148us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;186us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;201us;16553us;202us;16553us;1us;17543us;21us;2001us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;1us;16497us;87us;220us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;1us;16497us;87us;220us;0us;16458us;1us;16497us;87us;220us;0us;16459us;0us;16460us;0us;16461us;1us;32768us;120us;149us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16462us;0us;16463us;16us;16475us;14us;16553us;22us;166us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;203us;156us;3us;32768us;10us;1077us;142us;154us;203us;1061us;0us;16464us;0us;16465us;1us;32768us;142us;157us;0us;16466us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16467us;0us;16468us;15us;16475us;14us;16553us;22us;166us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;3us;32768us;10us;1077us;142us;164us;203us;1061us;0us;16469us;0us;16470us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16471us;0us;16472us;0us;16473us;0us;16474us;2us;17545us;21us;1989us;83us;1990us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;0us;16476us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;16647us;43us;514us;44us;513us;45us;515us;10us;32768us;14us;594us;47us;195us;48us;352us;50us;432us;51us;353us;52us;354us;54us;190us;109us;193us;111us;593us;119us;200us;46us;32768us;14us;594us;46us;1924us;47us;195us;48us;352us;50us;432us;51us;353us;52us;354us;54us;190us;56us;581us;58us;673us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;569us;96us;1717us;106us;1866us;109us;193us;111us;593us;113us;1864us;119us;200us;120us;708us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;1us;17551us;110us;2004us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;2us;16715us;34us;2032us;160us;17578us;1us;32768us;77us;184us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;2us;16485us;26us;205us;87us;203us;1us;16448us;69us;114us;0us;16477us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;6us;16478us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;6us;16479us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;0us;16480us;1us;17553us;118us;2005us;0us;16481us;6us;16570us;37us;2033us;38us;2036us;48us;351us;50us;434us;108us;2037us;109us;196us;1us;17553us;118us;2005us;0us;16482us;1us;16553us;73us;317us;0us;16483us;1us;32768us;77us;201us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16484us;4us;32768us;22us;213us;92us;1929us;100us;1934us;193us;1923us;0us;16486us;4us;32768us;22us;213us;92us;1929us;100us;1934us;193us;1923us;2us;32768us;20us;207us;203us;208us;0us;16487us;0us;16488us;1us;16489us;97us;210us;5us;32768us;10us;1077us;92us;1929us;100us;1934us;193us;1923us;203us;1061us;0us;16490us;0us;16491us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;1us;32768us;19us;215us;0us;16492us;0us;16493us;0us;16494us;1us;16497us;87us;220us;0us;16495us;15us;16475us;14us;16553us;22us;166us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;3us;32768us;19us;1993us;20us;1994us;142us;1995us;0us;16496us;2us;32768us;10us;224us;203us;225us;0us;16498us;1us;32768us;10us;226us;0us;16499us;4us;32768us;10us;228us;21us;1984us;67us;1983us;83us;1982us;0us;16500us;1us;16501us;151us;57us;0us;16502us;1us;16504us;151us;57us;0us;16503us;1us;17539us;69us;2000us;95us;16513us;13us;16553us;22us;241us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;261us;0us;16505us;4us;16647us;43us;514us;44us;513us;45us;515us;203us;256us;87us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;108us;2037us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;121us;737us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;137us;753us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;150us;2042us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;96us;16513us;13us;16553us;22us;241us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;69us;281us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;262us;0us;16506us;0us;16507us;94us;16513us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;246us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;1us;17543us;21us;2001us;0us;16508us;0us;16509us;6us;32768us;15us;2052us;16us;2054us;17us;2055us;21us;1984us;67us;1983us;83us;1982us;0us;16510us;0us;16511us;0us;16512us;4us;16647us;43us;514us;44us;513us;45us;515us;203us;256us;87us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;108us;2037us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;121us;737us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;137us;753us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;150us;2042us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;29us;16516us;21us;1984us;62us;1278us;63us;1264us;67us;1983us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;83us;1982us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;94us;16515us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;261us;0us;16514us;0us;16517us;0us;16518us;21us;16521us;21us;1984us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;67us;1983us;73us;317us;83us;1982us;88us;38us;101us;287us;108us;16553us;121us;16553us;137us;16553us;150us;16553us;162us;16553us;203us;261us;0us;16519us;94us;16522us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;261us;0us;16520us;3us;32768us;21us;1984us;67us;1983us;83us;1982us;3us;16532us;21us;1984us;67us;1983us;83us;1982us;6us;32768us;15us;2052us;16us;2054us;17us;2055us;21us;1984us;67us;1983us;83us;1982us;4us;32768us;21us;1984us;67us;1983us;83us;1982us;142us;310us;4us;16553us;73us;317us;88us;38us;101us;287us;203us;261us;0us;16523us;0us;16524us;0us;16525us;3us;16647us;43us;514us;44us;513us;45us;515us;11us;32768us;33us;755us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;41us;769us;108us;2037us;121us;737us;137us;753us;150us;2042us;162us;749us;0us;16526us;1us;16526us;127us;1090us;0us;16527us;80us;16527us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1095us;0us;16528us;1us;16553us;73us;317us;1us;16576us;131us;358us;0us;16529us;0us;16530us;2us;32768us;69us;281us;203us;283us;5us;32768us;22us;296us;46us;1924us;56us;2010us;136us;2011us;193us;1923us;0us;16531us;0us;16532us;2us;16552us;10us;1077us;203us;1061us;0us;16533us;0us;16534us;7us;32768us;10us;1077us;37us;2033us;38us;2036us;46us;1924us;108us;2037us;193us;1923us;203us;1061us;1us;16535us;76us;1926us;0us;16536us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;6us;16537us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;0us;16538us;4us;32768us;15us;2052us;16us;2054us;17us;2055us;76us;1926us;0us;16539us;1us;16540us;76us;1926us;6us;16553us;56us;2010us;73us;317us;88us;38us;101us;287us;136us;2011us;203us;263us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16541us;0us;16542us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16543us;0us;16544us;0us;16545us;0us;16546us;1us;16547us;76us;1926us;94us;16513us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;264us;3us;32768us;10us;1077us;142us;308us;203us;1061us;0us;16548us;0us;16549us;0us;16550us;6us;16553us;19us;16599us;20us;16599us;22us;398us;73us;317us;142us;16599us;203us;404us;3us;32768us;19us;1993us;20us;1994us;142us;1995us;0us;16551us;0us;16552us;1us;16554us;73us;317us;0us;16555us;14us;32768us;10us;1077us;15us;2065us;37us;2034us;38us;2036us;39us;2039us;40us;2041us;46us;1924us;60us;2063us;94us;2064us;108us;2037us;150us;2042us;163us;348us;193us;1923us;203us;322us;2us;17545us;21us;1989us;83us;1990us;8us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;55us;320us;60us;2063us;94us;2064us;203us;1061us;1us;17543us;21us;2001us;0us;16556us;1us;16974us;55us;323us;1us;17543us;21us;2001us;0us;16557us;0us;16558us;0us;16559us;0us;16560us;9us;17544us;37us;2033us;38us;2036us;39us;2038us;40us;2041us;46us;1924us;108us;2037us;150us;2042us;163us;348us;193us;1923us;0us;16561us;3us;17576us;35us;2031us;36us;2030us;76us;1926us;30us;17245us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16562us;3us;32768us;22us;337us;46us;1924us;193us;1923us;3us;17576us;35us;2031us;36us;2030us;76us;1926us;30us;17245us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16563us;2us;32768us;46us;1924us;193us;1923us;4us;32768us;15us;2052us;16us;2054us;17us;2055us;76us;1926us;2us;17576us;35us;2031us;36us;2030us;30us;17245us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16564us;1us;32768us;77us;343us;0us;16565us;1us;32768us;77us;345us;0us;16566us;1us;17472us;77us;347us;0us;16567us;1us;32768us;77us;349us;0us;16568us;11us;16570us;30us;759us;33us;755us;37us;2033us;38us;2036us;41us;769us;48us;351us;50us;434us;108us;2037us;109us;477us;137us;753us;162us;749us;0us;16569us;0us;16571us;0us;16572us;0us;16573us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;16716us;84us;626us;0us;16574us;1us;16553us;73us;317us;1us;16576us;131us;358us;0us;16575us;39us;16553us;14us;16577us;15us;16577us;16us;16577us;17us;16577us;19us;16577us;20us;16577us;21us;16577us;30us;16577us;33us;16577us;37us;16577us;38us;16577us;39us;16577us;40us;16577us;41us;16577us;47us;16577us;48us;16577us;50us;16577us;51us;16577us;52us;16577us;54us;16577us;60us;16577us;67us;16577us;73us;317us;83us;16577us;87us;311us;88us;16577us;94us;16577us;101us;16577us;108us;16577us;109us;16577us;111us;16577us;119us;16577us;121us;16577us;131us;16577us;137us;16577us;142us;16577us;150us;16577us;151us;16577us;162us;16577us;0us;16578us;3us;16647us;43us;514us;44us;513us;45us;515us;2us;17576us;35us;2031us;36us;2030us;1us;16866us;92us;880us;1us;16661us;132us;530us;3us;32768us;10us;1077us;69us;368us;203us;1061us;6us;16553us;22us;371us;49us;590us;56us;592us;73us;317us;111us;591us;152us;384us;0us;16579us;0us;16580us;9us;16553us;15us;2052us;16us;2054us;17us;2055us;22us;394us;49us;590us;56us;592us;73us;317us;111us;591us;152us;384us;1us;17543us;21us;2001us;7us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;73us;317us;87us;16599us;203us;404us;1us;16656us;87us;519us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;1us;16656us;87us;519us;0us;16581us;0us;16582us;0us;16583us;1us;16656us;87us;519us;0us;16584us;0us;16585us;0us;16586us;1us;32768us;120us;385us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16587us;0us;16588us;10us;16553us;10us;16599us;15us;16599us;22us;398us;37us;16599us;39us;16599us;60us;16599us;73us;317us;94us;16599us;142us;16599us;203us;392us;8us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;60us;2063us;94us;2064us;142us;390us;203us;1061us;0us;16589us;0us;16590us;9us;16553us;10us;16599us;15us;16599us;37us;16599us;39us;16599us;60us;16599us;73us;317us;94us;16599us;142us;393us;203us;404us;0us;16591us;1us;16553us;73us;317us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16592us;0us;16593us;6us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;73us;317us;203us;404us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16594us;0us;16595us;0us;16596us;0us;16597us;14us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;19us;16599us;20us;16599us;37us;16599us;39us;16599us;60us;16599us;73us;317us;87us;16599us;94us;16599us;142us;16599us;203us;404us;0us;16598us;2us;17545us;21us;1989us;83us;1990us;14us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;19us;16599us;20us;16599us;37us;16599us;39us;16599us;60us;16599us;73us;317us;87us;16599us;94us;16599us;142us;16599us;203us;404us;0us;16600us;1us;17551us;110us;2004us;0us;16601us;1us;17551us;110us;2004us;2us;32768us;20us;413us;203us;414us;0us;16602us;0us;16603us;1us;16604us;131us;416us;1us;17551us;110us;2004us;0us;16605us;1us;16553us;73us;317us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;17315us;77us;1660us;1us;32768us;69us;422us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16606us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;17315us;77us;1660us;6us;32768us;10us;1077us;21us;429us;26us;411us;69us;427us;87us;409us;203us;1061us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16607us;0us;16608us;0us;16609us;0us;16610us;1us;16611us;48us;433us;0us;16612us;1us;16613us;48us;435us;0us;16614us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;16647us;43us;514us;44us;513us;45us;515us;15us;32768us;14us;594us;30us;759us;33us;755us;41us;769us;47us;350us;48us;352us;50us;432us;51us;353us;52us;354us;54us;522us;109us;477us;111us;593us;119us;465us;137us;753us;162us;749us;51us;32768us;14us;594us;30us;759us;33us;755us;41us;769us;46us;1924us;47us;350us;48us;352us;50us;432us;51us;353us;52us;354us;54us;522us;56us;581us;58us;673us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;569us;96us;1717us;106us;1866us;109us;477us;111us;593us;113us;1864us;119us;465us;120us;708us;122us;1865us;137us;753us;148us;1863us;162us;749us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;0us;16615us;0us;16616us;4us;17551us;10us;1077us;109us;486us;110us;2004us;203us;1061us;1us;17537us;19us;1999us;0us;16617us;0us;16618us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;7us;16654us;36us;1748us;46us;1924us;70us;1762us;87us;516us;91us;1918us;189us;1920us;193us;1923us;0us;16619us;0us;16620us;1us;17551us;110us;2004us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;2us;16715us;34us;2032us;160us;17578us;1us;32768us;77us;454us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;2us;16485us;26us;205us;87us;203us;1us;17537us;19us;1999us;0us;16621us;0us;16622us;1us;17537us;19us;1999us;0us;16623us;1us;17537us;19us;1999us;0us;16624us;1us;17537us;19us;1999us;0us;16625us;37us;32768us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;1us;16661us;132us;530us;9us;32768us;10us;1077us;15us;2065us;21us;472us;37us;2061us;39us;2062us;60us;2063us;69us;468us;94us;2064us;203us;1061us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;17537us;19us;1999us;0us;16626us;0us;16627us;0us;16628us;1us;17543us;21us;2001us;0us;16629us;1us;16553us;73us;317us;0us;16630us;1us;17553us;118us;2005us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1077us;193us;1923us;203us;1061us;3us;32768us;10us;1077us;77us;481us;203us;1061us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;16631us;0us;16632us;0us;16633us;0us;16634us;1us;17553us;118us;2005us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1077us;193us;1923us;203us;1061us;1us;16639us;77us;497us;9us;32768us;10us;1077us;15us;2065us;21us;495us;37us;2061us;39us;2062us;60us;2063us;69us;491us;94us;2064us;203us;1061us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;2us;16485us;26us;205us;87us;203us;0us;16635us;0us;16636us;0us;16637us;0us;16638us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;16640us;0us;16641us;1us;16912us;76us;501us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;0us;16642us;1us;32768us;76us;504us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;0us;16643us;0us;16644us;4us;32768us;66us;508us;92us;1929us;100us;1934us;193us;1923us;1us;32768us;76us;509us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;0us;16645us;0us;16646us;0us;16648us;0us;16649us;0us;16650us;0us;16651us;31us;16553us;10us;16653us;14us;16653us;15us;16653us;16us;16653us;17us;16653us;19us;16653us;20us;16653us;21us;16653us;22us;537us;30us;16653us;33us;16653us;37us;16653us;39us;16653us;41us;16653us;43us;16653us;44us;16653us;45us;16653us;50us;16653us;52us;16653us;54us;16653us;60us;16653us;73us;317us;83us;16653us;87us;16653us;94us;16653us;109us;16653us;111us;16653us;119us;16653us;137us;16653us;142us;16653us;162us;16653us;3us;32768us;19us;1993us;20us;1994us;142us;1995us;0us;16652us;6us;16553us;19us;16599us;20us;16599us;22us;398us;73us;317us;142us;16599us;203us;404us;3us;32768us;19us;1993us;20us;1994us;142us;1995us;0us;16655us;37us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;46us;1924us;56us;1853us;60us;2063us;66us;1847us;88us;1844us;91us;1918us;92us;1837us;94us;2064us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;33us;16665us;35us;2031us;36us;2030us;56us;17576us;71us;17576us;72us;17576us;92us;17576us;106us;17576us;122us;17576us;132us;534us;136us;17576us;148us;17576us;155us;17576us;166us;17576us;167us;17576us;168us;17576us;169us;17576us;170us;17576us;171us;17576us;172us;17576us;173us;17576us;174us;17576us;175us;17576us;176us;17576us;177us;17576us;178us;17576us;180us;17576us;181us;17576us;194us;17576us;195us;17576us;199us;17576us;200us;17576us;201us;17576us;202us;17576us;0us;16657us;30us;32768us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;16665us;132us;534us;0us;16658us;0us;16659us;0us;16660us;3us;32768us;10us;1077us;193us;1923us;203us;1061us;0us;16662us;0us;16663us;0us;16664us;2us;32768us;154us;536us;193us;1923us;0us;16666us;0us;16667us;1us;16553us;73us;317us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16668us;0us;16669us;0us;16670us;2us;17545us;21us;1989us;83us;1990us;14us;16553us;10us;16672us;14us;16672us;15us;16672us;16us;16672us;17us;16672us;19us;16672us;20us;16672us;21us;16672us;60us;16672us;61us;16672us;73us;317us;111us;16672us;142us;16672us;196us;16672us;0us;16671us;4us;32768us;47us;556us;48us;558us;51us;559us;203us;553us;5us;17551us;47us;556us;48us;558us;51us;559us;110us;2004us;203us;553us;3us;17551us;109us;486us;110us;2004us;203us;552us;1us;17537us;19us;1999us;0us;16673us;1us;17537us;19us;1999us;0us;16674us;0us;16675us;1us;17551us;110us;2004us;1us;17537us;19us;1999us;0us;16676us;1us;32768us;48us;557us;0us;16677us;0us;16678us;0us;16679us;3us;16647us;43us;514us;44us;513us;45us;515us;36us;32768us;46us;1924us;56us;581us;58us;673us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;569us;96us;1717us;106us;1866us;113us;1864us;120us;708us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;2us;17365us;76us;1926us;155us;563us;1us;32768us;201us;564us;2us;32768us;10us;1077us;203us;1061us;0us;16680us;0us;16681us;0us;16682us;0us;16683us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;570us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1867us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;16844us;88us;572us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16684us;5us;16553us;60us;2043us;61us;2045us;73us;317us;196us;2046us;203us;578us;5us;32768us;10us;1077us;60us;2043us;61us;2045us;196us;2046us;203us;1061us;0us;16685us;0us;16686us;3us;32768us;60us;2043us;61us;2045us;196us;2046us;0us;16687us;0us;16688us;2us;32768us;72us;584us;92us;1854us;0us;16689us;0us;16690us;2us;16553us;73us;317us;203us;588us;3us;32768us;10us;1077us;65us;2047us;203us;1061us;0us;16691us;0us;16692us;1us;32768us;65us;2047us;0us;16693us;0us;16694us;0us;16695us;0us;16696us;0us;16697us;0us;16698us;7us;32768us;10us;1077us;46us;1924us;91us;1918us;92us;602us;189us;1920us;193us;1923us;203us;1061us;3us;16699us;34us;2032us;76us;1926us;160us;17578us;2us;32768us;46us;1924us;193us;1923us;1us;16700us;76us;1926us;0us;16701us;0us;16702us;0us;16703us;1us;16553us;73us;317us;4us;32768us;93us;2051us;94us;2048us;95us;2050us;97us;607us;0us;16704us;2us;16716us;84us;626us;97us;607us;1us;16711us;97us;608us;1us;16553us;73us;317us;2us;16553us;73us;317us;143us;619us;0us;16705us;0us;16706us;2us;32768us;91us;1918us;189us;1920us;1us;16707us;89us;613us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;16708us;89us;635us;1us;32768us;160us;616us;1us;16553us;73us;317us;1us;32768us;161us;618us;0us;16709us;0us;16710us;1us;32768us;160us;621us;3us;16553us;73us;317us;84us;16712us;161us;16712us;1us;16716us;84us;626us;1us;32768us;161us;624us;0us;16713us;0us;16714us;32us;32768us;46us;1924us;52us;638us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;653us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;16717us;131us;630us;1us;17312us;131us;630us;1us;17314us;131us;630us;32us;32768us;46us;1924us;52us;638us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;653us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16718us;0us;16719us;1us;17363us;89us;635us;1us;17364us;89us;635us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;16720us;76us;1870us;1us;16721us;76us;1870us;2us;32768us;91us;1918us;189us;1920us;1us;32768us;77us;640us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16722us;3us;17366us;77us;645us;79us;643us;89us;1737us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;4us;16723us;46us;17375us;70us;17375us;91us;17375us;193us;17375us;5us;32768us;56us;646us;92us;650us;148us;649us;152us;660us;193us;647us;0us;16724us;3us;16731us;34us;1876us;56us;648us;160us;1878us;0us;16725us;0us;16726us;1us;16553us;73us;317us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16727us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1867us;4us;32768us;93us;2051us;94us;2048us;95us;2050us;102us;664us;1us;32768us;77us;656us;1us;32768us;92us;657us;1us;16553us;73us;317us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16728us;2us;32768us;34us;1876us;160us;1878us;0us;16729us;0us;16730us;6us;16732us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;6us;16733us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;13us;16734us;10us;17355us;36us;1748us;46us;1924us;69us;17355us;70us;1762us;91us;1918us;96us;1714us;97us;17355us;98us;17355us;186us;1722us;189us;1920us;193us;1923us;203us;17355us;1us;16553us;73us;317us;0us;16735us;1us;32768us;58us;673us;1us;16553us;73us;317us;0us;16736us;2us;16737us;21us;2001us;58us;17543us;0us;16738us;1us;16740us;58us;673us;1us;16553us;73us;317us;0us;16739us;3us;16647us;43us;514us;44us;513us;45us;515us;6us;32768us;10us;1077us;92us;693us;100us;1934us;120us;684us;193us;1923us;203us;1061us;35us;16741us;46us;1924us;56us;581us;66us;1759us;69us;690us;72us;584us;77us;688us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;120us;681us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;0us;16742us;34us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;203us;1061us;0us;16743us;0us;16744us;34us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;203us;1061us;0us;16745us;0us;16746us;0us;16747us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16748us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;5us;16749us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;0us;16750us;29us;32768us;58us;1969us;62us;1951us;63us;1949us;69us;1953us;70us;696us;74us;1957us;78us;694us;82us;1961us;89us;1958us;90us;1959us;96us;1952us;102us;1954us;143us;1964us;145us;1960us;155us;1966us;158us;1963us;160us;1955us;161us;1956us;182us;1962us;183us;1950us;184us;1947us;185us;1946us;186us;1948us;187us;1941us;188us;1945us;189us;1944us;190us;1943us;191us;1942us;203us;1932us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16751us;1us;32768us;59us;697us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16752us;4us;17472us;21us;2001us;58us;17543us;69us;701us;120us;705us;0us;16753us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;6us;17543us;21us;2001us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;46us;16754us;10us;16759us;14us;16759us;15us;16759us;16us;16759us;17us;16759us;19us;16759us;20us;16759us;21us;16759us;30us;16759us;33us;16759us;37us;16759us;38us;16759us;39us;16759us;40us;16759us;41us;16759us;43us;16759us;44us;16759us;45us;16759us;47us;16759us;48us;16759us;50us;16759us;51us;16759us;52us;16759us;54us;16759us;60us;16759us;67us;16759us;73us;16759us;83us;16759us;87us;16759us;88us;16759us;93us;16759us;94us;16759us;95us;16759us;101us;16759us;108us;16759us;109us;16759us;111us;16759us;119us;16759us;121us;16759us;131us;16759us;137us;16759us;142us;16759us;150us;16759us;151us;16759us;162us;16759us;203us;16759us;0us;16755us;34us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;203us;1061us;0us;16756us;0us;16757us;32us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;0us;16758us;1us;16761us;96us;711us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16760us;1us;17472us;77us;714us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;7us;16762us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;98us;1700us;189us;1920us;193us;1923us;7us;16763us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;98us;1700us;189us;1920us;193us;1923us;0us;16764us;0us;16765us;0us;16766us;0us;16767us;2us;17545us;21us;1989us;83us;1990us;5us;16553us;60us;17544us;61us;17544us;65us;17544us;73us;317us;196us;17544us;0us;16768us;0us;16769us;1us;17553us;118us;2005us;0us;16770us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1077us;193us;1923us;203us;1061us;3us;32768us;10us;1077us;77us;730us;203us;1061us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;16771us;0us;16772us;0us;16773us;0us;16774us;1us;16656us;87us;519us;0us;16775us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1077us;193us;1923us;203us;1061us;1us;16781us;69us;747us;0us;16776us;0us;16777us;1us;16778us;120us;744us;34us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;195us;574us;201us;2016us;202us;849us;203us;1061us;0us;16779us;0us;16780us;2us;32768us;46us;1924us;193us;1923us;1us;16782us;76us;1926us;1us;17547us;103us;2003us;2us;16553us;73us;317us;203us;804us;0us;16783us;0us;16784us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16785us;1us;17547us;103us;2003us;2us;16553us;73us;317us;203us;804us;3us;32768us;10us;1077us;19us;767us;203us;1061us;0us;16786us;81us;32768us;13us;1189us;19us;762us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;10us;1077us;19us;767us;203us;1061us;0us;16787us;0us;16788us;0us;16789us;0us;16790us;0us;16791us;0us;16792us;0us;16793us;0us;16794us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;32768us;193us;1923us;2us;17576us;35us;2031us;36us;2030us;1us;32768us;92us;774us;4us;16553us;73us;317us;93us;16798us;94us;16798us;95us;16798us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16795us;1us;16796us;97us;779us;1us;16797us;97us;781us;1us;16553us;73us;317us;0us;16799us;1us;16553us;73us;317us;0us;16800us;3us;32768us;42us;793us;46us;1924us;193us;1923us;6us;16801us;35us;2031us;36us;2030us;70us;17576us;89us;792us;96us;791us;193us;1923us;0us;16802us;1us;16803us;76us;1926us;5us;16808us;35us;2031us;36us;2030us;70us;17576us;89us;792us;96us;791us;1us;32768us;70us;789us;1us;32768us;59us;790us;0us;16804us;0us;16805us;0us;16806us;1us;32768us;96us;795us;1us;16809us;96us;795us;0us;16807us;3us;32768us;42us;794us;46us;1924us;193us;1923us;1us;16812us;131us;799us;0us;16810us;2us;16553us;73us;317us;203us;804us;1us;16812us;131us;799us;0us;16811us;1us;17551us;110us;2004us;0us;16813us;0us;16814us;1us;17553us;118us;2005us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;17315us;77us;1660us;3us;32768us;10us;1077us;69us;809us;203us;1061us;81us;32768us;13us;1189us;22us;813us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;811us;0us;16815us;0us;16816us;0us;16817us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16818us;0us;16819us;0us;16820us;0us;16823us;1us;16821us;84us;821us;0us;16822us;2us;32768us;91us;1918us;189us;1920us;2us;32768us;69us;823us;131us;825us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16824us;2us;32768us;91us;1918us;189us;1920us;0us;16825us;0us;16826us;2us;32768us;56us;831us;77us;829us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16827us;0us;16828us;0us;16829us;0us;16830us;0us;16831us;0us;16832us;0us;16833us;0us;16834us;0us;16835us;0us;16836us;0us;16837us;0us;16838us;0us;16839us;0us;16840us;0us;16841us;0us;16842us;0us;16843us;0us;16844us;0us;16845us;0us;16846us;1us;16849us;186us;851us;1us;32768us;178us;852us;0us;16847us;1us;32768us;178us;854us;1us;16850us;186us;855us;1us;32768us;178us;856us;0us;16848us;0us;16851us;2us;32768us;62us;853us;178us;850us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16852us;0us;16853us;2us;32768us;92us;858us;178us;857us;0us;16854us;1us;16855us;34us;865us;1us;32768us;160us;1895us;0us;16856us;5us;16857us;58us;901us;78us;902us;89us;913us;97us;907us;132us;899us;0us;16858us;1us;32768us;193us;1923us;0us;16859us;1us;16862us;77us;873us;2us;16863us;77us;873us;97us;877us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;16860us;0us;16861us;3us;32768us;73us;317us;74us;869us;193us;1923us;3us;32768us;73us;317us;74us;869us;193us;1923us;0us;16864us;0us;16865us;8us;32768us;10us;1077us;73us;317us;74us;869us;93us;2051us;94us;2048us;95us;2050us;193us;1923us;203us;885us;5us;32768us;10us;1077us;93us;2051us;94us;2048us;95us;2050us;203us;1061us;0us;16867us;0us;16868us;0us;16869us;3us;16974us;93us;2051us;94us;2048us;95us;2050us;0us;16870us;0us;16871us;3us;16873us;78us;902us;89us;913us;97us;907us;1us;16874us;78us;902us;2us;16878us;78us;902us;89us;913us;2us;16879us;78us;902us;89us;913us;2us;16882us;78us;902us;89us;913us;1us;16884us;78us;902us;1us;16885us;78us;902us;6us;32768us;58us;901us;69us;1079us;78us;902us;89us;913us;97us;907us;132us;899us;6us;32768us;58us;901us;69us;1084us;78us;902us;89us;913us;97us;907us;132us;899us;6us;32768us;58us;901us;69us;1167us;78us;902us;89us;913us;97us;907us;132us;899us;6us;32768us;58us;901us;69us;1174us;78us;902us;89us;913us;97us;907us;132us;899us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16872us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;16875us;97us;906us;0us;16876us;0us;16877us;44us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;44us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;0us;16880us;0us;16881us;44us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;0us;16883us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;2us;17545us;21us;1989us;83us;1990us;0us;16886us;3us;17544us;21us;1989us;83us;1990us;193us;1923us;0us;16887us;1us;32768us;193us;1923us;0us;16888us;3us;32768us;10us;1077us;69us;922us;203us;1061us;4us;17511us;10us;1077us;69us;922us;76us;1976us;203us;1061us;40us;32768us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;6us;16889us;58us;1002us;77us;1005us;78us;1009us;89us;1018us;97us;1012us;132us;1000us;0us;16890us;0us;16891us;39us;16914us;34us;2032us;35us;934us;36us;936us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;941us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;160us;17578us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;37us;16892us;35us;929us;36us;931us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;941us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16893us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;941us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16894us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;941us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16895us;0us;16896us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;941us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16897us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;941us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16898us;31us;32768us;46us;1924us;56us;581us;66us;1847us;72us;584us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;16899us;0us;16900us;64us;16928us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;58us;1969us;62us;1951us;63us;1949us;66us;500us;69us;1953us;70us;957us;71us;960us;73us;317us;74us;964us;81us;938us;82us;1961us;89us;1958us;90us;1959us;92us;971us;96us;1952us;97us;1015us;100us;1934us;102us;1954us;106us;969us;122us;968us;143us;1964us;145us;1960us;148us;970us;155us;1477us;158us;1963us;160us;1955us;161us;1956us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;182us;1962us;183us;1950us;184us;1947us;185us;1946us;186us;1948us;187us;1941us;188us;1945us;189us;1944us;190us;1943us;191us;1942us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;975us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;16901us;0us;16902us;37us;16906us;35us;949us;36us;947us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16903us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16904us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16905us;0us;16907us;3us;32768us;46us;1924us;193us;1923us;203us;955us;3us;32768us;60us;2043us;61us;2045us;196us;2046us;0us;16908us;3us;32768us;60us;2043us;61us;2045us;196us;2046us;0us;16909us;38us;16951us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;32768us;59us;959us;0us;16910us;38us;16951us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;32768us;64us;962us;0us;16911us;1us;32768us;193us;1923us;1us;17496us;193us;1923us;0us;16913us;0us;16914us;0us;16915us;0us;16916us;0us;16917us;0us;16918us;64us;16928us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;58us;1969us;62us;1951us;63us;1949us;66us;500us;69us;1953us;70us;957us;71us;960us;73us;317us;74us;964us;81us;938us;82us;1961us;89us;1958us;90us;1959us;92us;971us;96us;1952us;97us;1015us;100us;1934us;102us;1954us;106us;969us;122us;968us;143us;1964us;145us;1960us;148us;970us;155us;1477us;158us;1963us;160us;1955us;161us;1956us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;182us;1962us;183us;1950us;184us;1947us;185us;1946us;186us;1948us;187us;1941us;188us;1945us;189us;1944us;190us;1943us;191us;1942us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;975us;5us;32768us;10us;1077us;93us;2051us;94us;2048us;95us;2050us;203us;1061us;0us;16919us;0us;16920us;3us;16974us;93us;2051us;94us;2048us;95us;2050us;2us;16921us;34us;17476us;160us;17476us;0us;16922us;1us;32768us;92us;979us;40us;32768us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;983us;6us;16931us;10us;1077us;93us;2051us;94us;2048us;95us;2050us;97us;1011us;203us;1061us;0us;16923us;0us;16924us;3us;16974us;93us;2051us;94us;2048us;95us;2050us;0us;16925us;0us;16926us;6us;16927us;58us;1002us;77us;1005us;78us;1009us;89us;1018us;97us;1012us;132us;1000us;4us;16930us;77us;1005us;78us;1009us;89us;1018us;97us;1012us;3us;16935us;77us;1005us;78us;1009us;89us;1018us;2us;16936us;77us;1005us;78us;1009us;3us;16938us;77us;1005us;78us;1009us;89us;1018us;3us;16939us;77us;1005us;78us;1009us;89us;1018us;3us;16942us;77us;1005us;78us;1009us;89us;1018us;2us;16944us;77us;1005us;78us;1009us;6us;32768us;58us;1002us;77us;1005us;78us;1009us;89us;1018us;97us;1012us;132us;1000us;2us;16945us;77us;1005us;78us;1009us;6us;16948us;58us;1002us;77us;1005us;78us;1009us;89us;1018us;97us;1012us;132us;1000us;8us;17545us;21us;1989us;58us;1002us;77us;1005us;78us;1009us;83us;1990us;89us;1018us;97us;1012us;132us;1000us;15us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;58us;1002us;60us;2063us;69us;1537us;77us;1005us;78us;1009us;89us;1018us;94us;2064us;97us;1012us;127us;1534us;132us;1000us;203us;1065us;7us;17112us;58us;1002us;77us;1005us;78us;1009us;84us;1327us;89us;1018us;97us;1012us;132us;1000us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16929us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;16931us;97us;1011us;1us;16932us;89us;1017us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;16933us;0us;16934us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16937us;45us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;45us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;0us;16940us;0us;16941us;45us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;0us;16943us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;2us;17545us;21us;1989us;83us;1990us;0us;16946us;2us;17544us;46us;1924us;193us;1923us;0us;16947us;4us;32768us;10us;1077us;69us;1024us;76us;1926us;203us;1061us;40us;32768us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;0us;16949us;0us;16950us;0us;16952us;38us;16951us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;16953us;82us;32768us;13us;1189us;15us;2052us;16us;2054us;17us;2055us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;5us;32768us;10us;1077us;15us;2052us;16us;2054us;17us;2055us;203us;1061us;0us;16954us;0us;16955us;0us;16956us;0us;16957us;82us;32768us;13us;1189us;15us;2052us;16us;2054us;17us;2055us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;0us;16958us;0us;16959us;26us;16960us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;1us;16962us;18us;1042us;0us;16961us;0us;16963us;93us;16963us;14us;17306us;15us;17306us;16us;17306us;17us;17306us;18us;17306us;19us;17306us;21us;17306us;26us;17306us;27us;17306us;28us;17306us;30us;17306us;33us;17306us;37us;17306us;38us;17306us;39us;17306us;40us;17306us;41us;17306us;43us;17306us;44us;17306us;45us;17306us;47us;17306us;48us;17306us;50us;17306us;51us;17306us;52us;17306us;54us;17306us;58us;17306us;59us;17306us;60us;17306us;61us;17306us;62us;17306us;63us;17306us;64us;17306us;65us;17306us;67us;17306us;69us;17306us;73us;17306us;77us;17306us;78us;17306us;79us;17306us;80us;17306us;81us;17306us;82us;17306us;83us;17306us;84us;17306us;87us;17306us;88us;17306us;89us;17306us;90us;17306us;93us;17306us;94us;17306us;95us;17306us;96us;17306us;97us;17306us;98us;17306us;101us;17306us;102us;17306us;104us;17306us;105us;17306us;108us;17306us;109us;17306us;111us;17306us;119us;17306us;121us;17306us;127us;17306us;128us;17306us;129us;17306us;131us;17306us;137us;17306us;138us;17306us;139us;17306us;140us;17306us;141us;17306us;142us;17306us;143us;17306us;145us;17306us;150us;17306us;151us;17306us;156us;17306us;158us;17306us;160us;17306us;161us;17306us;162us;17306us;184us;17306us;185us;17306us;186us;17306us;188us;17306us;189us;17306us;190us;17306us;191us;17306us;196us;17306us;197us;17306us;198us;17306us;1us;16966us;77us;1046us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;16964us;0us;16965us;1us;32768us;10us;1050us;0us;16967us;30us;16970us;21us;1989us;28us;1056us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;83us;1990us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;104us;1054us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;79us;16969us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16968us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16971us;1us;32768us;22us;1057us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;0us;16972us;82us;16973us;13us;1189us;21us;1096us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1095us;0us;16974us;2us;16974us;19us;2009us;138us;2008us;2us;16974us;19us;2009us;138us;2008us;2us;16974us;30us;2007us;137us;2006us;2us;16974us;19us;2009us;138us;2008us;2us;16974us;19us;2009us;138us;2008us;0us;16974us;1us;16974us;58us;1322us;1us;16974us;59us;1435us;1us;16974us;59us;1456us;1us;16974us;156us;1481us;1us;16974us;64us;1487us;3us;16974us;93us;2051us;94us;2048us;95us;2050us;3us;16974us;93us;2051us;94us;2048us;95us;2050us;3us;16974us;60us;2043us;61us;2045us;196us;2046us;1us;16974us;65us;2047us;0us;16975us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;32768us;127us;1081us;2us;16978us;31us;1083us;165us;1078us;0us;16976us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;10us;1077us;19us;767us;203us;1061us;1us;17543us;21us;2001us;2us;16978us;31us;1083us;165us;1078us;0us;16977us;1us;32768us;127us;1090us;80us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1092us;0us;16979us;0us;16980us;82us;32768us;13us;1189us;21us;1096us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1095us;0us;16981us;0us;16982us;81us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1098us;0us;16983us;0us;16984us;0us;16985us;0us;16986us;0us;16987us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;4us;32768us;10us;1077us;26us;1307us;87us;1305us;203us;1061us;0us;16988us;0us;16989us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;4us;32768us;10us;1077us;26us;1307us;87us;1305us;203us;1061us;0us;16990us;0us;16991us;82us;32768us;10us;1077us;13us;1189us;18us;1114us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;5us;32768us;10us;1077us;26us;1307us;87us;1305us;129us;1116us;203us;1061us;0us;16992us;0us;16993us;2us;16994us;26us;1307us;87us;1305us;0us;16995us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;16996us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;30us;32768us;10us;1077us;28us;1334us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;104us;1332us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;203us;1061us;0us;16997us;0us;16998us;0us;16999us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17000us;68us;17002us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;159us;1166us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17001us;80us;32768us;13us;1189us;22us;1036us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17003us;69us;17005us;13us;1189us;22us;1036us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;159us;1166us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17004us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1066us;0us;17006us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1066us;0us;17007us;45us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;60us;2063us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;94us;2064us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1064us;10us;17543us;10us;1077us;15us;2065us;21us;2001us;30us;2007us;37us;2061us;39us;2062us;60us;2063us;94us;2064us;137us;2006us;203us;1061us;87us;32768us;10us;1077us;13us;1189us;15us;2065us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1062us;9us;32768us;10us;1077us;15us;2065us;19us;2009us;37us;2061us;39us;2062us;60us;2063us;94us;2064us;138us;2008us;203us;1061us;0us;17008us;0us;17009us;0us;17010us;0us;17011us;0us;17012us;1us;32768us;98us;1532us;0us;17013us;4us;32768us;10us;1077us;30us;2007us;137us;2006us;203us;1061us;82us;32768us;10us;1077us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1063us;4us;32768us;10us;1077us;19us;2009us;138us;2008us;203us;1061us;0us;17014us;0us;17015us;0us;17016us;0us;17017us;0us;17018us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;2us;32768us;19us;2009us;138us;2008us;0us;17019us;0us;17020us;0us;17021us;0us;17022us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;26us;17023us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;26us;17024us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;0us;17025us;0us;17026us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;32768us;127us;1169us;1us;17543us;21us;2001us;2us;16978us;31us;1083us;165us;1078us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17027us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;81us;938us;92us;971us;97us;910us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;10us;1077us;19us;767us;203us;1061us;1us;17543us;21us;2001us;3us;16978us;31us;1083us;165us;1078us;203us;1180us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17028us;0us;17029us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;32768us;127us;1183us;1us;17543us;21us;2001us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17030us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;10us;1077us;19us;767us;203us;1061us;0us;17031us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;26us;17032us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17033us;26us;17040us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;20us;17043us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;20us;17045us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;9us;17047us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;20us;17049us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;18us;17051us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;96us;1280us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;18us;17053us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;96us;1280us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;9us;17055us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;9us;17057us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;9us;17059us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;9us;17061us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;9us;17063us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;9us;17065us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;9us;17067us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;189us;1270us;191us;1284us;1us;17069us;191us;1284us;8us;17071us;62us;1278us;78us;1274us;81us;1231us;96us;1280us;158us;1272us;184us;1276us;186us;1282us;191us;1284us;4us;17073us;96us;1280us;158us;1272us;186us;1282us;191us;1284us;4us;17075us;96us;1280us;158us;1272us;186us;1282us;191us;1284us;1us;17077us;191us;1284us;1us;17079us;191us;1284us;1us;17081us;191us;1284us;23us;17083us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;102us;1252us;128us;1246us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;24us;17085us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;30us;32768us;10us;1077us;30us;2007us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;137us;2006us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;203us;1061us;26us;17111us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;26us;17115us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;26us;17120us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;30us;32768us;10us;1077us;28us;1334us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;104us;1332us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;203us;1061us;24us;17124us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;24us;17126us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;24us;17129us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;26us;32768us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;24us;17131us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;89us;1254us;90us;1256us;96us;1280us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;29us;32768us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;93us;2051us;94us;2048us;95us;2050us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;26us;17236us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;28us;32768us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;105us;1539us;128us;1246us;139us;1540us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;26us;17239us;62us;1278us;63us;1264us;69us;1260us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;27us;17566us;62us;1278us;63us;1264us;69us;1260us;77us;2018us;78us;1274us;79us;1234us;80us;1237us;81us;1231us;82us;1240us;89us;1254us;90us;1256us;96us;1280us;97us;1347us;102us;1252us;128us;1246us;143us;1286us;145us;1248us;158us;1272us;160us;1266us;161us;1268us;184us;1276us;185us;1258us;186us;1282us;188us;1250us;189us;1270us;190us;1262us;191us;1284us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17034us;0us;17035us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17036us;0us;17037us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17038us;0us;17039us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;17087us;68us;1242us;80us;32768us;13us;1189us;22us;1036us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17041us;1us;17042us;97us;1343us;6us;17042us;10us;1077us;93us;2051us;94us;2048us;95us;2050us;97us;1343us;203us;1061us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17044us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17046us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17048us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17050us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17052us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17054us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17056us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17058us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17060us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17062us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17064us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17066us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17068us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17070us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17072us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17074us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17076us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17078us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17080us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17082us;76us;17084us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;79us;17503us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1289us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;79us;17504us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17086us;0us;17086us;81us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1296us;4us;32768us;10us;1077us;19us;2009us;138us;2008us;203us;1061us;0us;17088us;0us;17089us;2us;32768us;19us;2009us;138us;2008us;0us;17090us;0us;17091us;0us;17092us;0us;17093us;0us;17094us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17095us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;58us;1313us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1316us;0us;17096us;41us;32768us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;58us;1313us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1067us;3us;32768us;10us;1077us;20us;1309us;203us;1061us;0us;17097us;0us;17098us;0us;17099us;0us;17100us;39us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1315us;0us;17101us;0us;17102us;0us;17103us;0us;17104us;3us;32768us;10us;1077us;98us;1328us;203us;1068us;3us;17105us;10us;1077us;58us;1320us;203us;1061us;40us;32768us;10us;1077us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1061us;0us;17106us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;0us;17107us;0us;17108us;0us;17109us;0us;17110us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17113us;3us;17119us;27us;1338us;140us;1337us;141us;1340us;0us;17114us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17116us;82us;32768us;10us;1077us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17117us;0us;17118us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;80us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17121us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17122us;0us;17123us;87us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;97us;1345us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17125us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17127us;87us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;97us;1349us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17128us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17130us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17483us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17483us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17132us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17490us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17133us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17486us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17134us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17489us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17135us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17502us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17136us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17497us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17137us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;50us;17498us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17138us;31us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1837us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1385us;31us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1837us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1385us;2us;17576us;35us;2031us;36us;2030us;37us;17280us;14us;17283us;21us;17283us;26us;17283us;35us;2031us;36us;2030us;56us;17576us;71us;17576us;72us;17576us;87us;17283us;92us;17576us;106us;17576us;111us;17283us;122us;17576us;136us;17576us;148us;17576us;155us;17576us;166us;17576us;167us;17576us;168us;17576us;169us;17576us;170us;17576us;171us;17576us;172us;17576us;173us;17576us;174us;17576us;175us;17576us;176us;17576us;177us;17576us;178us;17576us;180us;17576us;181us;17576us;194us;17576us;195us;17576us;199us;17576us;200us;17576us;201us;17576us;202us;17576us;31us;32768us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1384us;31us;32768us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1384us;1us;17140us;76us;1382us;6us;17140us;14us;17282us;26us;17282us;76us;1382us;87us;17282us;111us;17282us;132us;534us;7us;17174us;10us;1077us;46us;1443us;70us;1452us;92us;1445us;100us;1934us;193us;1923us;203us;1061us;0us;17139us;0us;17141us;0us;17142us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17143us;50us;32768us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;119us;1374us;122us;1464us;136us;1469us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17144us;41us;17145us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1395us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;44us;17145us;26us;1577us;46us;1429us;56us;1437us;66us;1398us;69us;1564us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;87us;1573us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1395us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;44us;17256us;26us;1577us;46us;1429us;56us;1437us;66us;1398us;69us;1564us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;87us;1573us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1395us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17146us;5us;17147us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;5us;17148us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;5us;17149us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;3us;32768us;10us;1077us;76us;1400us;203us;1061us;4us;17257us;10us;1077us;69us;1569us;76us;1400us;203us;1061us;42us;32768us;10us;1077us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;5us;17150us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;0us;17151us;0us;17152us;2us;17153us;34us;1410us;35us;1409us;1us;17154us;34us;1410us;5us;17156us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;5us;17431us;34us;1410us;35us;1409us;36us;1408us;74us;1427us;76us;1419us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;32768us;160us;1878us;0us;17155us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;40us;17480us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;32768us;193us;1923us;1us;32768us;193us;1923us;0us;17157us;0us;17157us;0us;17158us;7us;17174us;10us;1077us;46us;1443us;70us;1452us;92us;1445us;100us;1934us;193us;1923us;203us;1061us;0us;17159us;1us;32768us;76us;1422us;7us;17174us;10us;1077us;46us;1443us;70us;1452us;92us;1445us;100us;1934us;193us;1923us;203us;1061us;0us;17160us;3us;32768us;92us;1929us;100us;1934us;193us;1923us;3us;17496us;92us;1929us;100us;1934us;193us;1923us;0us;17161us;2us;32768us;92us;1302us;193us;1301us;0us;17162us;0us;17163us;0us;17164us;81us;17231us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1069us;3us;32768us;10us;1077us;59us;1433us;203us;1061us;0us;17165us;0us;17166us;0us;17167us;0us;17168us;2us;32768us;72us;1627us;92us;1438us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17169us;0us;17170us;0us;17171us;0us;17172us;0us;17173us;0us;17175us;95us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;58us;1969us;62us;1357us;63us;1949us;66us;1398us;69us;1953us;70us;1431us;71us;1483us;72us;1627us;74us;1425us;78us;1446us;82us;1961us;85us;1131us;86us;1133us;89us;1369us;90us;1372us;91us;1414us;92us;1491us;96us;1291us;98us;1191us;100us;1934us;102us;1954us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1288us;145us;1960us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1477us;158us;1366us;159us;1166us;160us;1955us;161us;1956us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;182us;1962us;183us;1363us;184us;1360us;185us;1946us;186us;1948us;187us;1413us;188us;1945us;189us;1354us;190us;1943us;191us;1942us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1932us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;1us;32768us;76us;1448us;1us;32768us;178us;1449us;0us;17176us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17177us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1070us;3us;32768us;10us;1077us;59us;1454us;203us;1061us;0us;17178us;0us;17179us;0us;17180us;0us;17181us;0us;17182us;0us;17183us;0us;17184us;0us;17185us;0us;17186us;0us;17187us;0us;17188us;0us;17189us;0us;17190us;0us;17191us;0us;17192us;81us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;142us;1475us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1473us;3us;32768us;10us;1077us;142us;1471us;203us;1061us;0us;17193us;0us;17194us;1us;32768us;142us;1474us;0us;17195us;0us;17196us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1071us;82us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;156us;1967us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1071us;3us;32768us;10us;1077us;156us;1479us;203us;1061us;0us;17197us;0us;17198us;0us;17199us;0us;17200us;81us;17233us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1072us;3us;32768us;10us;1077us;64us;1485us;203us;1061us;0us;17201us;0us;17202us;0us;17203us;0us;17204us;90us;32768us;10us;1077us;13us;1189us;15us;1501us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;1498us;39us;1499us;41us;769us;46us;1429us;56us;1437us;60us;1500us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;88us;1541us;89us;1368us;90us;1371us;91us;1415us;92us;1490us;93us;2051us;94us;2048us;95us;2050us;96us;1290us;97us;1503us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1352us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1073us;104us;32768us;10us;1077us;13us;1189us;15us;1501us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;1498us;39us;1499us;41us;769us;46us;1429us;56us;1437us;58us;1969us;60us;1500us;62us;1357us;63us;1949us;66us;1398us;69us;1953us;70us;1431us;71us;1483us;72us;1627us;74us;1425us;82us;1961us;85us;1131us;86us;1133us;88us;1541us;89us;1369us;90us;1372us;91us;1415us;92us;1490us;93us;2051us;94us;2048us;95us;2050us;96us;1291us;97us;1503us;98us;1191us;100us;1934us;102us;1954us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1288us;145us;1960us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1477us;158us;1366us;159us;1166us;160us;1955us;161us;1956us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;182us;1962us;183us;1363us;184us;1360us;185us;1946us;186us;1948us;187us;1413us;188us;1945us;189us;1353us;190us;1943us;191us;1942us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1074us;104us;32768us;10us;1077us;13us;1189us;15us;1501us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;1498us;39us;1499us;41us;769us;46us;1429us;56us;1437us;58us;1969us;60us;1500us;62us;1357us;63us;1949us;66us;1398us;69us;1953us;70us;1431us;71us;1483us;72us;1627us;74us;1425us;82us;1961us;85us;1131us;86us;1133us;88us;1541us;89us;1369us;90us;1372us;91us;1415us;92us;1490us;93us;2051us;94us;2048us;95us;2050us;96us;1291us;97us;1503us;98us;1191us;100us;1934us;102us;1954us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1288us;145us;1960us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1477us;158us;1366us;159us;1166us;160us;1955us;161us;1956us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;182us;1962us;183us;1363us;184us;1360us;185us;1946us;186us;1948us;187us;1413us;188us;1945us;189us;1353us;190us;1943us;191us;1942us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1074us;0us;17205us;9us;32768us;10us;1077us;15us;2059us;37us;2056us;39us;2057us;60us;2058us;93us;2051us;94us;2048us;95us;2050us;203us;1061us;0us;17206us;0us;17207us;0us;17208us;0us;17208us;0us;17209us;0us;17210us;0us;17211us;0us;17212us;0us;17213us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17214us;1us;32768us;77us;1506us;1us;32768us;92us;1507us;1us;16553us;73us;317us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17215us;0us;17216us;0us;17217us;0us;17218us;4us;17218us;93us;17221us;94us;17221us;95us;17221us;102us;17221us;4us;32768us;93us;2051us;94us;2048us;95us;2050us;102us;1517us;0us;17219us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;6us;17220us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;85us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;54us;1557us;56us;1437us;60us;2043us;61us;2045us;62us;1356us;66us;1399us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1375us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;196us;2046us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1075us;5us;32768us;10us;1077us;60us;2043us;61us;2045us;196us;2046us;203us;1061us;0us;17222us;0us;17223us;0us;17224us;0us;17225us;0us;17226us;0us;17227us;0us;17228us;0us;17229us;0us;17230us;0us;17232us;0us;17234us;81us;32768us;10us;1077us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17235us;86us;32768us;10us;1077us;13us;1189us;15us;2065us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17237us;0us;17238us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;79us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17240us;0us;17241us;1us;32768us;201us;2016us;3us;17247us;37us;2033us;38us;2036us;108us;2037us;0us;17244us;42us;17249us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;77us;1553us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1395us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;1us;32768us;88us;1546us;0us;17242us;0us;17243us;0us;17246us;1us;32768us;92us;1550us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17248us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1555us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17250us;37us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;93us;2051us;94us;2048us;95us;2050us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1867us;0us;17251us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1837us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;2us;17576us;35us;2031us;36us;2030us;30us;17245us;56us;1624us;71us;1483us;72us;1627us;92us;1489us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17272us;2us;17264us;21us;1586us;83us;1587us;0us;17252us;0us;17253us;82us;32768us;10us;1077us;13us;1189us;22us;1036us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17272us;2us;17264us;21us;1586us;83us;1587us;0us;17254us;0us;17255us;80us;17258us;13us;1189us;22us;1036us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17272us;2us;17264us;21us;1586us;83us;1587us;0us;17259us;3us;32768us;46us;1924us;66us;1591us;193us;1923us;0us;17272us;2us;17264us;21us;1586us;83us;1587us;0us;17260us;5us;17264us;21us;1586us;46us;1924us;66us;1591us;83us;1587us;193us;1923us;1us;32768us;20us;1579us;0us;17261us;0us;17272us;2us;17264us;21us;1586us;83us;1587us;1us;32768us;20us;1583us;0us;17262us;0us;17263us;3us;17263us;46us;1924us;66us;1591us;193us;1923us;1us;17265us;83us;1589us;1us;17266us;21us;1588us;0us;17267us;0us;17268us;1us;17269us;76us;1926us;0us;17270us;0us;17271us;8us;17276us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;60us;2063us;69us;1594us;94us;2064us;203us;1061us;87us;17274us;10us;1077us;13us;1189us;15us;2065us;22us;1036us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;37us;2061us;39us;2062us;41us;769us;46us;1429us;56us;1437us;60us;2063us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;94us;2064us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;0us;17273us;0us;17275us;0us;17277us;3us;17543us;21us;2001us;26us;1608us;87us;1606us;1us;17543us;21us;2001us;3us;17290us;14us;594us;111us;593us;203us;1617us;0us;17278us;2us;32768us;14us;594us;111us;593us;0us;17279us;0us;17281us;0us;17284us;3us;16553us;22us;537us;73us;317us;203us;804us;0us;17286us;2us;16553us;73us;317us;203us;804us;1us;32768us;20us;1610us;0us;17287us;3us;17535us;19us;1996us;20us;1997us;142us;1998us;0us;17288us;3us;17290us;14us;594us;111us;593us;203us;1617us;0us;17289us;3us;17290us;14us;594us;111us;593us;203us;1617us;0us;17291us;3us;17290us;14us;594us;111us;593us;203us;1617us;0us;17292us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;8us;17285us;26us;1608us;36us;1748us;46us;1924us;70us;1762us;87us;1606us;91us;1918us;189us;1920us;193us;1923us;3us;17535us;19us;1996us;20us;1997us;142us;1998us;1us;17543us;21us;2001us;0us;17293us;1us;32768us;72us;1627us;0us;17294us;0us;17295us;43us;32768us;10us;1077us;46us;1429us;56us;1437us;65us;2047us;66us;1399us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1076us;3us;32768us;10us;1077us;65us;2047us;203us;1061us;0us;17296us;0us;17297us;0us;17298us;0us;17299us;0us;17300us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;1us;32768us;98us;1636us;81us;32768us;13us;1189us;22us;1030us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1638us;0us;17301us;0us;17302us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;66us;500us;70us;957us;71us;960us;74us;963us;92us;971us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1649us;2us;32768us;98us;1641us;203us;1647us;82us;32768us;10us;1077us;13us;1189us;18us;1645us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;203us;1061us;3us;32768us;10us;1077us;20us;1643us;203us;1061us;0us;17303us;0us;17304us;1us;32768us;20us;1646us;0us;17305us;1us;32768us;20us;1648us;0us;17307us;1us;32768us;20us;1650us;0us;17308us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;58us;1313us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1316us;0us;17309us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;978us;58us;1313us;66us;500us;70us;957us;71us;960us;73us;317us;74us;963us;81us;938us;92us;971us;97us;1015us;100us;1934us;106us;969us;122us;968us;148us;970us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;193us;1923us;194us;2017us;195us;952us;201us;2016us;202us;849us;203us;1316us;1us;32768us;20us;1655us;0us;17310us;1us;17311us;84us;1657us;32us;32768us;46us;1924us;52us;638us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;653us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;17313us;84us;1659us;32us;32768us;46us;1924us;52us;638us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;653us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;36us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17316us;0us;17317us;1us;17320us;98us;1664us;36us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1671us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17318us;0us;17319us;1us;17324us;96us;1668us;36us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1677us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17321us;0us;17322us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1677us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17323us;1us;17328us;96us;1674us;36us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1677us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17325us;0us;17326us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;73us;317us;74us;1693us;88us;1844us;91us;1918us;92us;1751us;96us;1677us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17327us;32us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;74us;1684us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;7us;17333us;36us;1748us;46us;1924us;70us;1762us;77us;1681us;91us;1918us;189us;1920us;193us;1923us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;6us;17329us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;0us;17330us;1us;32768us;193us;1923us;1us;32768us;77us;1686us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;6us;17331us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;0us;17332us;7us;17338us;36us;1748us;46us;1924us;70us;1762us;77us;1690us;91us;1918us;189us;1920us;193us;1923us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;6us;17334us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;0us;17335us;1us;32768us;193us;1923us;1us;32768us;77us;1695us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;6us;17336us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;189us;1920us;193us;1923us;0us;17337us;7us;17342us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;98us;1700us;189us;1920us;193us;1923us;7us;32768us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;98us;1700us;189us;1920us;193us;1923us;34us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;98us;1703us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17339us;0us;17340us;31us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17341us;1us;17346us;98us;1706us;36us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;98us;1709us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17343us;0us;17344us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17345us;1us;32768us;10us;1712us;0us;17347us;8us;17355us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;96us;1714us;186us;1722us;189us;1920us;193us;1923us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17348us;0us;17349us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17350us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17351us;0us;17352us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17353us;0us;17354us;8us;17362us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;96us;1726us;186us;1731us;189us;1920us;193us;1923us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17356us;0us;17357us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17358us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17359us;0us;17360us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17361us;2us;17366us;79us;1757us;89us;1737us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;2us;17417us;76us;1870us;89us;1739us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;17365us;76us;1926us;0us;17366us;1us;17368us;189us;1744us;4us;17368us;34us;1876us;76us;1873us;160us;1878us;189us;1744us;3us;32768us;62us;862us;92us;858us;178us;857us;0us;17367us;9us;32768us;10us;1077us;36us;1748us;46us;1924us;70us;1762us;91us;1918us;96us;1855us;189us;1920us;193us;1923us;203us;1061us;0us;17369us;1us;32768us;70us;1762us;0us;17370us;0us;17371us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1867us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;4us;32768us;46us;1924us;91us;1918us;189us;1920us;193us;1923us;0us;17372us;0us;17373us;0us;17374us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17375us;1us;17421us;79us;1760us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17376us;2us;32768us;59us;1763us;97us;1764us;0us;17377us;2us;32768us;59us;1765us;97us;1766us;0us;17378us;2us;32768us;59us;1767us;97us;1768us;0us;17379us;2us;32768us;59us;1769us;97us;1770us;0us;17380us;2us;32768us;59us;1771us;97us;1772us;0us;17381us;2us;32768us;59us;1773us;97us;1774us;0us;17382us;2us;32768us;59us;1775us;97us;1776us;0us;17383us;2us;32768us;59us;1777us;97us;1778us;0us;17384us;2us;32768us;59us;1779us;97us;1780us;0us;17385us;2us;32768us;59us;1781us;97us;1782us;0us;17386us;2us;32768us;59us;1783us;97us;1784us;0us;17387us;2us;32768us;59us;1785us;97us;1786us;0us;17388us;2us;32768us;59us;1787us;97us;1788us;0us;17389us;2us;32768us;59us;1789us;97us;1790us;0us;17390us;2us;32768us;59us;1791us;97us;1792us;0us;17391us;2us;32768us;59us;1793us;97us;1794us;0us;17392us;2us;32768us;59us;1795us;97us;1796us;0us;17393us;2us;32768us;59us;1797us;97us;1798us;0us;17394us;2us;32768us;59us;1799us;97us;1800us;0us;17395us;2us;32768us;59us;1801us;97us;1802us;0us;17396us;2us;32768us;59us;1803us;97us;1804us;0us;17397us;2us;32768us;59us;1805us;97us;1806us;0us;17398us;2us;32768us;59us;1807us;97us;1808us;0us;17399us;2us;32768us;59us;1809us;97us;1810us;0us;17400us;2us;32768us;59us;1811us;97us;1812us;0us;17401us;2us;32768us;59us;1813us;97us;1814us;0us;17402us;2us;32768us;59us;1815us;97us;1816us;0us;17403us;2us;32768us;59us;1817us;97us;1818us;0us;17404us;2us;32768us;59us;1819us;97us;1820us;0us;17405us;2us;32768us;59us;1821us;97us;1822us;0us;17406us;2us;32768us;59us;1823us;97us;1824us;0us;17407us;1us;32768us;59us;1825us;0us;17408us;1us;32768us;97us;1827us;33us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17412us;1us;17409us;97us;1831us;4us;32768us;10us;1077us;97us;1831us;161us;1882us;203us;1061us;33us;17453us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17410us;0us;17411us;1us;17413us;189us;1835us;3us;32768us;62us;862us;92us;858us;178us;857us;0us;17414us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1867us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;4us;32768us;46us;1924us;91us;1918us;189us;1920us;193us;1923us;0us;17415us;1us;17416us;76us;1870us;1us;17417us;76us;1870us;0us;17418us;30us;32768us;46us;1924us;56us;1853us;66us;1847us;88us;1844us;91us;1918us;92us;1848us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;1us;17419us;76us;1870us;0us;17420us;0us;17421us;34us;32768us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1867us;5us;32768us;10us;1077us;93us;2051us;94us;2048us;95us;2050us;203us;1061us;6us;17448us;10us;1077us;69us;1891us;93us;2051us;94us;2048us;95us;2050us;203us;1061us;0us;17422us;0us;17423us;1us;32768us;92us;1854us;33us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;35us;32768us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1729us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1734us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;5us;32768us;10us;1077us;93us;2051us;94us;2048us;95us;2050us;203us;1061us;0us;17424us;0us;17425us;0us;17426us;0us;17427us;0us;17428us;0us;17429us;0us;17430us;40us;32768us;46us;1429us;56us;1437us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;91us;1414us;92us;1491us;100us;1934us;106us;1465us;122us;1464us;136us;1469us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;187us;1412us;193us;1923us;194us;2017us;195us;1519us;199us;2025us;200us;2028us;201us;2016us;202us;849us;0us;17432us;0us;17433us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17434us;0us;17435us;2us;32768us;46us;1924us;193us;1923us;3us;17436us;34us;1876us;76us;1926us;160us;1878us;0us;17437us;7us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;60us;2063us;94us;2064us;203us;1061us;0us;17438us;0us;17439us;1us;32768us;160us;1878us;0us;17440us;36us;17453us;10us;1077us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;161us;1888us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;1us;32768us;97us;1880us;40us;17453us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;46us;1924us;56us;581us;60us;2063us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;94us;2064us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;203us;1061us;0us;17412us;0us;17441us;0us;17442us;0us;17443us;8us;17451us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;60us;2063us;94us;2064us;161us;1886us;203us;1061us;0us;17444us;0us;17445us;0us;17446us;0us;17447us;1us;17448us;69us;1891us;33us;17450us;46us;1924us;56us;581us;66us;1759us;72us;584us;88us;1844us;91us;1918us;92us;1751us;96us;1717us;106us;1866us;113us;1864us;122us;1865us;148us;1863us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;186us;1719us;189us;1920us;193us;1923us;194us;2017us;201us;2016us;202us;849us;0us;17449us;0us;17451us;0us;17452us;8us;32768us;46us;1924us;66us;1898us;91us;1918us;92us;1902us;178us;1908us;186us;1917us;189us;1920us;193us;1923us;3us;32768us;96us;1915us;161us;1897us;186us;1916us;0us;17454us;1us;32768us;161us;1899us;0us;17455us;1us;17456us;76us;1926us;0us;17457us;7us;32768us;46us;1924us;91us;1918us;92us;1902us;178us;1908us;186us;1917us;189us;1920us;193us;1923us;5us;32768us;93us;2051us;94us;2048us;95us;2050us;96us;1915us;186us;1916us;0us;17458us;1us;17459us;189us;1906us;3us;32768us;62us;862us;92us;858us;178us;857us;0us;17460us;0us;17461us;6us;17462us;46us;1924us;91us;1918us;92us;1902us;178us;1908us;189us;1920us;193us;1923us;0us;17463us;0us;17464us;0us;17465us;0us;17466us;0us;17467us;7us;32768us;46us;1924us;91us;1918us;92us;1902us;178us;1908us;186us;1917us;189us;1920us;193us;1923us;7us;32768us;46us;1924us;91us;1918us;92us;1902us;178us;1908us;186us;1917us;189us;1920us;193us;1923us;7us;32768us;46us;1924us;91us;1918us;92us;1902us;178us;1908us;186us;1917us;189us;1920us;193us;1923us;1us;32768us;193us;1923us;0us;17468us;1us;32768us;193us;1923us;0us;17469us;81us;17469us;10us;17516us;15us;17516us;21us;17516us;28us;17516us;34us;17516us;35us;17516us;36us;17516us;37us;17516us;39us;17516us;46us;17516us;56us;17516us;60us;17516us;62us;17516us;63us;17516us;66us;17516us;68us;17516us;69us;17516us;70us;17516us;71us;17516us;72us;17516us;74us;17516us;76us;17516us;78us;17516us;79us;17516us;80us;17516us;81us;17516us;82us;17516us;83us;17516us;89us;17516us;90us;17516us;91us;17516us;92us;17516us;96us;17516us;97us;17516us;100us;17516us;104us;17516us;106us;17516us;122us;17516us;128us;17516us;136us;17516us;143us;17516us;145us;17516us;148us;17516us;149us;17516us;154us;17516us;155us;17516us;158us;17516us;160us;17516us;161us;17516us;166us;17516us;167us;17516us;168us;17516us;169us;17516us;170us;17516us;171us;17516us;172us;17516us;173us;17516us;174us;17516us;175us;17516us;176us;17516us;177us;17516us;178us;17516us;180us;17516us;181us;17516us;183us;17516us;184us;17516us;185us;17516us;186us;17516us;187us;17516us;188us;17516us;189us;17516us;190us;17516us;191us;17516us;193us;17516us;194us;17516us;195us;17516us;199us;17516us;200us;17516us;201us;17516us;202us;17516us;203us;17516us;0us;17470us;0us;17471us;0us;17472us;8us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;60us;2063us;94us;2064us;193us;1923us;203us;1061us;0us;17473us;0us;17474us;27us;32768us;58us;1969us;62us;1951us;63us;1949us;69us;1953us;74us;1957us;82us;1961us;89us;1958us;90us;1959us;96us;1952us;102us;1954us;143us;1964us;145us;1960us;155us;1966us;158us;1963us;160us;1955us;161us;1956us;182us;1962us;183us;1950us;184us;1947us;185us;1946us;186us;1948us;187us;1941us;188us;1945us;189us;1944us;190us;1943us;191us;1942us;203us;1932us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17475us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17476us;0us;17477us;1us;32768us;58us;1936us;5us;32768us;66us;1938us;93us;2051us;94us;2048us;95us;2050us;193us;1968us;0us;17478us;1us;32768us;58us;1939us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17479us;0us;17480us;0us;17481us;0us;17482us;0us;17483us;0us;17484us;0us;17485us;0us;17486us;0us;17487us;0us;17488us;0us;17489us;0us;17490us;0us;17491us;0us;17492us;0us;17493us;0us;17494us;0us;17495us;0us;17496us;0us;17497us;0us;17498us;0us;17499us;0us;17500us;0us;17501us;0us;17502us;1us;17503us;143us;1965us;0us;17504us;1us;32768us;156us;1967us;0us;17505us;0us;17506us;1us;32768us;193us;1968us;0us;17507us;0us;17508us;0us;17509us;0us;17510us;1us;17511us;76us;1976us;0us;17512us;10us;32768us;10us;1077us;15us;2065us;37us;2061us;39us;2062us;60us;2063us;92us;1929us;94us;2064us;100us;1934us;193us;1923us;203us;1061us;0us;17513us;0us;17514us;0us;17515us;0us;17516us;0us;17517us;0us;17518us;0us;17519us;0us;17520us;3us;17521us;21us;1984us;67us;1983us;83us;1982us;0us;17522us;3us;17524us;21us;1984us;67us;1983us;83us;1982us;0us;17523us;1us;17525us;83us;1991us;1us;17526us;21us;1992us;0us;17527us;0us;17528us;0us;17529us;0us;17530us;0us;17531us;0us;17532us;0us;17533us;0us;17534us;0us;17536us;0us;17538us;0us;17542us;0us;17544us;0us;17546us;0us;17550us;0us;17552us;0us;17554us;0us;17555us;0us;17556us;0us;17557us;0us;17558us;0us;17559us;0us;17560us;0us;17561us;0us;17562us;0us;17563us;0us;17564us;0us;17565us;1us;32768us;193us;1923us;0us;17567us;0us;17568us;81us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;197us;2020us;198us;2021us;199us;2025us;200us;2028us;201us;2016us;202us;849us;2us;32768us;197us;2020us;198us;2021us;0us;17569us;0us;17570us;81us;32768us;13us;1189us;24us;1639us;25us;1653us;29us;1186us;30us;759us;32us;1173us;33us;755us;41us;769us;46us;1429us;56us;1437us;62us;1356us;66us;1398us;70us;1431us;71us;1483us;72us;1627us;74us;1424us;85us;1131us;86us;1133us;89us;1368us;90us;1371us;91us;1414us;92us;1491us;96us;1290us;98us;1191us;100us;1934us;106us;1465us;107us;1110us;114us;1123us;115us;1127us;116us;1102us;117us;1106us;119us;1374us;122us;1464us;123us;1135us;124us;1634us;125us;1651us;126us;1118us;130us;1181us;133us;1125us;134us;1129us;136us;1469us;143us;1287us;146us;1386us;147us;1388us;148us;1463us;149us;1418us;154us;1421us;155us;1476us;158us;1365us;159us;1166us;162us;749us;163us;1160us;164us;1162us;166us;846us;167us;845us;168us;844us;169us;843us;170us;842us;171us;841us;172us;839us;173us;837us;174us;835us;175us;833us;176us;840us;177us;838us;178us;836us;180us;834us;181us;832us;183us;1362us;184us;1359us;187us;1412us;189us;1351us;193us;1923us;194us;2017us;195us;1519us;197us;2020us;198us;2021us;199us;2025us;200us;2028us;201us;2016us;202us;849us;2us;32768us;197us;2020us;198us;2021us;0us;17571us;0us;17572us;0us;17573us;0us;17574us;0us;17575us;0us;17577us;3us;32768us;37us;2033us;38us;2036us;108us;2037us;3us;17600us;37us;2033us;38us;2036us;108us;2037us;0us;17579us;0us;17580us;0us;17581us;3us;32768us;39us;2038us;40us;2041us;150us;2042us;3us;17601us;39us;2038us;40us;2041us;150us;2042us;0us;17582us;0us;17583us;0us;17584us;3us;32768us;60us;2043us;61us;2045us;196us;2046us;0us;17585us;0us;17586us;0us;17587us;0us;17588us;3us;32768us;93us;2051us;94us;2048us;95us;2050us;0us;17589us;0us;17590us;0us;17591us;3us;32768us;15us;2052us;16us;2054us;17us;2055us;0us;17592us;0us;17593us;0us;17594us;0us;17595us;0us;17596us;0us;17597us;0us;17598us;0us;17599us;0us;17600us;0us;17601us;0us;17602us;0us;17603us;0us;17604us;0us;17605us;|]
-let _fsyacc_actionTableRowOffsets = [|0us;17us;18us;114us;115us;123us;124us;204us;205us;239us;240us;241us;242us;243us;244us;245us;246us;251us;252us;257us;258us;263us;264us;270us;271us;277us;278us;284us;285us;302us;303us;307us;395us;422us;423us;426us;427us;428us;429us;431us;432us;435us;436us;437us;438us;441us;442us;444us;445us;450us;451us;453us;457us;459us;465us;467us;468us;469us;471us;476us;478us;479us;481us;482us;484us;485us;487us;504us;505us;509us;518us;537us;538us;539us;540us;556us;562us;564us;565us;566us;573us;574us;575us;579us;597us;601us;617us;618us;622us;627us;628us;629us;630us;634us;643us;647us;653us;654us;655us;656us;658us;660us;661us;662us;663us;665us;667us;669us;673us;677us;680us;682us;717us;719us;720us;801us;828us;908us;938us;940us;941us;950us;954us;955us;971us;973us;977us;978us;994us;996us;997us;999us;1001us;1002us;1005us;1013us;1014us;1015us;1070us;1072us;1087us;1089us;1093us;1095us;1096us;1098us;1099us;1100us;1101us;1103us;1138us;1139us;1140us;1157us;1161us;1162us;1163us;1165us;1166us;1181us;1187us;1188us;1189us;1205us;1209us;1210us;1211us;1226us;1232us;1233us;1234us;1235us;1236us;1239us;1254us;1255us;1259us;1263us;1274us;1321us;1323us;1327us;1331us;1334us;1336us;1371us;1374us;1376us;1377us;1409us;1416us;1450us;1457us;1458us;1460us;1461us;1468us;1470us;1471us;1473us;1474us;1476us;1511us;1512us;1517us;1518us;1523us;1526us;1527us;1528us;1530us;1536us;1537us;1538us;1542us;1544us;1545us;1546us;1547us;1549us;1550us;1566us;1570us;1571us;1574us;1575us;1577us;1578us;1583us;1584us;1586us;1587us;1589us;1590us;1592us;1688us;1689us;1694us;1782us;1879us;1880us;1881us;1976us;1982us;1984us;1985us;1986us;1993us;1994us;1995us;1996us;2001us;2089us;2119us;2214us;2215us;2216us;2217us;2239us;2240us;2335us;2336us;2340us;2344us;2351us;2356us;2361us;2362us;2363us;2364us;2368us;2380us;2381us;2383us;2384us;2465us;2466us;2468us;2470us;2471us;2472us;2475us;2481us;2482us;2483us;2486us;2487us;2488us;2496us;2498us;2499us;2533us;2540us;2541us;2546us;2547us;2549us;2556us;2562us;2563us;2564us;2570us;2571us;2572us;2573us;2574us;2576us;2671us;2675us;2676us;2677us;2678us;2685us;2689us;2690us;2691us;2693us;2694us;2709us;2712us;2721us;2723us;2724us;2726us;2728us;2729us;2730us;2731us;2732us;2742us;2743us;2747us;2778us;2779us;2783us;2787us;2818us;2819us;2822us;2827us;2830us;2861us;2862us;2864us;2865us;2867us;2868us;2870us;2871us;2873us;2874us;2886us;2887us;2888us;2889us;2890us;2894us;2896us;2897us;2899us;2901us;2902us;2942us;2943us;2947us;2950us;2952us;2954us;2958us;2965us;2966us;2967us;2977us;2979us;2987us;2989us;2995us;2997us;2998us;2999us;3000us;3002us;3003us;3004us;3005us;3007us;3042us;3043us;3044us;3055us;3064us;3065us;3066us;3076us;3077us;3079us;3085us;3086us;3087us;3094us;3100us;3101us;3102us;3103us;3104us;3119us;3120us;3123us;3138us;3139us;3141us;3142us;3144us;3147us;3148us;3149us;3151us;3153us;3154us;3156us;3194us;3196us;3198us;3279us;3280us;3318us;3320us;3327us;3408us;3409us;3410us;3411us;3412us;3414us;3415us;3417us;3418us;3422us;3426us;3442us;3494us;3495us;3496us;3501us;3503us;3504us;3505us;3539us;3547us;3548us;3549us;3551us;3555us;3558us;3560us;3595us;3598us;3600us;3601us;3602us;3604us;3605us;3607us;3608us;3610us;3611us;3649us;3651us;3661us;3742us;3744us;3745us;3746us;3747us;3749us;3750us;3752us;3753us;3755us;3759us;3763us;3767us;3803us;3804us;3805us;3806us;3807us;3809us;3813us;3817us;3819us;3829us;3910us;3913us;3914us;3915us;3916us;3917us;3953us;3954us;3955us;3957us;3961us;3962us;3964us;3968us;3969us;3970us;3975us;3977us;3981us;3982us;3983us;3984us;3985us;3986us;3987us;4019us;4023us;4024us;4031us;4035us;4036us;4074us;4108us;4109us;4140us;4142us;4143us;4144us;4145us;4149us;4150us;4151us;4152us;4155us;4156us;4157us;4159us;4165us;4166us;4167us;4168us;4171us;4186us;4187us;4192us;4198us;4202us;4204us;4205us;4207us;4208us;4209us;4211us;4213us;4214us;4216us;4217us;4218us;4219us;4223us;4260us;4263us;4265us;4268us;4269us;4270us;4271us;4272us;4307us;4338us;4340us;4344us;4345us;4351us;4357us;4358us;4359us;4363us;4364us;4365us;4368us;4369us;4370us;4373us;4377us;4378us;4379us;4381us;4382us;4383us;4384us;4385us;4386us;4387us;4395us;4399us;4402us;4404us;4405us;4406us;4407us;4409us;4414us;4415us;4418us;4420us;4422us;4425us;4426us;4427us;4430us;4432us;4463us;4465us;4467us;4469us;4471us;4472us;4473us;4475us;4479us;4481us;4483us;4484us;4485us;4518us;4520us;4522us;4524us;4557us;4558us;4559us;4561us;4563us;4594us;4596us;4598us;4601us;4603us;4637us;4638us;4642us;4676us;4681us;4687us;4688us;4692us;4693us;4694us;4696us;4700us;4701us;4736us;4741us;4743us;4745us;4747us;4751us;4752us;4755us;4756us;4757us;4764us;4796us;4803us;4817us;4819us;4820us;4822us;4824us;4825us;4828us;4829us;4831us;4833us;4834us;4838us;4845us;4881us;4882us;4917us;4918us;4919us;4954us;4955us;4956us;4957us;4992us;4993us;5034us;5040us;5041us;5071us;5075us;5076us;5078us;5082us;5083us;5088us;5089us;5130us;5137us;5184us;5185us;5220us;5221us;5222us;5255us;5256us;5258us;5290us;5291us;5293us;5325us;5333us;5341us;5342us;5343us;5344us;5345us;5348us;5354us;5355us;5356us;5358us;5359us;5363us;5367us;5371us;5407us;5408us;5409us;5410us;5411us;5413us;5414us;5416us;5420us;5424us;5426us;5427us;5428us;5430us;5465us;5466us;5467us;5470us;5472us;5474us;5477us;5478us;5479us;5560us;5561us;5563us;5566us;5570us;5571us;5653us;5657us;5658us;5659us;5660us;5661us;5662us;5663us;5664us;5665us;5667us;5671us;5673us;5676us;5678us;5683us;5687us;5688us;5690us;5692us;5694us;5695us;5697us;5698us;5702us;5709us;5710us;5712us;5718us;5720us;5722us;5723us;5724us;5725us;5727us;5729us;5730us;5734us;5736us;5737us;5740us;5742us;5743us;5745us;5746us;5747us;5749us;5787us;5789us;5793us;5875us;5876us;5877us;5878us;5958us;5964us;5965us;5966us;5967us;5968us;5970us;5971us;5974us;5977us;6058us;6059us;6062us;6063us;6064us;6067us;6101us;6102us;6103us;6104us;6105us;6106us;6107us;6108us;6109us;6110us;6111us;6112us;6113us;6114us;6115us;6116us;6117us;6118us;6119us;6120us;6121us;6123us;6125us;6126us;6128us;6130us;6132us;6133us;6134us;6137us;6141us;6142us;6143us;6146us;6147us;6149us;6151us;6152us;6158us;6159us;6161us;6162us;6164us;6167us;6203us;6204us;6205us;6209us;6213us;6214us;6215us;6224us;6230us;6231us;6232us;6233us;6237us;6238us;6239us;6243us;6245us;6248us;6251us;6254us;6256us;6258us;6265us;6272us;6279us;6286us;6323us;6324us;6362us;6400us;6402us;6403us;6404us;6449us;6494us;6495us;6496us;6541us;6542us;6580us;6618us;6621us;6622us;6626us;6627us;6629us;6630us;6634us;6639us;6680us;6687us;6688us;6689us;6729us;6767us;6768us;6804us;6805us;6841us;6842us;6843us;6879us;6880us;6916us;6917us;6949us;6950us;6951us;7016us;7020us;7021us;7022us;7060us;7061us;7097us;7098us;7134us;7135us;7136us;7140us;7144us;7145us;7149us;7150us;7189us;7191us;7192us;7231us;7233us;7234us;7236us;7238us;7239us;7240us;7241us;7242us;7243us;7244us;7309us;7315us;7316us;7317us;7321us;7324us;7325us;7327us;7368us;7375us;7376us;7377us;7381us;7382us;7383us;7390us;7395us;7399us;7402us;7406us;7410us;7414us;7417us;7424us;7427us;7434us;7443us;7459us;7467us;7504us;7505us;7544us;7546us;7548us;7584us;7585us;7586us;7625us;7664us;7665us;7711us;7757us;7758us;7759us;7805us;7806us;7845us;7884us;7887us;7888us;7891us;7892us;7897us;7938us;7939us;7940us;7941us;7980us;7981us;8064us;8070us;8071us;8072us;8073us;8074us;8157us;8161us;8162us;8163us;8190us;8192us;8193us;8194us;8288us;8290us;8326us;8327us;8328us;8330us;8331us;8362us;8442us;8443us;8523us;8524us;8526us;8606us;8610us;8611us;8694us;8695us;8698us;8701us;8704us;8707us;8710us;8711us;8713us;8715us;8717us;8719us;8721us;8725us;8729us;8733us;8735us;8736us;8774us;8855us;8857us;8860us;8861us;8899us;8980us;8984us;8986us;8989us;8990us;8992us;9073us;9074us;9075us;9158us;9159us;9160us;9242us;9243us;9244us;9245us;9246us;9247us;9327us;9332us;9333us;9334us;9414us;9419us;9420us;9421us;9504us;9510us;9511us;9512us;9515us;9516us;9597us;9598us;9680us;9711us;9712us;9713us;9714us;9794us;9795us;9864us;9865us;9946us;9947us;10017us;10018us;10100us;10101us;10183us;10184us;10230us;10241us;10329us;10339us;10340us;10341us;10342us;10343us;10344us;10346us;10347us;10352us;10435us;10440us;10441us;10442us;10443us;10444us;10445us;10526us;10529us;10530us;10531us;10532us;10533us;10615us;10642us;10724us;10751us;10752us;10753us;10791us;10872us;10874us;10876us;10879us;10960us;10961us;10999us;11080us;11084us;11086us;11090us;11171us;11172us;11173us;11253us;11255us;11257us;11338us;11339us;11420us;11424us;11425us;11505us;11532us;11614us;11615us;11642us;11663us;11684us;11694us;11715us;11734us;11753us;11763us;11773us;11783us;11793us;11803us;11813us;11823us;11825us;11834us;11839us;11844us;11846us;11848us;11850us;11874us;11899us;11930us;11957us;11984us;12011us;12042us;12067us;12092us;12117us;12144us;12169us;12199us;12226us;12255us;12282us;12310us;12346us;12347us;12348us;12384us;12385us;12386us;12422us;12423us;12424us;12504us;12506us;12587us;12588us;12590us;12597us;12684us;12685us;12772us;12773us;12860us;12861us;12948us;12949us;13036us;13037us;13124us;13125us;13212us;13213us;13300us;13301us;13388us;13389us;13476us;13477us;13564us;13565us;13652us;13653us;13740us;13741us;13828us;13829us;13916us;13917us;14004us;14005us;14092us;14093us;14180us;14181us;14268us;14269us;14356us;14357us;14434us;14514us;14594us;14674us;14675us;14676us;14758us;14763us;14764us;14765us;14768us;14769us;14770us;14771us;14772us;14773us;14853us;14857us;14858us;14899us;14900us;14942us;14946us;14947us;14948us;14949us;14950us;14990us;14991us;14992us;14993us;14994us;14998us;15002us;15043us;15044us;15083us;15084us;15085us;15086us;15087us;15167us;15249us;15250us;15254us;15255us;15337us;15338us;15421us;15422us;15423us;15503us;15584us;15585us;15665us;15666us;15667us;15755us;15756us;15843us;15844us;15932us;15933us;16020us;16021us;16072us;16123us;16174us;16225us;16226us;16277us;16328us;16329us;16380us;16431us;16432us;16483us;16534us;16535us;16586us;16637us;16638us;16689us;16740us;16741us;16792us;16843us;16844us;16876us;16908us;16911us;16949us;16981us;17013us;17015us;17022us;17030us;17031us;17032us;17033us;17084us;17085us;17136us;17137us;17179us;17224us;17269us;17270us;17276us;17317us;17323us;17329us;17333us;17338us;17381us;17387us;17388us;17389us;17392us;17394us;17400us;17406us;17447us;17488us;17490us;17491us;17532us;17573us;17575us;17577us;17578us;17579us;17580us;17588us;17589us;17591us;17599us;17600us;17604us;17608us;17609us;17612us;17613us;17614us;17615us;17697us;17701us;17702us;17703us;17704us;17705us;17708us;17788us;17789us;17790us;17791us;17792us;17793us;17794us;17890us;17894us;17896us;17898us;17899us;17903us;17904us;17986us;17990us;17991us;17992us;17993us;17994us;17995us;17996us;17997us;17998us;17999us;18000us;18001us;18002us;18003us;18004us;18005us;18087us;18091us;18092us;18093us;18095us;18096us;18097us;18179us;18262us;18266us;18267us;18268us;18269us;18270us;18352us;18356us;18357us;18358us;18359us;18360us;18451us;18556us;18661us;18662us;18672us;18673us;18674us;18675us;18676us;18677us;18678us;18679us;18680us;18681us;18761us;18762us;18764us;18766us;18768us;18772us;18852us;18853us;18854us;18855us;18856us;18861us;18866us;18867us;18899us;18906us;18992us;18998us;18999us;19000us;19001us;19002us;19003us;19004us;19005us;19006us;19007us;19008us;19009us;19091us;19092us;19179us;19180us;19181us;19261us;19341us;19342us;19343us;19345us;19349us;19350us;19393us;19395us;19396us;19397us;19398us;19400us;19434us;19438us;19439us;19473us;19474us;19512us;19513us;19544us;19547us;19578us;19579us;19582us;19583us;19584us;19667us;19668us;19671us;19672us;19673us;19754us;19755us;19758us;19759us;19763us;19764us;19767us;19768us;19774us;19776us;19777us;19778us;19781us;19783us;19784us;19785us;19789us;19791us;19793us;19794us;19795us;19797us;19798us;19799us;19808us;19896us;19897us;19898us;19899us;19903us;19905us;19909us;19910us;19913us;19914us;19915us;19916us;19920us;19921us;19924us;19926us;19927us;19931us;19932us;19936us;19937us;19941us;19942us;19946us;19947us;19979us;19988us;19992us;19994us;19995us;19997us;19998us;19999us;20043us;20047us;20048us;20049us;20050us;20051us;20052us;20088us;20090us;20172us;20173us;20174us;20211us;20214us;20297us;20301us;20302us;20303us;20305us;20306us;20308us;20309us;20311us;20312us;20353us;20354us;20395us;20397us;20398us;20400us;20433us;20435us;20468us;20505us;20506us;20507us;20509us;20546us;20547us;20548us;20550us;20587us;20588us;20589us;20624us;20625us;20627us;20664us;20665us;20666us;20701us;20702us;20735us;20743us;20777us;20784us;20785us;20787us;20789us;20823us;20830us;20831us;20839us;20873us;20880us;20881us;20883us;20885us;20919us;20926us;20927us;20935us;20943us;20978us;20979us;20980us;21012us;21013us;21015us;21052us;21053us;21054us;21088us;21089us;21091us;21092us;21101us;21137us;21138us;21139us;21173us;21174us;21210us;21211us;21212us;21248us;21249us;21250us;21259us;21295us;21296us;21297us;21331us;21332us;21368us;21369us;21370us;21404us;21405us;21408us;21439us;21442us;21473us;21475us;21476us;21478us;21483us;21487us;21488us;21498us;21499us;21501us;21502us;21503us;21538us;21542us;21547us;21548us;21549us;21550us;21584us;21585us;21587us;21621us;21622us;21625us;21626us;21629us;21630us;21633us;21634us;21637us;21638us;21641us;21642us;21645us;21646us;21649us;21650us;21653us;21654us;21657us;21658us;21661us;21662us;21665us;21666us;21669us;21670us;21673us;21674us;21677us;21678us;21681us;21682us;21685us;21686us;21689us;21690us;21693us;21694us;21697us;21698us;21701us;21702us;21705us;21706us;21709us;21710us;21713us;21714us;21717us;21718us;21721us;21722us;21725us;21726us;21729us;21730us;21733us;21734us;21737us;21738us;21741us;21742us;21745us;21746us;21748us;21749us;21751us;21785us;21786us;21788us;21793us;21827us;21828us;21829us;21831us;21835us;21836us;21871us;21875us;21880us;21881us;21883us;21885us;21886us;21917us;21919us;21920us;21921us;21956us;21962us;21969us;21970us;21971us;21973us;22007us;22043us;22049us;22050us;22051us;22052us;22053us;22054us;22055us;22056us;22097us;22098us;22099us;22103us;22104us;22105us;22108us;22112us;22113us;22121us;22122us;22123us;22125us;22126us;22163us;22165us;22206us;22207us;22208us;22209us;22210us;22219us;22220us;22221us;22222us;22223us;22225us;22259us;22260us;22261us;22262us;22271us;22275us;22276us;22278us;22279us;22281us;22282us;22290us;22296us;22297us;22299us;22303us;22304us;22305us;22312us;22313us;22314us;22315us;22316us;22317us;22325us;22333us;22341us;22343us;22344us;22346us;22347us;22429us;22430us;22431us;22432us;22441us;22442us;22443us;22471us;22475us;22476us;22480us;22481us;22482us;22484us;22490us;22491us;22493us;22497us;22498us;22499us;22500us;22501us;22502us;22503us;22504us;22505us;22506us;22507us;22508us;22509us;22510us;22511us;22512us;22513us;22514us;22515us;22516us;22517us;22518us;22519us;22520us;22521us;22523us;22524us;22526us;22527us;22528us;22530us;22531us;22532us;22533us;22534us;22536us;22537us;22548us;22549us;22550us;22551us;22552us;22553us;22554us;22555us;22556us;22560us;22561us;22565us;22566us;22568us;22570us;22571us;22572us;22573us;22574us;22575us;22576us;22577us;22578us;22579us;22580us;22581us;22582us;22583us;22584us;22585us;22586us;22587us;22588us;22589us;22590us;22591us;22592us;22593us;22594us;22595us;22596us;22597us;22599us;22600us;22601us;22683us;22686us;22687us;22688us;22770us;22773us;22774us;22775us;22776us;22777us;22778us;22779us;22783us;22787us;22788us;22789us;22790us;22794us;22798us;22799us;22800us;22801us;22805us;22806us;22807us;22808us;22809us;22813us;22814us;22815us;22816us;22820us;22821us;22822us;22823us;22824us;22825us;22826us;22827us;22828us;22829us;22830us;22831us;22832us;22833us;|]
-let _fsyacc_reductionSymbolCounts = [|1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;2us;3us;3us;3us;1us;2us;3us;1us;1us;2us;1us;1us;3us;0us;2us;1us;1us;2us;3us;2us;5us;5us;5us;3us;3us;1us;2us;2us;1us;3us;4us;1us;1us;4us;3us;3us;1us;1us;0us;3us;3us;2us;1us;1us;5us;5us;4us;5us;3us;1us;12us;0us;2us;5us;3us;5us;3us;3us;0us;3us;2us;7us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;1us;1us;0us;3us;11us;4us;4us;4us;4us;5us;5us;5us;0us;2us;3us;3us;1us;3us;3us;3us;1us;1us;2us;3us;0us;2us;3us;2us;1us;2us;2us;1us;3us;4us;1us;4us;3us;3us;1us;1us;0us;5us;4us;3us;1us;2us;2us;3us;1us;2us;3us;1us;1us;3us;3us;3us;5us;3us;5us;4us;2us;1us;2us;2us;3us;3us;3us;1us;3us;3us;3us;3us;3us;1us;1us;3us;3us;3us;3us;1us;0us;1us;2us;5us;4us;4us;2us;1us;3us;3us;4us;6us;2us;2us;2us;2us;2us;1us;1us;1us;1us;3us;3us;0us;1us;2us;8us;7us;7us;6us;2us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;1us;1us;2us;0us;3us;2us;3us;3us;1us;3us;6us;5us;4us;4us;4us;1us;2us;2us;3us;3us;4us;5us;4us;5us;4us;10us;3us;4us;5us;5us;8us;6us;6us;5us;5us;6us;6us;5us;4us;8us;6us;6us;4us;0us;2us;2us;3us;3us;1us;4us;2us;0us;1us;1us;1us;1us;3us;1us;0us;3us;0us;3us;5us;2us;1us;0us;2us;2us;1us;0us;2us;2us;3us;3us;1us;3us;2us;4us;4us;3us;4us;2us;1us;1us;6us;3us;3us;3us;7us;3us;3us;3us;2us;2us;1us;3us;3us;3us;1us;1us;1us;1us;1us;2us;3us;3us;2us;1us;3us;3us;1us;2us;4us;5us;3us;1us;0us;5us;1us;0us;0us;2us;3us;1us;3us;1us;4us;3us;3us;4us;3us;5us;7us;4us;4us;3us;1us;3us;1us;2us;3us;1us;1us;3us;1us;3us;3us;5us;4us;4us;4us;5us;5us;5us;1us;3us;4us;2us;4us;2us;3us;3us;2us;4us;3us;1us;3us;1us;3us;1us;1us;1us;3us;2us;2us;5us;5us;4us;3us;2us;5us;4us;1us;3us;3us;0us;2us;3us;1us;2us;4us;3us;2us;1us;1us;1us;1us;1us;1us;8us;1us;1us;0us;3us;3us;2us;3us;1us;4us;2us;2us;2us;2us;2us;2us;3us;0us;2us;1us;6us;6us;5us;3us;3us;1us;2us;2us;0us;4us;3us;1us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;4us;1us;2us;1us;3us;1us;2us;1us;3us;1us;1us;2us;3us;3us;2us;1us;3us;1us;0us;3us;2us;3us;3us;2us;3us;3us;3us;1us;1us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;4us;3us;3us;2us;2us;3us;4us;4us;2us;3us;3us;2us;1us;3us;1us;2us;3us;3us;1us;1us;3us;3us;3us;3us;1us;2us;1us;1us;1us;1us;1us;3us;3us;3us;2us;4us;4us;4us;3us;1us;0us;3us;3us;1us;1us;3us;3us;2us;3us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;3us;3us;2us;0us;2us;3us;3us;3us;2us;1us;3us;2us;1us;2us;1us;1us;3us;3us;1us;2us;3us;2us;1us;3us;5us;1us;1us;1us;6us;7us;0us;3us;3us;2us;2us;3us;3us;1us;1us;1us;3us;3us;3us;3us;3us;3us;2us;3us;4us;3us;3us;2us;2us;2us;1us;2us;2us;1us;2us;2us;5us;5us;5us;4us;3us;4us;5us;5us;5us;4us;3us;5us;2us;4us;3us;2us;2us;2us;2us;8us;8us;7us;5us;3us;2us;2us;3us;3us;3us;3us;3us;3us;3us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;2us;2us;1us;1us;4us;4us;4us;2us;1us;2us;1us;3us;2us;3us;3us;2us;1us;2us;2us;1us;2us;2us;4us;4us;4us;3us;2us;2us;0us;2us;2us;2us;2us;2us;2us;0us;2us;2us;3us;3us;3us;3us;4us;4us;3us;3us;4us;4us;2us;2us;2us;2us;2us;2us;2us;6us;4us;4us;2us;2us;2us;1us;2us;1us;2us;1us;3us;3us;2us;3us;3us;3us;2us;2us;1us;3us;3us;2us;3us;1us;1us;3us;3us;3us;2us;4us;4us;1us;1us;1us;0us;1us;5us;3us;3us;3us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;3us;3us;2us;3us;3us;3us;2us;3us;3us;3us;2us;2us;3us;3us;3us;2us;2us;2us;2us;2us;4us;6us;1us;1us;1us;3us;3us;1us;3us;3us;3us;2us;2us;1us;1us;1us;1us;0us;1us;0us;1us;2us;3us;3us;2us;5us;1us;1us;6us;2us;0us;0us;1us;0us;4us;0us;2us;3us;6us;1us;5us;3us;1us;1us;2us;5us;5us;4us;6us;1us;0us;1us;1us;2us;2us;1us;1us;3us;0us;3us;2us;3us;1us;2us;4us;3us;2us;5us;4us;2us;1us;0us;2us;3us;3us;2us;0us;2us;2us;5us;2us;1us;3us;3us;3us;2us;2us;4us;4us;5us;5us;5us;4us;4us;3us;2us;3us;1us;3us;1us;3us;0us;2us;2us;3us;3us;1us;3us;3us;2us;1us;3us;3us;2us;1us;4us;4us;5us;5us;2us;3us;3us;4us;4us;1us;3us;3us;4us;3us;3us;3us;4us;1us;2us;3us;3us;2us;2us;2us;3us;3us;1us;3us;3us;2us;3us;3us;2us;1us;3us;3us;1us;1us;3us;1us;2us;3us;2us;4us;1us;1us;3us;3us;2us;3us;4us;5us;6us;7us;8us;9us;10us;11us;12us;13us;14us;15us;16us;17us;18us;19us;20us;21us;22us;23us;24us;25us;26us;27us;28us;29us;30us;31us;32us;33us;4us;3us;3us;0us;1us;3us;4us;1us;1us;1us;2us;1us;1us;3us;3us;6us;6us;5us;4us;3us;1us;1us;2us;1us;1us;3us;2us;3us;4us;3us;1us;2us;6us;6us;4us;3us;3us;2us;2us;1us;3us;2us;1us;1us;0us;3us;3us;1us;1us;3us;1us;3us;1us;1us;2us;1us;3us;3us;2us;2us;2us;1us;1us;1us;3us;3us;3us;3us;1us;4us;6us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;1us;2us;3us;1us;1us;1us;1us;3us;3us;1us;1us;1us;1us;1us;1us;1us;2us;2us;0us;1us;1us;2us;2us;1us;1us;1us;1us;1us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;1us;3us;2us;3us;1us;2us;1us;1us;0us;1us;0us;2us;1us;1us;2us;1us;1us;2us;1us;1us;1us;2us;1us;1us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;|]
-let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;4us;5us;5us;5us;6us;6us;7us;7us;7us;7us;7us;7us;7us;8us;8us;9us;10us;11us;11us;12us;12us;13us;14us;14us;15us;15us;16us;16us;16us;17us;17us;17us;18us;18us;19us;19us;20us;20us;21us;22us;22us;23us;23us;23us;23us;24us;24us;24us;25us;25us;25us;26us;26us;26us;26us;26us;26us;26us;26us;27us;28us;28us;28us;29us;29us;29us;30us;30us;31us;31us;32us;32us;33us;33us;33us;34us;34us;34us;34us;35us;35us;35us;35us;36us;36us;36us;37us;37us;38us;39us;39us;39us;39us;39us;39us;39us;39us;40us;40us;40us;40us;41us;41us;41us;41us;42us;42us;43us;44us;44us;45us;45us;45us;46us;46us;47us;47us;48us;49us;49us;50us;50us;50us;50us;51us;51us;52us;52us;52us;52us;52us;53us;53us;53us;53us;53us;54us;54us;55us;55us;55us;55us;55us;55us;55us;55us;55us;56us;56us;56us;56us;57us;57us;58us;58us;58us;58us;58us;58us;58us;59us;59us;59us;60us;61us;61us;62us;62us;63us;63us;63us;63us;64us;64us;65us;65us;65us;66us;66us;66us;66us;67us;67us;67us;67us;67us;68us;69us;69us;70us;70us;70us;70us;71us;71us;71us;71us;72us;72us;72us;73us;73us;73us;73us;74us;74us;75us;75us;75us;76us;76us;76us;77us;78us;78us;78us;79us;79us;80us;81us;81us;81us;81us;82us;82us;82us;82us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;84us;84us;84us;84us;85us;85us;85us;85us;86us;86us;86us;87us;87us;87us;87us;87us;88us;88us;89us;89us;89us;90us;90us;90us;91us;91us;92us;92us;92us;93us;93us;94us;94us;95us;95us;96us;96us;97us;97us;97us;98us;98us;99us;99us;99us;99us;100us;100us;100us;101us;101us;101us;101us;101us;102us;102us;102us;102us;103us;103us;104us;104us;104us;105us;105us;105us;106us;106us;107us;107us;107us;107us;108us;108us;109us;109us;110us;110us;111us;112us;112us;112us;113us;114us;114us;115us;115us;116us;116us;117us;117us;118us;118us;118us;118us;118us;118us;118us;118us;118us;118us;118us;119us;119us;120us;120us;120us;121us;122us;122us;123us;123us;123us;123us;123us;123us;123us;123us;123us;124us;124us;124us;125us;125us;125us;126us;126us;126us;126us;127us;127us;128us;128us;128us;128us;129us;129us;130us;130us;131us;132us;132us;132us;132us;133us;134us;134us;135us;135us;135us;136us;136us;137us;137us;138us;139us;140us;140us;141us;141us;141us;141us;142us;142us;143us;144us;144us;144us;145us;145us;146us;146us;147us;147us;147us;147us;147us;148us;148us;149us;150us;150us;151us;151us;152us;152us;152us;153us;153us;153us;154us;155us;155us;156us;157us;157us;158us;158us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;160us;160us;160us;160us;161us;161us;162us;162us;163us;163us;164us;165us;165us;165us;165us;165us;166us;166us;167us;167us;168us;168us;168us;168us;168us;169us;169us;169us;169us;169us;169us;170us;170us;170us;170us;170us;170us;171us;171us;172us;172us;172us;173us;173us;173us;174us;174us;174us;174us;174us;174us;174us;174us;174us;175us;175us;176us;176us;176us;176us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;178us;178us;179us;179us;179us;179us;179us;179us;179us;179us;179us;180us;180us;180us;180us;180us;180us;181us;181us;182us;182us;183us;183us;183us;184us;184us;184us;185us;185us;185us;185us;186us;186us;186us;187us;187us;187us;188us;188us;188us;189us;190us;190us;190us;190us;190us;190us;191us;191us;192us;192us;192us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;194us;194us;194us;194us;194us;194us;195us;195us;196us;196us;196us;196us;197us;197us;197us;197us;198us;199us;199us;199us;199us;199us;199us;200us;200us;201us;202us;203us;203us;203us;203us;204us;204us;204us;204us;204us;205us;205us;205us;205us;205us;205us;205us;205us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;207us;207us;208us;208us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;211us;211us;211us;211us;211us;211us;211us;211us;211us;211us;211us;212us;212us;212us;212us;213us;213us;213us;213us;214us;214us;214us;214us;215us;215us;215us;215us;215us;215us;215us;215us;215us;215us;216us;216us;216us;217us;217us;218us;218us;219us;219us;219us;219us;219us;220us;220us;220us;221us;221us;222us;222us;223us;224us;225us;225us;225us;226us;227us;227us;228us;229us;229us;230us;230us;231us;231us;232us;232us;232us;233us;233us;234us;234us;234us;234us;234us;234us;234us;234us;234us;235us;235us;236us;236us;236us;236us;237us;237us;238us;238us;239us;239us;239us;239us;239us;240us;240us;240us;241us;241us;241us;242us;242us;243us;243us;243us;244us;245us;245us;245us;246us;247us;247us;248us;248us;248us;248us;248us;249us;249us;249us;249us;249us;249us;249us;249us;250us;250us;251us;251us;252us;252us;253us;253us;253us;254us;254us;254us;255us;255us;255us;255us;256us;256us;256us;256us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;258us;258us;258us;258us;259us;259us;259us;259us;260us;261us;261us;261us;261us;261us;261us;261us;261us;262us;262us;262us;262us;262us;262us;262us;263us;263us;264us;264us;265us;265us;266us;266us;266us;266us;266us;266us;266us;266us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;268us;269us;269us;269us;270us;270us;271us;271us;272us;272us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;274us;274us;275us;275us;275us;275us;275us;275us;275us;276us;276us;276us;277us;277us;278us;279us;279us;280us;280us;280us;281us;281us;281us;282us;282us;283us;283us;283us;283us;284us;284us;285us;286us;286us;286us;286us;287us;287us;287us;287us;287us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;289us;290us;290us;291us;291us;292us;292us;292us;292us;293us;294us;294us;295us;295us;295us;296us;296us;297us;297us;298us;298us;298us;298us;299us;299us;299us;300us;300us;300us;300us;301us;301us;302us;302us;303us;303us;304us;304us;305us;305us;306us;306us;307us;307us;308us;308us;309us;309us;310us;310us;311us;311us;312us;312us;313us;313us;314us;314us;315us;316us;317us;317us;318us;318us;318us;319us;319us;319us;320us;320us;320us;321us;321us;322us;322us;322us;323us;323us;323us;324us;324us;324us;325us;326us;326us;326us;327us;327us;327us;328us;328us;328us;328us;328us;329us;329us;329us;329us;329us;329us;|]
-let _fsyacc_immediateActions = [|65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;16389us;16390us;16391us;16392us;16393us;16394us;65535us;16395us;65535us;16396us;65535us;16397us;65535us;16398us;65535us;16399us;65535us;16400us;65535us;16402us;65535us;65535us;65535us;16404us;65535us;16406us;16407us;16408us;65535us;65535us;65535us;16411us;16412us;16413us;65535us;16414us;65535us;16415us;65535us;16416us;65535us;65535us;65535us;65535us;65535us;16418us;16419us;65535us;65535us;65535us;16421us;65535us;16423us;65535us;16424us;65535us;65535us;16426us;65535us;65535us;65535us;16427us;16428us;16429us;65535us;65535us;65535us;16430us;16431us;65535us;16432us;16433us;65535us;65535us;65535us;65535us;16436us;65535us;65535us;16437us;16439us;16440us;65535us;65535us;65535us;65535us;16441us;16442us;16443us;65535us;65535us;16444us;16445us;16446us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16447us;65535us;65535us;65535us;65535us;65535us;16450us;65535us;65535us;16451us;65535us;65535us;65535us;16452us;65535us;65535us;16453us;65535us;65535us;16454us;65535us;65535us;16456us;16457us;65535us;65535us;65535us;65535us;65535us;65535us;16458us;65535us;16459us;16460us;16461us;65535us;65535us;16462us;16463us;65535us;65535us;16464us;16465us;65535us;16466us;65535us;65535us;16467us;16468us;65535us;65535us;16469us;16470us;65535us;65535us;16471us;16472us;16473us;16474us;65535us;65535us;16476us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16477us;65535us;65535us;65535us;65535us;16480us;65535us;16481us;65535us;65535us;16482us;65535us;16483us;65535us;65535us;16484us;65535us;16486us;65535us;65535us;16487us;16488us;65535us;65535us;16490us;16491us;65535us;65535us;16492us;16493us;16494us;65535us;16495us;65535us;65535us;16496us;65535us;16498us;65535us;16499us;65535us;16500us;65535us;16502us;65535us;16503us;65535us;65535us;16505us;65535us;65535us;65535us;16506us;16507us;65535us;65535us;65535us;16508us;16509us;65535us;16510us;16511us;16512us;65535us;65535us;65535us;65535us;16514us;16517us;16518us;65535us;16519us;65535us;16520us;65535us;65535us;65535us;65535us;65535us;16523us;16524us;16525us;65535us;65535us;16526us;65535us;16527us;65535us;16528us;65535us;65535us;16529us;16530us;65535us;65535us;16531us;16532us;65535us;16533us;16534us;65535us;65535us;16536us;65535us;65535us;16538us;65535us;16539us;65535us;65535us;65535us;16541us;16542us;65535us;16543us;16544us;16545us;16546us;65535us;65535us;65535us;16548us;16549us;16550us;65535us;65535us;16551us;16552us;65535us;16555us;65535us;65535us;65535us;65535us;16556us;65535us;65535us;16557us;16558us;16559us;16560us;65535us;16561us;65535us;65535us;16562us;65535us;65535us;65535us;16563us;65535us;65535us;65535us;65535us;16564us;65535us;16565us;65535us;16566us;65535us;16567us;65535us;16568us;65535us;16569us;16571us;16572us;16573us;65535us;65535us;16574us;65535us;65535us;16575us;65535us;16578us;65535us;65535us;65535us;65535us;65535us;65535us;16579us;16580us;65535us;65535us;65535us;65535us;65535us;65535us;16581us;16582us;16583us;65535us;16584us;16585us;16586us;65535us;65535us;16587us;16588us;65535us;65535us;16589us;16590us;65535us;16591us;65535us;65535us;16592us;16593us;65535us;65535us;16594us;16595us;16596us;16597us;65535us;16598us;65535us;65535us;16600us;65535us;16601us;65535us;65535us;16602us;16603us;65535us;65535us;16605us;65535us;65535us;65535us;65535us;65535us;16606us;65535us;65535us;65535us;65535us;16607us;16608us;16609us;16610us;65535us;16612us;65535us;16614us;65535us;65535us;65535us;65535us;16615us;16616us;65535us;65535us;16617us;16618us;65535us;65535us;16619us;16620us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16621us;16622us;65535us;16623us;65535us;16624us;65535us;16625us;65535us;65535us;65535us;65535us;65535us;16626us;16627us;16628us;65535us;16629us;65535us;16630us;65535us;65535us;65535us;65535us;65535us;16631us;16632us;16633us;16634us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16635us;16636us;16637us;16638us;65535us;16640us;16641us;65535us;65535us;16642us;65535us;65535us;16643us;16644us;65535us;65535us;65535us;16645us;16646us;16648us;16649us;16650us;16651us;65535us;65535us;16652us;65535us;65535us;16655us;65535us;65535us;16657us;65535us;65535us;16658us;16659us;16660us;65535us;16662us;16663us;16664us;65535us;16666us;16667us;65535us;65535us;16668us;16669us;16670us;65535us;65535us;16671us;65535us;65535us;65535us;65535us;16673us;65535us;16674us;16675us;65535us;65535us;16676us;65535us;16677us;16678us;16679us;65535us;65535us;65535us;65535us;65535us;16680us;16681us;16682us;16683us;65535us;65535us;65535us;65535us;16684us;65535us;65535us;16685us;16686us;65535us;16687us;16688us;65535us;16689us;16690us;65535us;65535us;16691us;16692us;65535us;16693us;16694us;16695us;16696us;16697us;16698us;65535us;65535us;65535us;65535us;16701us;16702us;16703us;65535us;65535us;16704us;65535us;65535us;65535us;65535us;16705us;16706us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16709us;16710us;65535us;65535us;65535us;65535us;16713us;16714us;65535us;65535us;65535us;65535us;65535us;16718us;16719us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16722us;65535us;65535us;65535us;65535us;16724us;65535us;16725us;16726us;65535us;65535us;16727us;65535us;65535us;65535us;65535us;65535us;65535us;16728us;65535us;16729us;16730us;65535us;65535us;65535us;65535us;65535us;16735us;65535us;65535us;16736us;65535us;16738us;65535us;65535us;16739us;65535us;65535us;65535us;16742us;65535us;16743us;16744us;65535us;16745us;16746us;16747us;65535us;16748us;65535us;65535us;16750us;65535us;65535us;16751us;65535us;65535us;16752us;65535us;16753us;65535us;65535us;65535us;16755us;65535us;16756us;16757us;65535us;16758us;65535us;65535us;16760us;65535us;65535us;65535us;65535us;16764us;16765us;16766us;16767us;65535us;65535us;16768us;16769us;65535us;16770us;65535us;65535us;65535us;65535us;16771us;16772us;16773us;16774us;65535us;16775us;65535us;65535us;65535us;65535us;16776us;16777us;65535us;65535us;16779us;16780us;65535us;65535us;65535us;65535us;16783us;16784us;65535us;16785us;65535us;65535us;65535us;16786us;65535us;65535us;16787us;16788us;16789us;16790us;16791us;16792us;16793us;16794us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16795us;65535us;65535us;65535us;16799us;65535us;16800us;65535us;65535us;16802us;65535us;65535us;65535us;65535us;16804us;16805us;16806us;65535us;65535us;16807us;65535us;65535us;16810us;65535us;65535us;16811us;65535us;16813us;16814us;65535us;65535us;65535us;65535us;65535us;16815us;16816us;16817us;65535us;65535us;16818us;16819us;16820us;65535us;65535us;16822us;65535us;65535us;65535us;16824us;65535us;16825us;16826us;65535us;65535us;16827us;16828us;16829us;16830us;16831us;16832us;16833us;16834us;16835us;16836us;16837us;16838us;16839us;16840us;16841us;16842us;16843us;16844us;16845us;16846us;65535us;65535us;16847us;65535us;65535us;65535us;16848us;16851us;65535us;65535us;16852us;16853us;65535us;16854us;65535us;65535us;16856us;65535us;16858us;65535us;16859us;65535us;65535us;65535us;16860us;16861us;65535us;65535us;16864us;16865us;65535us;65535us;16867us;16868us;16869us;65535us;16870us;16871us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16872us;65535us;65535us;65535us;65535us;16877us;65535us;65535us;16880us;16881us;65535us;16883us;65535us;65535us;65535us;16886us;65535us;16887us;65535us;16888us;65535us;65535us;65535us;65535us;16890us;16891us;65535us;65535us;16893us;65535us;16894us;65535us;16895us;16896us;65535us;16897us;65535us;16898us;65535us;16899us;16900us;65535us;65535us;16901us;16902us;65535us;16903us;65535us;16904us;65535us;16905us;16907us;65535us;65535us;16908us;65535us;16909us;65535us;65535us;16910us;65535us;65535us;16911us;65535us;65535us;16913us;16914us;16915us;16916us;16917us;16918us;65535us;65535us;16919us;16920us;65535us;65535us;16922us;65535us;65535us;65535us;16923us;16924us;65535us;16925us;16926us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16929us;65535us;65535us;65535us;65535us;16933us;16934us;65535us;65535us;16937us;65535us;65535us;16940us;16941us;65535us;16943us;65535us;65535us;65535us;16946us;65535us;16947us;65535us;65535us;16949us;16950us;16952us;65535us;16953us;65535us;65535us;16954us;16955us;16956us;16957us;65535us;65535us;16958us;16959us;65535us;65535us;16961us;16963us;65535us;65535us;65535us;16964us;16965us;65535us;16967us;65535us;65535us;16968us;65535us;16971us;65535us;65535us;65535us;16972us;65535us;16974us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16975us;65535us;65535us;65535us;65535us;16976us;65535us;65535us;65535us;65535us;65535us;16977us;65535us;65535us;16979us;16980us;65535us;16981us;16982us;65535us;16983us;16984us;16985us;16986us;16987us;65535us;65535us;16988us;16989us;65535us;65535us;16990us;16991us;65535us;65535us;16992us;16993us;65535us;16995us;65535us;16996us;65535us;65535us;16997us;16998us;16999us;65535us;65535us;65535us;65535us;65535us;17003us;65535us;17004us;65535us;17006us;65535us;17007us;65535us;65535us;65535us;65535us;17008us;17009us;17010us;17011us;17012us;65535us;17013us;65535us;65535us;65535us;17014us;17015us;17016us;17017us;17018us;65535us;65535us;17019us;17020us;17021us;65535us;65535us;65535us;65535us;65535us;17025us;17026us;65535us;65535us;65535us;65535us;65535us;65535us;17027us;65535us;65535us;65535us;65535us;65535us;65535us;17028us;17029us;65535us;65535us;65535us;65535us;17030us;65535us;65535us;17031us;65535us;65535us;65535us;17033us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17034us;17035us;65535us;17036us;17037us;65535us;17038us;17039us;65535us;65535us;65535us;17041us;65535us;65535us;65535us;17044us;65535us;17046us;65535us;17048us;65535us;17050us;65535us;17052us;65535us;17054us;65535us;17056us;65535us;17058us;65535us;17060us;65535us;17062us;65535us;17064us;65535us;17066us;65535us;17068us;65535us;17070us;65535us;17072us;65535us;17074us;65535us;17076us;65535us;17078us;65535us;17080us;65535us;17082us;65535us;65535us;65535us;65535us;17086us;65535us;65535us;65535us;17088us;17089us;65535us;17090us;17091us;17092us;17093us;17094us;65535us;65535us;17095us;65535us;17096us;65535us;65535us;17097us;17098us;17099us;17100us;65535us;17101us;17102us;17103us;17104us;65535us;65535us;65535us;17106us;65535us;17107us;17108us;17109us;17110us;65535us;65535us;17113us;65535us;17114us;65535us;17116us;65535us;17117us;17118us;65535us;65535us;17121us;65535us;17122us;17123us;65535us;17125us;65535us;17127us;65535us;17128us;65535us;17130us;65535us;65535us;65535us;65535us;17132us;65535us;65535us;17133us;65535us;65535us;17134us;65535us;65535us;17135us;65535us;65535us;17136us;65535us;65535us;17137us;65535us;65535us;17138us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17139us;17141us;17142us;65535us;17143us;65535us;17144us;65535us;65535us;65535us;17146us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17151us;17152us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17155us;65535us;65535us;65535us;65535us;17157us;65535us;17158us;65535us;17159us;65535us;65535us;17160us;65535us;65535us;17161us;65535us;17162us;17163us;17164us;65535us;65535us;17165us;17166us;17167us;17168us;65535us;65535us;17169us;17170us;17171us;17172us;17173us;17175us;65535us;65535us;65535us;65535us;17176us;65535us;17177us;65535us;65535us;17178us;17179us;17180us;17181us;17182us;17183us;17184us;17185us;17186us;17187us;17188us;17189us;17190us;17191us;17192us;65535us;65535us;17193us;17194us;65535us;17195us;17196us;65535us;65535us;65535us;17197us;17198us;17199us;17200us;65535us;65535us;17201us;17202us;17203us;17204us;65535us;65535us;65535us;17205us;65535us;17206us;17207us;17208us;65535us;17209us;17210us;17211us;17212us;17213us;65535us;17214us;65535us;65535us;65535us;65535us;65535us;17215us;17216us;17217us;17218us;65535us;65535us;17219us;65535us;65535us;65535us;65535us;17222us;17223us;17224us;17225us;17226us;17227us;17228us;17229us;17230us;17232us;17234us;65535us;17235us;65535us;17237us;17238us;65535us;65535us;17240us;17241us;65535us;65535us;65535us;65535us;65535us;17242us;17243us;17246us;65535us;65535us;65535us;17248us;65535us;17250us;65535us;17251us;65535us;65535us;65535us;65535us;65535us;17252us;17253us;65535us;65535us;65535us;17254us;17255us;65535us;65535us;65535us;17259us;65535us;65535us;65535us;17260us;65535us;65535us;17261us;65535us;65535us;65535us;17262us;17263us;65535us;65535us;65535us;17267us;17268us;65535us;17270us;17271us;65535us;65535us;17273us;17275us;17277us;65535us;65535us;65535us;17278us;65535us;17279us;17281us;17284us;65535us;17286us;65535us;65535us;17287us;65535us;17288us;65535us;17289us;65535us;17291us;65535us;17292us;65535us;65535us;65535us;65535us;17293us;65535us;17294us;17295us;65535us;65535us;17296us;17297us;17298us;17299us;17300us;65535us;65535us;65535us;17301us;17302us;65535us;65535us;65535us;65535us;17303us;17304us;65535us;17305us;65535us;17307us;65535us;17308us;65535us;17309us;65535us;65535us;17310us;65535us;65535us;65535us;65535us;65535us;17316us;17317us;65535us;65535us;17318us;17319us;65535us;65535us;17321us;17322us;65535us;17323us;65535us;65535us;17325us;17326us;65535us;17327us;65535us;65535us;65535us;65535us;17330us;65535us;65535us;65535us;65535us;17332us;65535us;65535us;65535us;17335us;65535us;65535us;65535us;65535us;17337us;65535us;65535us;65535us;17339us;17340us;65535us;17341us;65535us;65535us;17343us;17344us;65535us;17345us;65535us;17347us;65535us;65535us;17348us;17349us;65535us;17350us;65535us;17351us;17352us;65535us;17353us;17354us;65535us;65535us;17356us;17357us;65535us;17358us;65535us;17359us;17360us;65535us;17361us;65535us;65535us;65535us;65535us;65535us;17366us;65535us;65535us;65535us;17367us;65535us;17369us;65535us;17370us;17371us;65535us;65535us;65535us;17372us;17373us;17374us;65535us;17375us;65535us;65535us;17376us;65535us;17377us;65535us;17378us;65535us;17379us;65535us;17380us;65535us;17381us;65535us;17382us;65535us;17383us;65535us;17384us;65535us;17385us;65535us;17386us;65535us;17387us;65535us;17388us;65535us;17389us;65535us;17390us;65535us;17391us;65535us;17392us;65535us;17393us;65535us;17394us;65535us;17395us;65535us;17396us;65535us;17397us;65535us;17398us;65535us;17399us;65535us;17400us;65535us;17401us;65535us;17402us;65535us;17403us;65535us;17404us;65535us;17405us;65535us;17406us;65535us;17407us;65535us;17408us;65535us;65535us;65535us;65535us;65535us;65535us;17410us;17411us;65535us;65535us;17414us;65535us;65535us;65535us;17415us;65535us;65535us;17418us;65535us;65535us;17420us;17421us;65535us;65535us;65535us;17422us;17423us;65535us;65535us;65535us;65535us;17424us;17425us;17426us;17427us;17428us;17429us;17430us;65535us;17432us;17433us;65535us;17434us;17435us;65535us;65535us;17437us;65535us;17438us;17439us;65535us;17440us;65535us;65535us;65535us;65535us;17441us;17442us;17443us;65535us;17444us;17445us;17446us;17447us;65535us;65535us;17449us;17451us;17452us;65535us;65535us;17454us;65535us;17455us;65535us;17457us;65535us;65535us;17458us;65535us;65535us;17460us;17461us;65535us;17463us;17464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17468us;65535us;17469us;65535us;17470us;17471us;17472us;65535us;17473us;17474us;65535us;65535us;17475us;65535us;17476us;17477us;65535us;65535us;17478us;65535us;65535us;17479us;17480us;17481us;17482us;17483us;17484us;17485us;17486us;17487us;17488us;17489us;17490us;17491us;17492us;17493us;17494us;17495us;17496us;17497us;17498us;17499us;17500us;17501us;17502us;65535us;17504us;65535us;17505us;17506us;65535us;17507us;17508us;17509us;17510us;65535us;17512us;65535us;17513us;17514us;17515us;17516us;17517us;17518us;17519us;17520us;65535us;17522us;65535us;17523us;65535us;65535us;17527us;17528us;17529us;17530us;17531us;17532us;17533us;17534us;17536us;17538us;17542us;17544us;17546us;17550us;17552us;17554us;17555us;17556us;17557us;17558us;17559us;17560us;17561us;17562us;17563us;17564us;17565us;65535us;17567us;17568us;65535us;65535us;17569us;17570us;65535us;65535us;17571us;17572us;17573us;17574us;17575us;17577us;65535us;65535us;17579us;17580us;17581us;65535us;65535us;17582us;17583us;17584us;65535us;17585us;17586us;17587us;17588us;65535us;17589us;17590us;17591us;65535us;17592us;17593us;17594us;17595us;17596us;17597us;17598us;17599us;17600us;17601us;17602us;17603us;17604us;17605us;|]
+let _fsyacc_gotos = [| 0us;65535us;0us;65535us;0us;65535us;0us;65535us;0us;65535us;1us;65535us;4us;5us;7us;65535us;4us;15us;16us;17us;18us;19us;20us;21us;22us;15us;24us;15us;26us;15us;4us;65535us;4us;10us;22us;23us;24us;25us;26us;27us;5us;65535us;4us;16us;22us;16us;24us;16us;26us;16us;28us;29us;4us;65535us;4us;18us;22us;18us;24us;18us;26us;18us;4us;65535us;4us;20us;22us;20us;24us;20us;26us;20us;4us;65535us;16us;22us;18us;24us;20us;26us;34us;35us;4us;65535us;16us;34us;18us;34us;20us;34us;34us;34us;23us;65535us;0us;93us;2us;273us;4us;33us;22us;33us;24us;33us;26us;33us;69us;93us;73us;93us;77us;93us;88us;93us;91us;93us;123us;93us;126us;93us;130us;93us;239us;273us;243us;273us;246us;273us;258us;273us;262us;273us;264us;273us;270us;273us;301us;273us;311us;273us;1us;65535us;39us;40us;1us;65535us;40us;41us;1us;65535us;0us;1us;6us;65535us;31us;285us;72us;73us;96us;97us;242us;243us;256us;285us;275us;285us;4us;65535us;64us;68us;66us;68us;234us;238us;236us;238us;1us;65535us;0us;47us;2us;65535us;64us;65us;66us;67us;2us;65535us;64us;66us;66us;66us;2us;65535us;0us;64us;69us;70us;3us;65535us;0us;75us;69us;75us;73us;74us;6us;65535us;0us;76us;69us;76us;73us;76us;77us;78us;126us;127us;130us;131us;9us;65535us;0us;84us;69us;84us;73us;84us;77us;84us;88us;89us;91us;92us;123us;124us;126us;84us;130us;84us;9us;65535us;0us;87us;69us;87us;73us;87us;77us;87us;88us;87us;91us;87us;123us;87us;126us;87us;130us;87us;9us;65535us;0us;94us;69us;94us;73us;94us;77us;94us;88us;94us;91us;94us;123us;94us;126us;94us;130us;94us;2us;65535us;115us;116us;189us;190us;1us;65535us;98us;100us;2us;65535us;103us;104us;134us;135us;3us;65535us;102us;103us;133us;134us;201us;202us;1us;65535us;137us;138us;2us;65535us;137us;147us;140us;141us;2us;65535us;137us;150us;140us;150us;2us;65535us;137us;154us;140us;154us;3us;65535us;155us;156us;165us;166us;225us;226us;8us;65535us;140us;162us;142us;143us;155us;173us;161us;162us;165us;173us;169us;170us;176us;177us;225us;173us;8us;65535us;140us;174us;142us;174us;155us;174us;161us;174us;165us;174us;169us;174us;176us;174us;225us;174us;11us;65535us;140us;175us;142us;175us;155us;175us;161us;175us;165us;175us;169us;175us;176us;175us;225us;175us;661us;662us;668us;669us;1528us;1529us;3us;65535us;188us;189us;461us;462us;498us;499us;2us;65535us;206us;207us;208us;209us;2us;65535us;180us;182us;181us;182us;2us;65535us;72us;105us;96us;105us;5us;65535us;136us;139us;143us;144us;145us;146us;147us;148us;223us;224us;1us;65535us;2us;3us;1us;65535us;2us;228us;2us;65535us;234us;235us;236us;237us;2us;65535us;234us;236us;236us;236us;2us;65535us;2us;234us;239us;240us;3us;65535us;2us;245us;239us;245us;243us;244us;5us;65535us;2us;253us;239us;253us;243us;253us;246us;247us;311us;312us;9us;65535us;2us;254us;239us;254us;243us;254us;246us;254us;258us;259us;264us;265us;270us;271us;301us;305us;311us;254us;10us;65535us;2us;260us;239us;260us;243us;260us;246us;260us;258us;260us;262us;263us;264us;260us;270us;260us;301us;260us;311us;260us;10us;65535us;2us;262us;239us;262us;243us;262us;246us;262us;258us;262us;262us;262us;264us;262us;270us;262us;301us;262us;311us;262us;15us;65535us;2us;272us;4us;28us;22us;28us;24us;28us;26us;28us;28us;28us;239us;272us;243us;272us;246us;272us;258us;272us;262us;272us;264us;272us;270us;272us;301us;272us;311us;272us;24us;65535us;0us;106us;2us;291us;4us;291us;22us;291us;24us;291us;26us;291us;28us;291us;69us;106us;73us;106us;77us;106us;88us;106us;91us;106us;123us;106us;126us;106us;130us;106us;239us;291us;243us;291us;246us;291us;258us;291us;262us;291us;264us;291us;270us;291us;301us;291us;311us;291us;1us;65535us;98us;99us;1us;65535us;286us;287us;2us;65535us;286us;309us;301us;302us;1us;65535us;366us;367us;81us;65535us;0us;71us;2us;241us;4us;30us;22us;30us;24us;30us;26us;30us;28us;274us;53us;54us;69us;71us;73us;95us;77us;95us;88us;95us;91us;95us;102us;360us;107us;108us;123us;95us;126us;95us;130us;95us;133us;360us;137us;566us;140us;179us;142us;178us;155us;178us;161us;178us;165us;178us;169us;178us;176us;178us;201us;360us;225us;178us;239us;241us;243us;255us;246us;255us;258us;255us;262us;274us;264us;255us;270us;255us;281us;360us;301us;255us;311us;255us;316us;441us;363us;360us;366us;368us;373us;566us;376us;442us;378us;441us;393us;441us;397us;441us;399us;441us;403us;441us;409us;441us;412us;441us;423us;424us;481us;360us;522us;551us;525us;441us;543us;551us;549us;551us;580us;746us;590us;746us;608us;617us;613us;617us;614us;617us;622us;617us;627us;617us;661us;178us;668us;178us;678us;688us;681us;688us;686us;688us;743us;746us;758us;759us;771us;825us;777us;825us;790us;819us;795us;804us;800us;804us;802us;804us;822us;825us;1528us;178us;1627us;552us;1629us;825us;123us;65535us;0us;319us;2us;289us;4us;289us;22us;289us;24us;289us;26us;289us;28us;289us;53us;319us;69us;319us;73us;319us;77us;319us;88us;319us;91us;319us;102us;319us;107us;319us;114us;1700us;123us;319us;126us;319us;130us;319us;133us;319us;137us;319us;140us;319us;142us;319us;152us;1700us;155us;319us;161us;319us;165us;319us;169us;319us;176us;319us;187us;1700us;201us;319us;204us;1700us;225us;319us;239us;289us;243us;289us;246us;289us;258us;289us;262us;289us;264us;289us;270us;289us;281us;319us;301us;289us;311us;289us;316us;319us;320us;321us;363us;319us;366us;319us;373us;319us;376us;319us;378us;319us;390us;1700us;393us;319us;397us;319us;399us;319us;403us;319us;409us;319us;412us;319us;423us;319us;460us;1700us;481us;319us;522us;319us;525us;319us;543us;319us;549us;319us;580us;319us;590us;319us;608us;319us;613us;319us;614us;319us;622us;319us;627us;319us;661us;319us;668us;319us;678us;319us;681us;319us;686us;319us;699us;1700us;722us;1700us;743us;319us;758us;319us;771us;319us;777us;319us;790us;319us;795us;319us;800us;319us;802us;319us;822us;319us;892us;1024us;936us;1024us;956us;1024us;972us;1024us;975us;1024us;986us;1024us;994us;1024us;1018us;1024us;1024us;1024us;1025us;1024us;1028us;1024us;1029us;1024us;1032us;1024us;1034us;1024us;1035us;1024us;1041us;1024us;1045us;1024us;1152us;1024us;1322us;1024us;1324us;1024us;1330us;1024us;1332us;1024us;1339us;1024us;1341us;1024us;1343us;1024us;1528us;319us;1627us;319us;1629us;319us;1672us;1024us;1674us;1024us;1681us;1700us;1685us;1700us;1689us;1700us;1692us;1700us;1695us;1700us;1698us;1700us;123us;65535us;0us;320us;2us;320us;4us;320us;22us;320us;24us;320us;26us;320us;28us;320us;53us;320us;69us;320us;73us;320us;77us;320us;88us;320us;91us;320us;102us;320us;107us;320us;114us;320us;123us;320us;126us;320us;130us;320us;133us;320us;137us;320us;140us;320us;142us;320us;152us;320us;155us;320us;161us;320us;165us;320us;169us;320us;176us;320us;187us;320us;201us;320us;204us;320us;225us;320us;239us;320us;243us;320us;246us;320us;258us;320us;262us;320us;264us;320us;270us;320us;281us;320us;301us;320us;311us;320us;316us;320us;320us;320us;363us;320us;366us;320us;373us;320us;376us;320us;378us;320us;390us;320us;393us;320us;397us;320us;399us;320us;403us;320us;409us;320us;412us;320us;423us;320us;460us;320us;481us;320us;522us;320us;525us;320us;543us;320us;549us;320us;580us;320us;590us;320us;608us;320us;613us;320us;614us;320us;622us;320us;627us;320us;661us;320us;668us;320us;678us;320us;681us;320us;686us;320us;699us;320us;722us;320us;743us;320us;758us;320us;771us;320us;777us;320us;790us;320us;795us;320us;800us;320us;802us;320us;822us;320us;892us;320us;936us;320us;956us;320us;972us;320us;975us;320us;986us;320us;994us;320us;1018us;320us;1024us;320us;1025us;320us;1028us;320us;1029us;320us;1032us;320us;1034us;320us;1035us;320us;1041us;320us;1045us;320us;1152us;320us;1322us;320us;1324us;320us;1330us;320us;1332us;320us;1339us;320us;1341us;320us;1343us;320us;1528us;320us;1627us;320us;1629us;320us;1672us;320us;1674us;320us;1681us;320us;1685us;320us;1689us;320us;1692us;320us;1695us;320us;1698us;320us;1us;65535us;322us;323us;2us;65535us;322us;332us;333us;334us;2us;65535us;322us;338us;333us;338us;4us;65535us;180us;221us;181us;221us;443us;447us;444us;447us;6us;65535us;102us;136us;133us;136us;201us;136us;281us;366us;363us;366us;481us;366us;2us;65535us;282us;283us;364us;365us;3us;65535us;281us;282us;363us;364us;481us;482us;1us;65535us;373us;374us;2us;65535us;373us;385us;376us;377us;2us;65535us;373us;388us;376us;388us;2us;65535us;373us;392us;376us;392us;3us;65535us;316us;317us;393us;394us;525us;526us;8us;65535us;316us;407us;378us;379us;393us;407us;397us;410us;403us;404us;409us;410us;412us;413us;525us;407us;10us;65535us;316us;408us;376us;400us;378us;408us;393us;408us;397us;408us;399us;400us;403us;408us;409us;408us;412us;408us;525us;408us;1us;65535us;431us;436us;2us;65535us;414us;415us;416us;417us;3us;65535us;414us;420us;416us;420us;421us;422us;3us;65535us;447us;448us;553us;554us;559us;560us;4us;65535us;180us;222us;181us;222us;443us;455us;444us;455us;10us;65535us;316us;411us;376us;411us;378us;411us;393us;411us;397us;411us;399us;411us;403us;411us;409us;411us;412us;411us;525us;411us;3us;65535us;355us;467us;443us;465us;444us;465us;2us;65535us;447us;469us;553us;556us;1us;65535us;495us;496us;55us;65535us;424us;940us;429us;940us;471us;981us;829us;940us;892us;940us;911us;940us;914us;940us;915us;940us;920us;940us;921us;940us;924us;940us;926us;940us;927us;940us;936us;940us;940us;981us;941us;981us;943us;981us;945us;981us;948us;981us;950us;981us;956us;940us;960us;981us;962us;981us;964us;981us;972us;940us;975us;940us;986us;940us;994us;940us;1015us;940us;1018us;940us;1024us;940us;1025us;940us;1028us;940us;1029us;940us;1032us;940us;1034us;940us;1035us;940us;1041us;940us;1045us;940us;1095us;940us;1100us;940us;1152us;940us;1183us;940us;1190us;940us;1322us;940us;1324us;940us;1330us;940us;1332us;940us;1339us;940us;1341us;940us;1343us;940us;1655us;981us;1660us;981us;1672us;940us;1674us;940us;26us;65535us;30us;31us;54us;55us;71us;72us;95us;96us;110us;111us;178us;180us;179us;181us;183us;184us;206us;212us;208us;212us;214us;215us;241us;242us;255us;256us;274us;275us;360us;601us;368us;369us;441us;443us;442us;444us;455us;456us;484us;485us;493us;494us;566us;567us;688us;689us;748us;749us;759us;760us;791us;792us;81us;65535us;30us;518us;54us;518us;71us;518us;95us;518us;110us;518us;178us;518us;179us;518us;183us;518us;206us;518us;208us;518us;214us;518us;241us;518us;255us;518us;274us;518us;360us;518us;368us;518us;424us;513us;429us;513us;441us;518us;442us;518us;455us;518us;471us;513us;484us;518us;493us;518us;566us;518us;688us;518us;748us;518us;759us;518us;791us;518us;829us;513us;892us;513us;911us;513us;914us;513us;915us;513us;920us;513us;921us;513us;924us;513us;926us;513us;927us;513us;936us;513us;940us;513us;941us;513us;943us;513us;945us;513us;948us;513us;950us;513us;956us;513us;960us;513us;962us;513us;964us;513us;972us;513us;975us;513us;986us;513us;994us;513us;1015us;513us;1018us;513us;1024us;513us;1025us;513us;1028us;513us;1029us;513us;1032us;513us;1034us;513us;1035us;513us;1041us;513us;1045us;513us;1095us;513us;1100us;513us;1152us;513us;1183us;513us;1190us;513us;1322us;513us;1324us;513us;1330us;513us;1332us;513us;1339us;513us;1341us;513us;1343us;513us;1655us;513us;1660us;513us;1672us;513us;1674us;513us;1us;65535us;452us;453us;4us;65535us;379us;380us;381us;382us;385us;386us;756us;757us;2us;65535us;443us;464us;444us;464us;2us;65535us;371us;372us;472us;473us;2us;65535us;371us;535us;472us;535us;2us;65535us;529us;530us;532us;533us;3us;65535us;529us;539us;532us;539us;1402us;1625us;2us;65535us;522us;523us;1627us;1632us;4us;65535us;522us;547us;543us;544us;549us;550us;1627us;547us;4us;65535us;522us;548us;543us;548us;549us;548us;1627us;548us;2us;65535us;551us;553us;552us;553us;4us;65535us;137us;149us;140us;149us;373us;387us;376us;387us;9us;65535us;181us;574us;444us;574us;567us;574us;690us;740us;692us;740us;695us;740us;719us;740us;725us;740us;765us;740us;87us;65535us;8us;1872us;114us;1872us;152us;1872us;181us;1872us;187us;1872us;191us;1872us;193us;1872us;204us;1872us;295us;1872us;390us;1872us;444us;1872us;451us;1872us;460us;1872us;487us;1872us;503us;1872us;567us;1872us;575us;1872us;634us;1872us;638us;1872us;650us;1872us;653us;1872us;664us;1872us;675us;1872us;690us;1872us;692us;1872us;695us;1872us;699us;1872us;719us;1872us;722us;1872us;725us;1872us;728us;1872us;731us;1872us;734us;1872us;751us;1872us;765us;1872us;852us;1872us;952us;1872us;1021us;1872us;1063us;1872us;1248us;1872us;1251us;1872us;1254us;1872us;1538us;1872us;1571us;1872us;1574us;1872us;1576us;1872us;1640us;1872us;1678us;1872us;1680us;1872us;1681us;1872us;1685us;1872us;1689us;1872us;1692us;1872us;1695us;1872us;1698us;1872us;1700us;1872us;1702us;1872us;1707us;1872us;1711us;1872us;1716us;1872us;1722us;1872us;1725us;1872us;1728us;1872us;1731us;1872us;1737us;1872us;1740us;1872us;1741us;1872us;1743us;1872us;1744us;1872us;1747us;1872us;1751us;1872us;1754us;1872us;1756us;1872us;1759us;1872us;1774us;1872us;1780us;1872us;1786us;1872us;1789us;1872us;1856us;1872us;1860us;1872us;1866us;1872us;1876us;1872us;1882us;1872us;1884us;1872us;1909us;1872us;1911us;1872us;1922us;1872us;88us;65535us;8us;589us;114us;589us;152us;589us;181us;589us;187us;589us;191us;589us;193us;589us;204us;589us;295us;589us;390us;589us;444us;589us;451us;589us;460us;589us;487us;589us;503us;589us;567us;589us;575us;589us;587us;588us;634us;589us;638us;589us;650us;589us;653us;589us;664us;589us;675us;589us;690us;589us;692us;589us;695us;589us;699us;589us;719us;589us;722us;589us;725us;589us;728us;589us;731us;589us;734us;589us;751us;589us;765us;589us;852us;589us;952us;589us;1021us;589us;1063us;589us;1248us;589us;1251us;589us;1254us;589us;1538us;589us;1571us;589us;1574us;589us;1576us;589us;1640us;589us;1678us;589us;1680us;589us;1681us;589us;1685us;589us;1689us;589us;1692us;589us;1695us;589us;1698us;589us;1700us;589us;1702us;589us;1707us;589us;1711us;589us;1716us;589us;1722us;589us;1725us;589us;1728us;589us;1731us;589us;1737us;589us;1740us;589us;1741us;589us;1743us;589us;1744us;589us;1747us;589us;1751us;589us;1754us;589us;1756us;589us;1759us;589us;1774us;589us;1780us;589us;1786us;589us;1789us;589us;1856us;589us;1860us;589us;1866us;589us;1876us;589us;1882us;589us;1884us;589us;1909us;589us;1911us;589us;1922us;589us;4us;65535us;137us;155us;140us;155us;373us;393us;376us;393us;9us;65535us;180us;191us;181us;191us;443us;451us;444us;451us;1621us;1640us;1623us;1640us;1634us;1640us;1636us;1640us;1638us;1640us;1us;65535us;360us;361us;1us;65535us;601us;603us;3us;65535us;608us;609us;622us;611us;627us;612us;5us;65535us;608us;616us;613us;615us;614us;615us;622us;616us;627us;616us;1us;65535us;602us;605us;1us;65535us;627us;628us;4us;65535us;112us;631us;185us;631us;458us;631us;940us;941us;3us;65535us;112us;113us;185us;186us;458us;459us;97us;65535us;8us;1763us;114us;1763us;152us;1763us;181us;1763us;187us;1763us;191us;1763us;193us;1763us;204us;1763us;295us;1763us;390us;1763us;444us;1763us;451us;1763us;460us;1763us;487us;1763us;503us;1763us;528us;1873us;567us;1763us;575us;1763us;576us;1873us;619us;646us;632us;1873us;634us;1763us;638us;1763us;643us;644us;650us;1763us;653us;1763us;664us;1763us;675us;1763us;690us;1763us;692us;1763us;695us;1763us;699us;1763us;719us;1763us;722us;1763us;725us;1763us;728us;1763us;731us;1763us;734us;1763us;751us;1763us;765us;1763us;852us;1763us;952us;1873us;1021us;1763us;1063us;1763us;1248us;1763us;1251us;1763us;1254us;1763us;1395us;1873us;1396us;1873us;1538us;1763us;1571us;1763us;1574us;1763us;1576us;1763us;1578us;1873us;1640us;1763us;1678us;1763us;1680us;1763us;1681us;1763us;1685us;1763us;1689us;1763us;1692us;1763us;1695us;1763us;1698us;1763us;1700us;1763us;1702us;1763us;1707us;1763us;1711us;1763us;1716us;1763us;1722us;1763us;1725us;1763us;1728us;1763us;1731us;1763us;1737us;1763us;1740us;1763us;1741us;1763us;1743us;1763us;1744us;1763us;1747us;1763us;1751us;1763us;1754us;1763us;1756us;1763us;1759us;1763us;1762us;646us;1764us;646us;1774us;1763us;1780us;1763us;1786us;1763us;1789us;1763us;1856us;1763us;1860us;1763us;1866us;1763us;1876us;1763us;1882us;1763us;1884us;1763us;1909us;1763us;1911us;1763us;1922us;1763us;3us;65535us;361us;362us;611us;623us;628us;629us;3us;65535us;634us;635us;1678us;636us;1680us;637us;3us;65535us;619us;620us;1762us;641us;1764us;642us;4us;65535us;634us;640us;638us;639us;1678us;640us;1680us;640us;1us;65535us;664us;665us;3us;65535us;181us;573us;444us;573us;567us;573us;5us;65535us;181us;678us;444us;678us;567us;678us;680us;681us;685us;686us;3us;65535us;678us;679us;681us;682us;686us;687us;3us;65535us;678us;685us;681us;685us;686us;685us;4us;65535us;181us;721us;444us;721us;567us;721us;689us;690us;3us;65535us;181us;680us;444us;680us;567us;680us;3us;65535us;181us;683us;444us;683us;567us;683us;8us;65535us;690us;741us;692us;741us;695us;741us;719us;741us;725us;741us;728us;729us;731us;732us;765us;741us;8us;65535us;690us;727us;692us;727us;695us;727us;719us;727us;725us;727us;728us;727us;731us;727us;765us;727us;6us;65535us;690us;694us;692us;693us;695us;696us;719us;720us;725us;726us;765us;766us;3us;65535us;580us;581us;590us;591us;743us;744us;3us;65535us;580us;742us;590us;742us;743us;742us;3us;65535us;196us;197us;199us;200us;746us;747us;4us;65535us;31us;284us;242us;284us;256us;284us;275us;284us;6us;65535us;31us;756us;72us;223us;96us;223us;242us;756us;256us;756us;275us;756us;1us;65535us;760us;761us;1us;65535us;761us;762us;120us;65535us;6us;1106us;31us;277us;117us;1106us;119us;1106us;242us;277us;256us;277us;275us;276us;279us;1106us;355us;784us;427us;1106us;432us;1106us;443us;784us;444us;784us;474us;1106us;497us;1106us;774us;1106us;780us;1106us;832us;1106us;836us;1106us;846us;1106us;1047us;1106us;1053us;1106us;1069us;1106us;1071us;1106us;1074us;1106us;1077us;1106us;1096us;1106us;1101us;1106us;1107us;1106us;1110us;1106us;1113us;1106us;1119us;1106us;1123us;1106us;1127us;1106us;1133us;1106us;1135us;1106us;1140us;1106us;1142us;1106us;1144us;1106us;1146us;1106us;1148us;1106us;1150us;1106us;1154us;1106us;1164us;1106us;1171us;1106us;1177us;1106us;1179us;1106us;1184us;1106us;1188us;1106us;1191us;1106us;1195us;1106us;1198us;1106us;1201us;1106us;1203us;1106us;1206us;1106us;1208us;1106us;1257us;1106us;1259us;1106us;1263us;1106us;1265us;1106us;1267us;1106us;1269us;1106us;1271us;1106us;1273us;1106us;1275us;1106us;1277us;1106us;1279us;1106us;1281us;1106us;1283us;1106us;1285us;1106us;1287us;1106us;1289us;1106us;1291us;1106us;1293us;1106us;1295us;1106us;1297us;1106us;1299us;1106us;1301us;1106us;1303us;1106us;1304us;1106us;1305us;1106us;1306us;1106us;1309us;1106us;1319us;1106us;1348us;1106us;1349us;1106us;1353us;1106us;1355us;1106us;1358us;1106us;1359us;1106us;1361us;1106us;1364us;1106us;1366us;1106us;1368us;1106us;1370us;1106us;1452us;1106us;1459us;1106us;1466us;1106us;1473us;1106us;1490us;1106us;1497us;1106us;1498us;1106us;1504us;1106us;1510us;1106us;1511us;1106us;1512us;1106us;1524us;1106us;1530us;1106us;1540us;1106us;1553us;1106us;1555us;1106us;1558us;1106us;1559us;1106us;1585us;1106us;1590us;1106us;1615us;1106us;1657us;1106us;1662us;1106us;2053us;1106us;2057us;1106us;7us;65535us;31us;280us;242us;280us;256us;280us;275us;280us;355us;785us;443us;785us;444us;785us;120us;65535us;6us;1077us;31us;279us;117us;1110us;119us;1110us;242us;279us;256us;279us;275us;278us;279us;1077us;355us;786us;427us;1077us;432us;1077us;443us;786us;444us;786us;474us;1077us;497us;1077us;774us;1077us;780us;1077us;832us;1077us;836us;1077us;846us;1077us;1047us;1077us;1053us;1077us;1069us;1077us;1071us;1077us;1074us;1077us;1077us;1077us;1096us;1077us;1101us;1077us;1107us;1077us;1110us;1077us;1113us;1077us;1119us;1077us;1123us;1077us;1127us;1077us;1133us;1077us;1135us;1110us;1140us;1110us;1142us;1110us;1144us;1110us;1146us;1110us;1148us;1110us;1150us;1110us;1154us;1077us;1164us;1077us;1171us;1077us;1177us;1110us;1179us;1110us;1184us;1077us;1188us;1077us;1191us;1077us;1195us;1077us;1198us;1077us;1201us;1077us;1203us;1077us;1206us;1110us;1208us;1077us;1257us;1110us;1259us;1110us;1263us;1110us;1265us;1110us;1267us;1110us;1269us;1110us;1271us;1110us;1273us;1110us;1275us;1110us;1277us;1110us;1279us;1110us;1281us;1110us;1283us;1110us;1285us;1110us;1287us;1110us;1289us;1110us;1291us;1110us;1293us;1110us;1295us;1110us;1297us;1110us;1299us;1110us;1301us;1110us;1303us;1110us;1304us;1110us;1305us;1110us;1306us;1110us;1309us;1077us;1319us;1077us;1348us;1110us;1349us;1077us;1353us;1110us;1355us;1077us;1358us;1110us;1359us;1077us;1361us;1110us;1364us;1110us;1366us;1110us;1368us;1110us;1370us;1110us;1452us;1077us;1459us;1110us;1466us;1077us;1473us;1077us;1490us;1077us;1497us;1077us;1498us;1077us;1504us;1077us;1510us;1077us;1511us;1077us;1512us;1077us;1524us;1110us;1530us;1077us;1540us;1077us;1553us;1077us;1555us;1110us;1558us;1110us;1559us;1110us;1585us;1110us;1590us;1110us;1615us;1110us;1657us;1077us;1662us;1077us;2053us;1110us;2057us;1110us;119us;65535us;6us;1116us;31us;1116us;117us;1116us;119us;1116us;242us;1116us;256us;1116us;279us;1116us;355us;787us;427us;1116us;432us;1116us;443us;787us;444us;787us;474us;1116us;497us;1116us;774us;1116us;780us;1116us;832us;1116us;836us;1116us;846us;1116us;1047us;1116us;1053us;1116us;1069us;1116us;1071us;1116us;1074us;1116us;1077us;1116us;1096us;1116us;1101us;1116us;1107us;1116us;1110us;1116us;1113us;1116us;1119us;1116us;1123us;1116us;1127us;1116us;1133us;1116us;1135us;1116us;1140us;1116us;1142us;1116us;1144us;1116us;1146us;1116us;1148us;1116us;1150us;1116us;1154us;1116us;1164us;1116us;1171us;1116us;1177us;1116us;1179us;1116us;1184us;1116us;1188us;1116us;1191us;1116us;1195us;1116us;1198us;1116us;1201us;1116us;1203us;1116us;1206us;1116us;1208us;1116us;1257us;1116us;1259us;1116us;1263us;1116us;1265us;1116us;1267us;1116us;1269us;1116us;1271us;1116us;1273us;1116us;1275us;1116us;1277us;1116us;1279us;1116us;1281us;1116us;1283us;1116us;1285us;1116us;1287us;1116us;1289us;1116us;1291us;1116us;1293us;1116us;1295us;1116us;1297us;1116us;1299us;1116us;1301us;1116us;1303us;1116us;1304us;1116us;1305us;1116us;1306us;1116us;1309us;1116us;1319us;1116us;1348us;1116us;1349us;1116us;1353us;1116us;1355us;1116us;1358us;1116us;1359us;1116us;1361us;1116us;1364us;1116us;1366us;1116us;1368us;1116us;1370us;1116us;1452us;1116us;1459us;1116us;1466us;1116us;1473us;1116us;1490us;1116us;1497us;1116us;1498us;1116us;1504us;1116us;1510us;1116us;1511us;1116us;1512us;1116us;1524us;1116us;1530us;1116us;1540us;1116us;1553us;1116us;1555us;1116us;1558us;1116us;1559us;1116us;1585us;1116us;1590us;1116us;1615us;1116us;1657us;1116us;1662us;1116us;2053us;1116us;2057us;1116us;3us;65535us;355us;446us;443us;445us;444us;445us;5us;65535us;778us;779us;781us;782us;1102us;1103us;1192us;1193us;1204us;1205us;120us;65535us;6us;773us;31us;773us;117us;773us;119us;773us;242us;773us;256us;773us;275us;773us;279us;773us;355us;773us;427us;773us;432us;773us;443us;773us;444us;773us;474us;773us;497us;773us;774us;773us;780us;773us;832us;773us;836us;773us;846us;773us;1047us;773us;1053us;773us;1069us;773us;1071us;773us;1074us;773us;1077us;773us;1096us;773us;1101us;773us;1107us;773us;1110us;773us;1113us;773us;1119us;773us;1123us;773us;1127us;773us;1133us;773us;1135us;773us;1140us;773us;1142us;773us;1144us;773us;1146us;773us;1148us;773us;1150us;773us;1154us;773us;1164us;773us;1171us;773us;1177us;773us;1179us;773us;1184us;773us;1188us;773us;1191us;773us;1195us;773us;1198us;773us;1201us;773us;1203us;773us;1206us;773us;1208us;773us;1257us;773us;1259us;773us;1263us;773us;1265us;773us;1267us;773us;1269us;773us;1271us;773us;1273us;773us;1275us;773us;1277us;773us;1279us;773us;1281us;773us;1283us;773us;1285us;773us;1287us;773us;1289us;773us;1291us;773us;1293us;773us;1295us;773us;1297us;773us;1299us;773us;1301us;773us;1303us;773us;1304us;773us;1305us;773us;1306us;773us;1309us;773us;1319us;773us;1348us;773us;1349us;773us;1353us;773us;1355us;773us;1358us;773us;1359us;773us;1361us;773us;1364us;773us;1366us;773us;1368us;773us;1370us;773us;1452us;773us;1459us;773us;1466us;773us;1473us;773us;1490us;773us;1497us;773us;1498us;773us;1504us;773us;1510us;773us;1511us;773us;1512us;773us;1524us;773us;1530us;773us;1540us;773us;1553us;773us;1555us;773us;1558us;773us;1559us;773us;1585us;773us;1590us;773us;1615us;773us;1657us;773us;1662us;773us;2053us;773us;2057us;773us;1us;65535us;795us;796us;1us;65535us;795us;798us;3us;65535us;795us;799us;800us;801us;802us;803us;2us;65535us;804us;805us;819us;808us;1us;65535us;790us;791us;4us;65535us;771us;772us;777us;778us;1627us;1628us;1629us;1630us;2us;65535us;820us;821us;823us;824us;5us;65535us;771us;820us;777us;820us;822us;823us;1627us;820us;1629us;820us;2us;65535us;552us;826us;825us;826us;1us;65535us;832us;833us;2us;65535us;832us;840us;836us;837us;1us;65535us;841us;842us;1us;65535us;842us;843us;1us;65535us;844us;845us;2us;65535us;844us;850us;848us;849us;307us;65535us;6us;887us;8us;1891us;31us;887us;114us;1891us;117us;887us;119us;887us;152us;1891us;181us;1891us;187us;1891us;191us;1891us;193us;1891us;204us;1891us;242us;887us;256us;887us;279us;887us;295us;1891us;336us;887us;340us;887us;345us;887us;390us;1891us;424us;887us;427us;887us;429us;887us;432us;887us;444us;1891us;451us;1891us;460us;1891us;471us;887us;474us;887us;487us;1891us;497us;887us;503us;1891us;528us;1891us;531us;887us;567us;1891us;575us;1891us;576us;1891us;619us;1891us;632us;1891us;634us;1891us;638us;1891us;643us;1891us;650us;1891us;653us;1891us;664us;1891us;675us;1891us;690us;1891us;692us;1891us;695us;1891us;699us;1891us;701us;887us;713us;887us;719us;1891us;722us;1891us;725us;1891us;728us;1891us;731us;1891us;734us;1891us;751us;1891us;765us;1891us;774us;887us;780us;887us;829us;887us;832us;887us;836us;887us;846us;887us;852us;1891us;892us;887us;911us;887us;914us;887us;915us;887us;920us;887us;921us;887us;924us;887us;926us;887us;927us;887us;936us;887us;940us;887us;941us;887us;943us;887us;945us;887us;948us;887us;950us;887us;952us;1891us;956us;887us;960us;887us;962us;887us;964us;887us;972us;887us;975us;887us;986us;887us;994us;887us;1015us;887us;1018us;887us;1021us;1891us;1024us;887us;1025us;887us;1028us;887us;1029us;887us;1032us;887us;1034us;887us;1035us;887us;1041us;887us;1045us;887us;1047us;887us;1053us;887us;1063us;1891us;1069us;887us;1071us;887us;1074us;887us;1077us;887us;1095us;887us;1096us;887us;1100us;887us;1101us;887us;1107us;887us;1110us;887us;1113us;887us;1119us;887us;1123us;887us;1127us;887us;1133us;887us;1135us;887us;1140us;887us;1142us;887us;1144us;887us;1146us;887us;1148us;887us;1150us;887us;1152us;887us;1154us;887us;1164us;887us;1171us;887us;1177us;887us;1179us;887us;1183us;887us;1184us;887us;1188us;887us;1190us;887us;1191us;887us;1195us;887us;1198us;887us;1201us;887us;1203us;887us;1206us;887us;1208us;887us;1248us;1891us;1251us;1891us;1254us;1891us;1257us;887us;1259us;887us;1263us;887us;1265us;887us;1267us;887us;1269us;887us;1271us;887us;1273us;887us;1275us;887us;1277us;887us;1279us;887us;1281us;887us;1283us;887us;1285us;887us;1287us;887us;1289us;887us;1291us;887us;1293us;887us;1295us;887us;1297us;887us;1299us;887us;1301us;887us;1303us;887us;1304us;887us;1305us;887us;1306us;887us;1309us;887us;1319us;887us;1322us;887us;1324us;887us;1330us;887us;1332us;887us;1339us;887us;1341us;887us;1343us;887us;1348us;887us;1349us;887us;1353us;887us;1355us;887us;1358us;887us;1359us;887us;1361us;887us;1364us;887us;1366us;887us;1368us;887us;1370us;887us;1372us;887us;1373us;887us;1374us;887us;1375us;887us;1377us;887us;1378us;887us;1380us;887us;1381us;887us;1383us;887us;1384us;887us;1386us;887us;1387us;887us;1389us;887us;1390us;887us;1392us;887us;1393us;887us;1395us;1891us;1396us;1891us;1399us;887us;1400us;887us;1407us;887us;1409us;887us;1411us;887us;1412us;887us;1413us;887us;1416us;887us;1421us;887us;1429us;887us;1430us;887us;1433us;887us;1434us;887us;1452us;887us;1459us;887us;1466us;887us;1473us;887us;1490us;887us;1497us;887us;1498us;887us;1504us;887us;1510us;887us;1511us;887us;1512us;887us;1524us;887us;1530us;887us;1538us;1891us;1540us;887us;1553us;887us;1555us;887us;1558us;887us;1559us;887us;1565us;887us;1571us;1891us;1574us;1891us;1576us;1891us;1578us;1891us;1580us;887us;1585us;887us;1590us;887us;1615us;887us;1640us;1891us;1648us;887us;1655us;887us;1657us;887us;1660us;887us;1662us;887us;1672us;887us;1674us;887us;1678us;1891us;1680us;1891us;1681us;1891us;1685us;1891us;1689us;1891us;1692us;1891us;1695us;1891us;1698us;1891us;1700us;1891us;1702us;1891us;1707us;1891us;1711us;1891us;1716us;1891us;1722us;1891us;1725us;1891us;1728us;1891us;1731us;1891us;1737us;1891us;1740us;1891us;1741us;1891us;1743us;1891us;1744us;1891us;1747us;1891us;1751us;1891us;1754us;1891us;1756us;1891us;1759us;1891us;1762us;1891us;1764us;1891us;1774us;1891us;1780us;1891us;1786us;1891us;1789us;1891us;1856us;1891us;1860us;1891us;1866us;1891us;1876us;1891us;1882us;1891us;1884us;1891us;1893us;887us;1909us;1891us;1911us;1891us;1922us;1891us;2053us;887us;2057us;887us;1us;65535us;881us;882us;4us;65535us;885us;886us;1769us;884us;1864us;884us;1937us;884us;3us;65535us;1769us;1770us;1864us;1865us;1937us;1938us;210us;65535us;6us;1479us;31us;1479us;117us;1479us;119us;1479us;242us;1479us;256us;1479us;279us;1479us;336us;1479us;340us;1479us;345us;1479us;424us;982us;427us;1479us;429us;982us;432us;1479us;471us;982us;474us;1479us;497us;1479us;531us;1479us;701us;1479us;713us;1479us;774us;1479us;780us;1479us;829us;982us;832us;1479us;836us;1479us;846us;1479us;892us;982us;911us;982us;914us;982us;915us;982us;920us;982us;921us;982us;924us;982us;926us;982us;927us;982us;936us;982us;940us;982us;941us;982us;943us;982us;945us;982us;948us;982us;950us;982us;956us;982us;960us;982us;962us;982us;964us;982us;972us;982us;975us;982us;986us;982us;994us;982us;1015us;982us;1018us;982us;1024us;982us;1025us;982us;1028us;982us;1029us;982us;1032us;982us;1034us;982us;1035us;982us;1041us;982us;1045us;982us;1047us;1479us;1053us;1479us;1069us;1479us;1071us;1479us;1074us;1479us;1077us;1479us;1095us;982us;1096us;1479us;1100us;982us;1101us;1479us;1107us;1479us;1110us;1479us;1113us;1479us;1119us;1479us;1123us;1479us;1127us;1479us;1133us;1479us;1135us;1479us;1140us;1479us;1142us;1479us;1144us;1479us;1146us;1479us;1148us;1479us;1150us;1479us;1152us;982us;1154us;1479us;1164us;1479us;1171us;1479us;1177us;1479us;1179us;1479us;1183us;982us;1184us;1479us;1188us;1479us;1190us;982us;1191us;1479us;1195us;1479us;1198us;1479us;1201us;1479us;1203us;1479us;1206us;1479us;1208us;1479us;1257us;1479us;1259us;1479us;1263us;1479us;1265us;1479us;1267us;1479us;1269us;1479us;1271us;1479us;1273us;1479us;1275us;1479us;1277us;1479us;1279us;1479us;1281us;1479us;1283us;1479us;1285us;1479us;1287us;1479us;1289us;1479us;1291us;1479us;1293us;1479us;1295us;1479us;1297us;1479us;1299us;1479us;1301us;1479us;1303us;1479us;1304us;1479us;1305us;1479us;1306us;1479us;1309us;1479us;1319us;1479us;1322us;982us;1324us;982us;1330us;982us;1332us;982us;1339us;982us;1341us;982us;1343us;982us;1348us;1479us;1349us;1479us;1353us;1479us;1355us;1479us;1358us;1479us;1359us;1479us;1361us;1479us;1364us;1479us;1366us;1479us;1368us;1479us;1370us;1479us;1372us;1479us;1373us;1479us;1374us;1479us;1375us;1479us;1377us;1479us;1378us;1479us;1380us;1479us;1381us;1479us;1383us;1479us;1384us;1479us;1386us;1479us;1387us;1479us;1389us;1479us;1390us;1479us;1392us;1479us;1393us;1479us;1399us;1479us;1400us;1479us;1407us;1479us;1409us;1479us;1411us;1479us;1412us;1479us;1413us;1479us;1416us;1479us;1421us;1479us;1429us;1479us;1430us;1479us;1433us;1479us;1434us;1479us;1452us;1479us;1459us;1479us;1466us;1479us;1473us;1479us;1490us;1479us;1497us;1479us;1498us;1479us;1504us;1479us;1510us;1479us;1511us;1479us;1512us;1479us;1524us;1479us;1530us;1479us;1540us;1479us;1553us;1479us;1555us;1479us;1558us;1479us;1559us;1479us;1565us;1479us;1580us;1479us;1585us;1479us;1590us;1479us;1615us;1479us;1648us;1479us;1655us;982us;1657us;1479us;1660us;982us;1662us;1479us;1672us;982us;1674us;982us;1893us;1479us;2053us;1479us;2057us;1479us;3us;65535us;424us;425us;429us;430us;829us;830us;1us;65535us;370us;371us;1us;65535us;370us;891us;36us;65535us;890us;914us;893us;1018us;897us;1332us;898us;1341us;900us;914us;901us;914us;902us;914us;903us;914us;904us;914us;905us;914us;906us;914us;907us;914us;908us;914us;909us;914us;910us;914us;937us;1018us;1001us;1018us;1002us;1018us;1003us;1018us;1004us;1018us;1005us;1018us;1006us;1018us;1007us;1018us;1008us;1018us;1009us;1018us;1010us;1018us;1011us;1018us;1012us;1018us;1013us;1018us;1014us;1018us;1085us;1343us;1322us;1330us;1324us;1330us;1338us;1339us;1672us;1330us;1674us;1330us;14us;65535us;424us;890us;429us;890us;829us;890us;914us;900us;915us;901us;920us;902us;921us;903us;924us;904us;926us;905us;927us;906us;1095us;907us;1100us;908us;1183us;909us;1190us;910us;14us;65535us;424us;917us;429us;917us;829us;917us;914us;917us;915us;917us;920us;917us;921us;917us;924us;917us;926us;917us;927us;917us;1095us;917us;1100us;917us;1183us;917us;1190us;917us;14us;65535us;424us;918us;429us;918us;829us;918us;914us;918us;915us;918us;920us;918us;921us;918us;924us;918us;926us;918us;927us;918us;1095us;918us;1100us;918us;1183us;918us;1190us;918us;3us;65535us;930us;931us;932us;933us;956us;957us;3us;65535us;930us;928us;932us;928us;956us;928us;43us;65535us;424us;919us;429us;919us;829us;919us;892us;1027us;911us;912us;914us;919us;915us;919us;920us;919us;921us;919us;924us;919us;926us;919us;927us;919us;936us;1027us;956us;1027us;972us;1027us;975us;1027us;986us;1027us;994us;1027us;1015us;1016us;1018us;1027us;1024us;1027us;1025us;1027us;1028us;1027us;1029us;1027us;1032us;1027us;1034us;1027us;1035us;1027us;1041us;1027us;1045us;1027us;1095us;919us;1100us;919us;1152us;1027us;1183us;919us;1190us;919us;1322us;1027us;1324us;1027us;1330us;1027us;1332us;1027us;1339us;1027us;1341us;1027us;1343us;1027us;1672us;1027us;1674us;1027us;6us;65535us;940us;947us;941us;942us;943us;944us;945us;946us;948us;949us;950us;951us;11us;65535us;940us;959us;941us;959us;943us;959us;945us;959us;948us;959us;950us;959us;960us;961us;962us;963us;964us;965us;1655us;1656us;1660us;1661us;55us;65535us;424us;955us;429us;955us;471us;472us;829us;955us;892us;955us;911us;955us;914us;955us;915us;955us;920us;955us;921us;955us;924us;955us;926us;955us;927us;955us;936us;955us;940us;960us;941us;960us;943us;960us;945us;960us;948us;960us;950us;960us;956us;955us;960us;960us;962us;960us;964us;960us;972us;955us;975us;955us;986us;955us;994us;955us;1015us;955us;1018us;955us;1024us;955us;1025us;955us;1028us;955us;1029us;955us;1032us;955us;1034us;955us;1035us;955us;1041us;955us;1045us;955us;1095us;955us;1100us;955us;1152us;955us;1183us;955us;1190us;955us;1322us;955us;1324us;955us;1330us;955us;1332us;955us;1339us;955us;1341us;955us;1343us;955us;1655us;960us;1660us;960us;1672us;955us;1674us;955us;2us;65535us;956us;987us;986us;987us;27us;65535us;892us;893us;936us;937us;956us;1001us;972us;1012us;975us;1012us;986us;1001us;994us;1009us;1018us;1002us;1024us;1003us;1025us;1004us;1028us;1005us;1029us;1006us;1032us;1007us;1034us;1008us;1035us;1010us;1041us;1011us;1045us;1012us;1152us;1013us;1322us;1014us;1324us;1014us;1330us;1014us;1332us;1014us;1339us;1014us;1341us;1014us;1343us;1014us;1672us;1014us;1674us;1014us;27us;65535us;892us;1019us;936us;1019us;956us;1019us;972us;1019us;975us;1019us;986us;1019us;994us;995us;1018us;1019us;1024us;1019us;1025us;1019us;1028us;1019us;1029us;1019us;1032us;1019us;1034us;1019us;1035us;1019us;1041us;1019us;1045us;1019us;1152us;1019us;1322us;1019us;1324us;1019us;1330us;1019us;1332us;1019us;1339us;1019us;1341us;1019us;1343us;1019us;1672us;1019us;1674us;1019us;27us;65535us;892us;1020us;936us;1020us;956us;1020us;972us;1020us;975us;1020us;986us;1020us;994us;1020us;1018us;1020us;1024us;1020us;1025us;1020us;1028us;1020us;1029us;1020us;1032us;1020us;1034us;1020us;1035us;1020us;1041us;1020us;1045us;1020us;1152us;1020us;1322us;1020us;1324us;1020us;1330us;1020us;1332us;1020us;1339us;1020us;1341us;1020us;1343us;1020us;1672us;1020us;1674us;1020us;2us;65535us;967us;968us;1038us;1039us;2us;65535us;967us;1036us;1038us;1036us;3us;65535us;972us;973us;975us;976us;1045us;1046us;27us;65535us;279us;1111us;427us;428us;432us;433us;474us;475us;497us;498us;774us;775us;780us;781us;846us;847us;1077us;1111us;1096us;1097us;1101us;1102us;1110us;1111us;1113us;1114us;1133us;1134us;1154us;1155us;1164us;1165us;1171us;1172us;1184us;1185us;1188us;1189us;1191us;1192us;1195us;1196us;1201us;1202us;1203us;1204us;1309us;1310us;1355us;1356us;1359us;1360us;1657us;1658us;6us;65535us;1144us;1145us;1146us;1147us;1259us;1260us;1585us;1586us;1590us;1591us;1615us;1616us;5us;65535us;1127us;1128us;1208us;1209us;1349us;1350us;1553us;1554us;1662us;1663us;52us;65535us;6us;1066us;279us;1052us;427us;1052us;432us;1052us;474us;1052us;497us;1052us;774us;1052us;780us;1052us;832us;841us;836us;841us;846us;1052us;1047us;1048us;1053us;1054us;1074us;1075us;1077us;1052us;1096us;1052us;1101us;1052us;1107us;1108us;1110us;1052us;1113us;1052us;1119us;1120us;1123us;1124us;1127us;1058us;1133us;1052us;1154us;1052us;1164us;1052us;1171us;1052us;1184us;1052us;1188us;1052us;1191us;1052us;1195us;1052us;1198us;1199us;1201us;1052us;1203us;1052us;1208us;1058us;1309us;1052us;1319us;1320us;1349us;1058us;1355us;1052us;1359us;1052us;1466us;1471us;1473us;1474us;1490us;1491us;1497us;1499us;1498us;1499us;1510us;1532us;1511us;1532us;1512us;1532us;1530us;1531us;1553us;1058us;1657us;1052us;1662us;1058us;1us;65535us;6us;7us;57us;65535us;6us;1062us;279us;1062us;427us;1062us;432us;1062us;474us;1062us;497us;1062us;774us;1062us;780us;1062us;832us;1062us;836us;1062us;846us;1062us;1047us;1062us;1053us;1062us;1069us;1070us;1071us;1072us;1074us;1062us;1077us;1062us;1096us;1062us;1101us;1062us;1107us;1062us;1110us;1062us;1113us;1062us;1119us;1062us;1123us;1062us;1127us;1062us;1133us;1062us;1154us;1062us;1164us;1062us;1171us;1062us;1184us;1062us;1188us;1062us;1191us;1062us;1195us;1062us;1198us;1062us;1201us;1062us;1203us;1062us;1208us;1062us;1309us;1062us;1319us;1062us;1349us;1062us;1355us;1062us;1359us;1062us;1452us;1550us;1466us;1062us;1473us;1062us;1490us;1062us;1497us;1062us;1498us;1062us;1504us;1551us;1510us;1062us;1511us;1062us;1512us;1062us;1530us;1062us;1540us;1552us;1553us;1062us;1657us;1062us;1662us;1062us;204us;65535us;56us;59us;61us;63us;78us;81us;156us;158us;162us;164us;166us;168us;170us;172us;193us;195us;214us;217us;247us;250us;289us;290us;292us;294us;295us;297us;302us;304us;305us;307us;312us;314us;322us;2098us;324us;2098us;372us;375us;380us;383us;394us;2098us;400us;401us;404us;405us;431us;2098us;447us;450us;451us;454us;471us;479us;473us;2098us;485us;491us;486us;490us;487us;489us;494us;502us;496us;2098us;503us;505us;528us;2098us;536us;538us;544us;546us;553us;558us;570us;571us;581us;583us;591us;593us;601us;606us;689us;691us;692us;698us;695us;697us;701us;703us;713us;716us;719us;724us;728us;730us;734us;736us;749us;755us;750us;754us;751us;753us;760us;763us;765us;767us;778us;789us;781us;789us;831us;835us;837us;839us;911us;913us;915us;2098us;920us;2098us;921us;2098us;924us;2098us;934us;939us;935us;939us;936us;938us;952us;954us;956us;992us;986us;992us;987us;989us;994us;1000us;995us;997us;1013us;1176us;1015us;1017us;1021us;1023us;1025us;1026us;1028us;2098us;1029us;2098us;1032us;2098us;1040us;1043us;1041us;1042us;1048us;1050us;1063us;1065us;1102us;789us;1120us;1122us;1124us;1126us;1127us;1060us;1128us;1130us;1135us;1139us;1136us;1138us;1148us;1316us;1150us;1316us;1152us;2098us;1153us;2098us;1154us;2098us;1155us;2098us;1163us;1170us;1164us;1169us;1165us;1167us;1177us;1181us;1179us;1182us;1192us;789us;1204us;789us;1208us;1060us;1233us;1315us;1237us;1363us;1248us;1250us;1251us;1253us;1254us;1256us;1262us;1461us;1263us;2098us;1265us;2098us;1267us;2098us;1269us;2098us;1271us;2098us;1273us;2098us;1275us;2098us;1277us;2098us;1279us;2098us;1281us;2098us;1283us;2098us;1285us;2098us;1287us;2098us;1289us;2098us;1291us;2098us;1293us;2098us;1295us;2098us;1297us;2098us;1299us;2098us;1301us;2098us;1310us;1312us;1324us;1328us;1325us;1327us;1337us;1347us;1338us;1346us;1339us;1345us;1349us;1060us;1353us;1354us;1355us;1357us;1364us;2098us;1366us;2098us;1368us;2098us;1370us;2098us;1403us;1465us;1419us;1424us;1420us;1424us;1421us;1423us;1440us;1465us;1443us;1465us;1452us;1457us;1453us;1455us;1473us;1478us;1474us;1476us;1491us;1493us;1497us;1503us;1498us;1503us;1499us;1501us;1504us;1509us;1505us;1507us;1510us;1523us;1511us;1523us;1512us;1523us;1514us;2092us;1540us;1545us;1541us;1543us;1553us;1060us;1555us;2098us;1585us;1589us;1614us;2098us;1615us;2098us;1648us;1653us;1649us;1651us;1662us;1061us;1663us;1665us;1681us;1683us;1685us;1687us;1689us;1691us;1695us;1697us;1702us;1704us;1707us;1709us;1711us;1713us;1716us;1718us;1722us;1724us;1728us;1730us;1737us;1739us;1743us;1746us;1744us;1746us;1747us;1749us;1751us;1753us;1756us;1758us;1859us;1914us;1877us;1880us;1878us;1880us;1882us;1890us;1883us;1889us;1884us;1888us;1885us;1887us;1904us;2098us;1909us;1920us;1911us;2098us;1916us;2098us;1958us;2098us;2008us;2098us;4us;65535us;1098us;1099us;1104us;1105us;1187us;1188us;1194us;1195us;116us;65535us;6us;1068us;31us;32us;117us;118us;119us;120us;242us;257us;256us;257us;279us;1068us;427us;1068us;432us;1068us;474us;1068us;497us;1068us;774us;1068us;780us;1068us;832us;1068us;836us;1068us;846us;1068us;1047us;1068us;1053us;1068us;1069us;1068us;1071us;1068us;1074us;1068us;1077us;1068us;1096us;1068us;1101us;1068us;1107us;1068us;1110us;1068us;1113us;1068us;1119us;1068us;1123us;1068us;1127us;1068us;1133us;1068us;1135us;1136us;1140us;1141us;1142us;1143us;1144us;1057us;1146us;1057us;1148us;1233us;1150us;1233us;1154us;1068us;1164us;1068us;1171us;1068us;1177us;1178us;1179us;1180us;1184us;1068us;1188us;1068us;1191us;1068us;1195us;1068us;1198us;1068us;1201us;1068us;1203us;1068us;1206us;1207us;1208us;1068us;1257us;1210us;1259us;1057us;1263us;1211us;1265us;1212us;1267us;1213us;1269us;1214us;1271us;1215us;1273us;1216us;1275us;1217us;1277us;1218us;1279us;1219us;1281us;1220us;1283us;1221us;1285us;1222us;1287us;1223us;1289us;1224us;1291us;1225us;1293us;1226us;1295us;1227us;1297us;1228us;1299us;1229us;1301us;1230us;1303us;1231us;1304us;1232us;1305us;1232us;1306us;1232us;1309us;1068us;1319us;1068us;1348us;1234us;1349us;1068us;1353us;1235us;1355us;1068us;1358us;1236us;1359us;1068us;1361us;1237us;1364us;1238us;1366us;1239us;1368us;1240us;1370us;1242us;1452us;1068us;1459us;1241us;1466us;1068us;1473us;1068us;1490us;1068us;1497us;1068us;1498us;1068us;1504us;1068us;1510us;1068us;1511us;1068us;1512us;1068us;1524us;1243us;1530us;1068us;1540us;1068us;1553us;1068us;1555us;1244us;1558us;1245us;1559us;1246us;1585us;1057us;1590us;1057us;1615us;1057us;1657us;1068us;1662us;1068us;2053us;1247us;2057us;1247us;2us;65535us;1148us;1149us;1150us;1151us;1us;65535us;1448us;1449us;4us;65535us;1120us;1121us;1124us;1125us;1128us;1129us;1131us;1132us;4us;65535us;1322us;1323us;1324us;1325us;1672us;1673us;1674us;1675us;9us;65535us;1322us;1337us;1324us;1337us;1330us;1337us;1332us;1337us;1339us;1337us;1341us;1337us;1343us;1337us;1672us;1337us;1674us;1337us;9us;65535us;1322us;1329us;1324us;1329us;1330us;1331us;1332us;1333us;1339us;1340us;1341us;1342us;1343us;1344us;1672us;1329us;1674us;1329us;1us;65535us;1014us;1336us;1us;65535us;1337us;1338us;2us;65535us;1136us;1137us;1237us;1362us;2us;65535us;1136us;1351us;1237us;1351us;1us;65535us;1351us;1352us;116us;65535us;6us;1261us;31us;1261us;117us;1261us;119us;1261us;242us;1261us;256us;1261us;279us;1261us;427us;1261us;432us;1261us;474us;1261us;497us;1261us;774us;1261us;780us;1261us;832us;1261us;836us;1261us;846us;1261us;1047us;1261us;1053us;1261us;1069us;1261us;1071us;1261us;1074us;1261us;1077us;1261us;1096us;1261us;1101us;1261us;1107us;1261us;1110us;1261us;1113us;1261us;1119us;1261us;1123us;1261us;1127us;1261us;1133us;1261us;1135us;1261us;1140us;1261us;1142us;1261us;1144us;1261us;1146us;1261us;1148us;1261us;1150us;1261us;1154us;1261us;1164us;1261us;1171us;1261us;1177us;1261us;1179us;1261us;1184us;1261us;1188us;1261us;1191us;1261us;1195us;1261us;1198us;1261us;1201us;1261us;1203us;1261us;1206us;1261us;1208us;1261us;1257us;1261us;1259us;1261us;1263us;1261us;1265us;1261us;1267us;1261us;1269us;1261us;1271us;1261us;1273us;1261us;1275us;1261us;1277us;1261us;1279us;1261us;1281us;1261us;1283us;1261us;1285us;1261us;1287us;1261us;1289us;1261us;1291us;1261us;1293us;1261us;1295us;1261us;1297us;1261us;1299us;1261us;1301us;1261us;1303us;1261us;1304us;1261us;1305us;1261us;1306us;1261us;1309us;1261us;1319us;1261us;1348us;1261us;1349us;1261us;1353us;1261us;1355us;1261us;1358us;1261us;1359us;1261us;1361us;1261us;1364us;1261us;1366us;1261us;1368us;1261us;1370us;1261us;1452us;1261us;1459us;1262us;1466us;1261us;1473us;1261us;1490us;1261us;1497us;1261us;1498us;1261us;1504us;1261us;1510us;1261us;1511us;1261us;1512us;1261us;1524us;1261us;1530us;1261us;1540us;1261us;1553us;1261us;1555us;1261us;1558us;1261us;1559us;1261us;1585us;1261us;1590us;1261us;1615us;1261us;1657us;1261us;1662us;1261us;2053us;1261us;2057us;1261us;134us;65535us;6us;1258us;31us;1258us;117us;1258us;119us;1258us;242us;1258us;256us;1258us;279us;1258us;427us;1258us;432us;1258us;474us;1258us;497us;1258us;774us;1258us;780us;1258us;832us;1258us;836us;1258us;846us;1258us;1047us;1258us;1053us;1258us;1069us;1258us;1071us;1258us;1074us;1258us;1077us;1258us;1096us;1258us;1101us;1258us;1107us;1258us;1110us;1258us;1113us;1258us;1119us;1258us;1123us;1258us;1127us;1258us;1133us;1258us;1135us;1258us;1140us;1258us;1142us;1258us;1144us;1258us;1146us;1258us;1148us;1258us;1150us;1258us;1154us;1258us;1164us;1258us;1171us;1258us;1177us;1258us;1179us;1258us;1184us;1258us;1188us;1258us;1191us;1258us;1195us;1258us;1198us;1258us;1201us;1258us;1203us;1258us;1206us;1258us;1208us;1258us;1257us;1258us;1259us;1258us;1263us;1258us;1265us;1258us;1267us;1258us;1269us;1258us;1271us;1258us;1273us;1258us;1275us;1258us;1277us;1258us;1279us;1258us;1281us;1258us;1283us;1258us;1285us;1258us;1287us;1258us;1289us;1258us;1291us;1258us;1293us;1258us;1295us;1258us;1297us;1258us;1299us;1258us;1301us;1258us;1303us;1258us;1304us;1258us;1305us;1258us;1306us;1258us;1309us;1258us;1319us;1258us;1348us;1258us;1349us;1258us;1353us;1258us;1355us;1258us;1358us;1258us;1359us;1258us;1361us;1258us;1364us;1258us;1366us;1258us;1368us;1258us;1370us;1258us;1372us;1376us;1373us;1376us;1374us;1376us;1375us;1376us;1377us;1379us;1378us;1379us;1380us;1382us;1381us;1382us;1383us;1385us;1384us;1385us;1386us;1388us;1387us;1388us;1389us;1391us;1390us;1391us;1392us;1394us;1393us;1394us;1407us;1408us;1409us;1410us;1452us;1258us;1459us;1258us;1466us;1258us;1473us;1258us;1490us;1258us;1497us;1258us;1498us;1258us;1504us;1258us;1510us;1258us;1511us;1258us;1512us;1258us;1524us;1258us;1530us;1258us;1540us;1258us;1553us;1258us;1555us;1258us;1558us;1258us;1559us;1258us;1585us;1258us;1590us;1258us;1615us;1258us;1657us;1258us;1662us;1258us;2053us;1258us;2057us;1258us;135us;65535us;6us;1411us;31us;1411us;117us;1411us;119us;1411us;242us;1411us;256us;1411us;279us;1411us;427us;1411us;432us;1411us;474us;1411us;497us;1411us;774us;1411us;780us;1411us;832us;1411us;836us;1411us;846us;1411us;1047us;1411us;1053us;1411us;1069us;1411us;1071us;1411us;1074us;1411us;1077us;1411us;1096us;1411us;1101us;1411us;1107us;1411us;1110us;1411us;1113us;1411us;1119us;1411us;1123us;1411us;1127us;1411us;1133us;1411us;1135us;1411us;1140us;1411us;1142us;1411us;1144us;1411us;1146us;1411us;1148us;1411us;1150us;1411us;1154us;1411us;1164us;1411us;1171us;1411us;1177us;1411us;1179us;1411us;1184us;1411us;1188us;1411us;1191us;1411us;1195us;1411us;1198us;1411us;1201us;1411us;1203us;1411us;1206us;1411us;1208us;1411us;1257us;1411us;1259us;1411us;1263us;1411us;1265us;1411us;1267us;1411us;1269us;1411us;1271us;1411us;1273us;1411us;1275us;1411us;1277us;1411us;1279us;1411us;1281us;1411us;1283us;1411us;1285us;1411us;1287us;1411us;1289us;1411us;1291us;1411us;1293us;1411us;1295us;1411us;1297us;1411us;1299us;1411us;1301us;1411us;1303us;1411us;1304us;1411us;1305us;1411us;1306us;1411us;1309us;1411us;1319us;1411us;1348us;1411us;1349us;1411us;1353us;1411us;1355us;1411us;1358us;1411us;1359us;1411us;1361us;1411us;1364us;1411us;1366us;1411us;1368us;1411us;1370us;1411us;1372us;1411us;1373us;1411us;1374us;1411us;1375us;1411us;1377us;1411us;1378us;1411us;1380us;1411us;1381us;1411us;1383us;1411us;1384us;1411us;1386us;1411us;1387us;1411us;1389us;1411us;1390us;1411us;1392us;1411us;1393us;1411us;1407us;1411us;1409us;1411us;1452us;1411us;1459us;1411us;1466us;1411us;1473us;1411us;1490us;1411us;1497us;1411us;1498us;1411us;1504us;1411us;1510us;1411us;1511us;1411us;1512us;1411us;1524us;1411us;1530us;1411us;1540us;1412us;1553us;1411us;1555us;1411us;1558us;1411us;1559us;1411us;1585us;1411us;1590us;1411us;1615us;1411us;1648us;1413us;1657us;1411us;1662us;1411us;2053us;1411us;2057us;1411us;4us;65535us;1411us;1414us;1412us;1414us;1413us;1414us;1565us;1568us;148us;65535us;6us;1415us;31us;1415us;117us;1415us;119us;1415us;242us;1415us;256us;1415us;279us;1415us;427us;1415us;432us;1415us;474us;1415us;497us;1415us;701us;702us;713us;714us;774us;1415us;780us;1415us;832us;1415us;836us;1415us;846us;1415us;1047us;1415us;1053us;1415us;1069us;1415us;1071us;1415us;1074us;1415us;1077us;1415us;1096us;1415us;1101us;1415us;1107us;1415us;1110us;1415us;1113us;1415us;1119us;1415us;1123us;1415us;1127us;1415us;1133us;1415us;1135us;1415us;1140us;1415us;1142us;1415us;1144us;1415us;1146us;1415us;1148us;1415us;1150us;1415us;1154us;1415us;1164us;1415us;1171us;1415us;1177us;1415us;1179us;1415us;1184us;1415us;1188us;1415us;1191us;1415us;1195us;1415us;1198us;1415us;1201us;1415us;1203us;1415us;1206us;1415us;1208us;1415us;1257us;1415us;1259us;1415us;1263us;1415us;1265us;1415us;1267us;1415us;1269us;1415us;1271us;1415us;1273us;1415us;1275us;1415us;1277us;1415us;1279us;1415us;1281us;1415us;1283us;1415us;1285us;1415us;1287us;1415us;1289us;1415us;1291us;1415us;1293us;1415us;1295us;1415us;1297us;1415us;1299us;1415us;1301us;1415us;1303us;1415us;1304us;1415us;1305us;1415us;1306us;1415us;1309us;1415us;1319us;1415us;1348us;1415us;1349us;1415us;1353us;1415us;1355us;1415us;1358us;1415us;1359us;1415us;1361us;1415us;1364us;1415us;1366us;1415us;1368us;1415us;1370us;1415us;1372us;1415us;1373us;1415us;1374us;1415us;1375us;1415us;1377us;1415us;1378us;1415us;1380us;1415us;1381us;1415us;1383us;1415us;1384us;1415us;1386us;1415us;1387us;1415us;1389us;1415us;1390us;1415us;1392us;1415us;1393us;1415us;1407us;1415us;1409us;1415us;1411us;1418us;1412us;1418us;1413us;1418us;1416us;1417us;1421us;1422us;1429us;1425us;1430us;1426us;1433us;1427us;1434us;1427us;1452us;1415us;1459us;1415us;1466us;1415us;1473us;1415us;1490us;1415us;1497us;1415us;1498us;1415us;1504us;1415us;1510us;1415us;1511us;1415us;1512us;1415us;1524us;1415us;1530us;1415us;1540us;1415us;1553us;1415us;1555us;1415us;1558us;1415us;1559us;1415us;1565us;1418us;1585us;1415us;1590us;1415us;1615us;1415us;1648us;1415us;1657us;1415us;1662us;1415us;1893us;1428us;2053us;1415us;2057us;1415us;3us;65535us;1403us;1404us;1440us;1441us;1443us;1444us;155us;65535us;6us;1462us;31us;1462us;117us;1462us;119us;1462us;242us;1462us;256us;1462us;279us;1462us;336us;1569us;340us;1569us;345us;1569us;427us;1462us;432us;1462us;474us;1462us;497us;1462us;531us;532us;701us;1462us;713us;1462us;774us;1462us;780us;1462us;832us;1462us;836us;1462us;846us;1462us;1047us;1462us;1053us;1462us;1069us;1462us;1071us;1462us;1074us;1462us;1077us;1462us;1096us;1462us;1101us;1462us;1107us;1462us;1110us;1462us;1113us;1462us;1119us;1462us;1123us;1462us;1127us;1462us;1133us;1462us;1135us;1462us;1140us;1462us;1142us;1462us;1144us;1462us;1146us;1462us;1148us;1462us;1150us;1462us;1154us;1462us;1164us;1462us;1171us;1462us;1177us;1462us;1179us;1462us;1184us;1462us;1188us;1462us;1191us;1462us;1195us;1462us;1198us;1462us;1201us;1462us;1203us;1462us;1206us;1462us;1208us;1462us;1257us;1462us;1259us;1462us;1263us;1462us;1265us;1462us;1267us;1462us;1269us;1462us;1271us;1462us;1273us;1462us;1275us;1462us;1277us;1462us;1279us;1462us;1281us;1462us;1283us;1462us;1285us;1462us;1287us;1462us;1289us;1462us;1291us;1462us;1293us;1462us;1295us;1462us;1297us;1462us;1299us;1462us;1301us;1462us;1303us;1462us;1304us;1462us;1305us;1462us;1306us;1462us;1309us;1462us;1319us;1462us;1348us;1462us;1349us;1462us;1353us;1462us;1355us;1462us;1358us;1462us;1359us;1462us;1361us;1462us;1364us;1462us;1366us;1462us;1368us;1462us;1370us;1462us;1372us;1462us;1373us;1462us;1374us;1462us;1375us;1462us;1377us;1462us;1378us;1462us;1380us;1462us;1381us;1462us;1383us;1462us;1384us;1462us;1386us;1462us;1387us;1462us;1389us;1462us;1390us;1462us;1392us;1462us;1393us;1462us;1399us;1401us;1400us;1402us;1407us;1462us;1409us;1462us;1411us;1462us;1412us;1462us;1413us;1462us;1416us;1462us;1421us;1462us;1429us;1462us;1430us;1462us;1433us;1462us;1434us;1462us;1452us;1462us;1459us;1462us;1466us;1462us;1473us;1462us;1490us;1462us;1497us;1462us;1498us;1462us;1504us;1462us;1510us;1462us;1511us;1462us;1512us;1462us;1524us;1462us;1530us;1462us;1540us;1462us;1553us;1462us;1555us;1462us;1558us;1462us;1559us;1462us;1565us;1462us;1580us;1569us;1585us;1462us;1590us;1462us;1615us;1462us;1648us;1462us;1657us;1462us;1662us;1462us;1893us;1462us;2053us;1462us;2057us;1462us;155us;65535us;6us;1489us;31us;1489us;117us;1489us;119us;1489us;242us;1489us;256us;1489us;279us;1489us;336us;1489us;340us;1489us;345us;1489us;427us;1489us;432us;1489us;474us;1489us;497us;1489us;531us;1489us;701us;1489us;713us;1489us;774us;1489us;780us;1489us;832us;1489us;836us;1489us;846us;1489us;1047us;1489us;1053us;1489us;1069us;1489us;1071us;1489us;1074us;1489us;1077us;1489us;1096us;1489us;1101us;1489us;1107us;1489us;1110us;1489us;1113us;1489us;1119us;1489us;1123us;1489us;1127us;1489us;1133us;1489us;1135us;1489us;1140us;1489us;1142us;1489us;1144us;1489us;1146us;1489us;1148us;1489us;1150us;1489us;1154us;1489us;1164us;1489us;1171us;1489us;1177us;1489us;1179us;1489us;1184us;1489us;1188us;1489us;1191us;1489us;1195us;1489us;1198us;1489us;1201us;1489us;1203us;1489us;1206us;1489us;1208us;1489us;1257us;1489us;1259us;1489us;1263us;1489us;1265us;1489us;1267us;1489us;1269us;1489us;1271us;1489us;1273us;1489us;1275us;1489us;1277us;1489us;1279us;1489us;1281us;1489us;1283us;1489us;1285us;1489us;1287us;1489us;1289us;1489us;1291us;1489us;1293us;1489us;1295us;1489us;1297us;1489us;1299us;1489us;1301us;1489us;1303us;1489us;1304us;1489us;1305us;1489us;1306us;1489us;1309us;1489us;1319us;1489us;1348us;1489us;1349us;1489us;1353us;1489us;1355us;1489us;1358us;1489us;1359us;1489us;1361us;1489us;1364us;1489us;1366us;1489us;1368us;1489us;1370us;1489us;1372us;1489us;1373us;1489us;1374us;1489us;1375us;1489us;1377us;1489us;1378us;1489us;1380us;1489us;1381us;1489us;1383us;1489us;1384us;1489us;1386us;1489us;1387us;1489us;1389us;1489us;1390us;1489us;1392us;1489us;1393us;1489us;1399us;1489us;1400us;1489us;1407us;1489us;1409us;1489us;1411us;1489us;1412us;1489us;1413us;1489us;1416us;1489us;1421us;1489us;1429us;1489us;1430us;1489us;1433us;1489us;1434us;1489us;1452us;1489us;1459us;1489us;1466us;1489us;1473us;1489us;1490us;1489us;1497us;1489us;1498us;1489us;1504us;1489us;1510us;1489us;1511us;1489us;1512us;1489us;1524us;1489us;1530us;1489us;1540us;1489us;1553us;1489us;1555us;1489us;1558us;1489us;1559us;1489us;1565us;1489us;1580us;1489us;1585us;1489us;1590us;1489us;1615us;1489us;1648us;1489us;1657us;1489us;1662us;1489us;1893us;1489us;2053us;1489us;2057us;1489us;210us;65535us;6us;1487us;31us;1487us;117us;1487us;119us;1487us;242us;1487us;256us;1487us;279us;1487us;336us;1487us;340us;1487us;345us;1487us;424us;966us;427us;1487us;429us;966us;432us;1487us;471us;966us;474us;1487us;497us;1487us;531us;1487us;701us;1487us;713us;1487us;774us;1487us;780us;1487us;829us;966us;832us;1487us;836us;1487us;846us;1487us;892us;966us;911us;966us;914us;966us;915us;966us;920us;966us;921us;966us;924us;966us;926us;966us;927us;966us;936us;966us;940us;966us;941us;966us;943us;966us;945us;966us;948us;966us;950us;966us;956us;966us;960us;966us;962us;966us;964us;966us;972us;966us;975us;966us;986us;966us;994us;966us;1015us;966us;1018us;966us;1024us;966us;1025us;966us;1028us;966us;1029us;966us;1032us;966us;1034us;966us;1035us;966us;1041us;966us;1045us;966us;1047us;1487us;1053us;1487us;1069us;1487us;1071us;1487us;1074us;1487us;1077us;1487us;1095us;966us;1096us;1487us;1100us;966us;1101us;1487us;1107us;1487us;1110us;1487us;1113us;1487us;1119us;1487us;1123us;1487us;1127us;1487us;1133us;1487us;1135us;1487us;1140us;1487us;1142us;1487us;1144us;1487us;1146us;1487us;1148us;1487us;1150us;1487us;1152us;966us;1154us;1487us;1164us;1487us;1171us;1487us;1177us;1487us;1179us;1487us;1183us;966us;1184us;1487us;1188us;1487us;1190us;966us;1191us;1487us;1195us;1487us;1198us;1487us;1201us;1487us;1203us;1487us;1206us;1487us;1208us;1487us;1257us;1487us;1259us;1487us;1263us;1487us;1265us;1487us;1267us;1487us;1269us;1487us;1271us;1487us;1273us;1487us;1275us;1487us;1277us;1487us;1279us;1487us;1281us;1487us;1283us;1487us;1285us;1487us;1287us;1487us;1289us;1487us;1291us;1487us;1293us;1487us;1295us;1487us;1297us;1487us;1299us;1487us;1301us;1487us;1303us;1487us;1304us;1487us;1305us;1487us;1306us;1487us;1309us;1487us;1319us;1487us;1322us;966us;1324us;966us;1330us;966us;1332us;966us;1339us;966us;1341us;966us;1343us;966us;1348us;1487us;1349us;1487us;1353us;1487us;1355us;1487us;1358us;1487us;1359us;1487us;1361us;1487us;1364us;1487us;1366us;1487us;1368us;1487us;1370us;1487us;1372us;1487us;1373us;1487us;1374us;1487us;1375us;1487us;1377us;1487us;1378us;1487us;1380us;1487us;1381us;1487us;1383us;1487us;1384us;1487us;1386us;1487us;1387us;1487us;1389us;1487us;1390us;1487us;1392us;1487us;1393us;1487us;1399us;1487us;1400us;1487us;1407us;1487us;1409us;1487us;1411us;1487us;1412us;1487us;1413us;1487us;1416us;1487us;1421us;1487us;1429us;1487us;1430us;1487us;1433us;1487us;1434us;1487us;1452us;1487us;1459us;1487us;1466us;1487us;1473us;1487us;1490us;1487us;1497us;1487us;1498us;1487us;1504us;1487us;1510us;1487us;1511us;1487us;1512us;1487us;1524us;1487us;1530us;1487us;1540us;1487us;1553us;1487us;1555us;1487us;1558us;1487us;1559us;1487us;1565us;1487us;1580us;1487us;1585us;1487us;1590us;1487us;1615us;1487us;1648us;1487us;1655us;966us;1657us;1487us;1660us;966us;1662us;1487us;1672us;966us;1674us;966us;1893us;1487us;2053us;1487us;2057us;1487us;155us;65535us;6us;1488us;31us;1488us;117us;1488us;119us;1488us;242us;1488us;256us;1488us;279us;1488us;336us;1488us;340us;1488us;345us;1488us;427us;1488us;432us;1488us;474us;1488us;497us;1488us;531us;1488us;701us;1488us;713us;1488us;774us;1488us;780us;1488us;832us;1488us;836us;1488us;846us;1488us;1047us;1488us;1053us;1488us;1069us;1488us;1071us;1488us;1074us;1488us;1077us;1488us;1096us;1488us;1101us;1488us;1107us;1488us;1110us;1488us;1113us;1488us;1119us;1488us;1123us;1488us;1127us;1488us;1133us;1488us;1135us;1488us;1140us;1488us;1142us;1488us;1144us;1488us;1146us;1488us;1148us;1488us;1150us;1488us;1154us;1488us;1164us;1488us;1171us;1488us;1177us;1488us;1179us;1488us;1184us;1488us;1188us;1488us;1191us;1488us;1195us;1488us;1198us;1488us;1201us;1488us;1203us;1488us;1206us;1488us;1208us;1488us;1257us;1488us;1259us;1488us;1263us;1488us;1265us;1488us;1267us;1488us;1269us;1488us;1271us;1488us;1273us;1488us;1275us;1488us;1277us;1488us;1279us;1488us;1281us;1488us;1283us;1488us;1285us;1488us;1287us;1488us;1289us;1488us;1291us;1488us;1293us;1488us;1295us;1488us;1297us;1488us;1299us;1488us;1301us;1488us;1303us;1488us;1304us;1488us;1305us;1488us;1306us;1488us;1309us;1488us;1319us;1488us;1348us;1488us;1349us;1488us;1353us;1488us;1355us;1488us;1358us;1488us;1359us;1488us;1361us;1488us;1364us;1488us;1366us;1488us;1368us;1488us;1370us;1488us;1372us;1488us;1373us;1488us;1374us;1488us;1375us;1488us;1377us;1488us;1378us;1488us;1380us;1488us;1381us;1488us;1383us;1488us;1384us;1488us;1386us;1488us;1387us;1488us;1389us;1488us;1390us;1488us;1392us;1488us;1393us;1488us;1399us;1488us;1400us;1488us;1407us;1488us;1409us;1488us;1411us;1488us;1412us;1488us;1413us;1488us;1416us;1488us;1421us;1488us;1429us;1488us;1430us;1488us;1433us;1488us;1434us;1488us;1452us;1488us;1459us;1488us;1466us;1488us;1473us;1488us;1490us;1488us;1497us;1488us;1498us;1488us;1504us;1488us;1510us;1488us;1511us;1488us;1512us;1488us;1524us;1488us;1530us;1488us;1540us;1488us;1553us;1488us;1555us;1488us;1558us;1488us;1559us;1488us;1565us;1488us;1580us;1488us;1585us;1488us;1590us;1488us;1615us;1488us;1648us;1488us;1657us;1488us;1662us;1488us;1893us;1488us;2053us;1488us;2057us;1488us;155us;65535us;6us;1480us;31us;1480us;117us;1480us;119us;1480us;242us;1480us;256us;1480us;279us;1480us;336us;1480us;340us;1480us;345us;1480us;427us;1480us;432us;1480us;474us;1480us;497us;1480us;531us;1480us;701us;1480us;713us;1480us;774us;1480us;780us;1480us;832us;1480us;836us;1480us;846us;1480us;1047us;1480us;1053us;1480us;1069us;1480us;1071us;1480us;1074us;1480us;1077us;1480us;1096us;1480us;1101us;1480us;1107us;1480us;1110us;1480us;1113us;1480us;1119us;1480us;1123us;1480us;1127us;1480us;1133us;1480us;1135us;1480us;1140us;1480us;1142us;1480us;1144us;1480us;1146us;1480us;1148us;1480us;1150us;1480us;1154us;1480us;1164us;1480us;1171us;1480us;1177us;1480us;1179us;1480us;1184us;1480us;1188us;1480us;1191us;1480us;1195us;1480us;1198us;1480us;1201us;1480us;1203us;1480us;1206us;1480us;1208us;1480us;1257us;1480us;1259us;1480us;1263us;1480us;1265us;1480us;1267us;1480us;1269us;1480us;1271us;1480us;1273us;1480us;1275us;1480us;1277us;1480us;1279us;1480us;1281us;1480us;1283us;1480us;1285us;1480us;1287us;1480us;1289us;1480us;1291us;1480us;1293us;1480us;1295us;1480us;1297us;1480us;1299us;1480us;1301us;1480us;1303us;1480us;1304us;1480us;1305us;1480us;1306us;1480us;1309us;1480us;1319us;1480us;1348us;1480us;1349us;1480us;1353us;1480us;1355us;1480us;1358us;1480us;1359us;1480us;1361us;1480us;1364us;1480us;1366us;1480us;1368us;1480us;1370us;1480us;1372us;1480us;1373us;1480us;1374us;1480us;1375us;1480us;1377us;1480us;1378us;1480us;1380us;1480us;1381us;1480us;1383us;1480us;1384us;1480us;1386us;1480us;1387us;1480us;1389us;1480us;1390us;1480us;1392us;1480us;1393us;1480us;1399us;1480us;1400us;1480us;1407us;1480us;1409us;1480us;1411us;1480us;1412us;1480us;1413us;1480us;1416us;1480us;1421us;1480us;1429us;1480us;1430us;1480us;1433us;1480us;1434us;1480us;1452us;1480us;1459us;1480us;1466us;1480us;1473us;1480us;1490us;1480us;1497us;1480us;1498us;1480us;1504us;1480us;1510us;1480us;1511us;1480us;1512us;1480us;1524us;1480us;1530us;1480us;1540us;1480us;1553us;1480us;1555us;1480us;1558us;1480us;1559us;1480us;1565us;1480us;1580us;1480us;1585us;1480us;1590us;1480us;1615us;1480us;1648us;1480us;1657us;1480us;1662us;1480us;1893us;1480us;2053us;1480us;2057us;1480us;3us;65535us;1510us;1514us;1511us;1514us;1512us;1514us;3us;65535us;1510us;1526us;1511us;1526us;1512us;1526us;1us;65535us;1511us;1536us;155us;65535us;6us;1481us;31us;1481us;117us;1481us;119us;1481us;242us;1481us;256us;1481us;279us;1481us;336us;1481us;340us;1481us;345us;1481us;427us;1481us;432us;1481us;474us;1481us;497us;1481us;531us;1481us;701us;1481us;713us;1481us;774us;1481us;780us;1481us;832us;1481us;836us;1481us;846us;1481us;1047us;1481us;1053us;1481us;1069us;1481us;1071us;1481us;1074us;1481us;1077us;1481us;1096us;1481us;1101us;1481us;1107us;1481us;1110us;1481us;1113us;1481us;1119us;1481us;1123us;1481us;1127us;1481us;1133us;1481us;1135us;1481us;1140us;1481us;1142us;1481us;1144us;1481us;1146us;1481us;1148us;1481us;1150us;1481us;1154us;1481us;1164us;1481us;1171us;1481us;1177us;1481us;1179us;1481us;1184us;1481us;1188us;1481us;1191us;1481us;1195us;1481us;1198us;1481us;1201us;1481us;1203us;1481us;1206us;1481us;1208us;1481us;1257us;1481us;1259us;1481us;1263us;1481us;1265us;1481us;1267us;1481us;1269us;1481us;1271us;1481us;1273us;1481us;1275us;1481us;1277us;1481us;1279us;1481us;1281us;1481us;1283us;1481us;1285us;1481us;1287us;1481us;1289us;1481us;1291us;1481us;1293us;1481us;1295us;1481us;1297us;1481us;1299us;1481us;1301us;1481us;1303us;1481us;1304us;1481us;1305us;1481us;1306us;1481us;1309us;1481us;1319us;1481us;1348us;1481us;1349us;1481us;1353us;1481us;1355us;1481us;1358us;1481us;1359us;1481us;1361us;1481us;1364us;1481us;1366us;1481us;1368us;1481us;1370us;1481us;1372us;1481us;1373us;1481us;1374us;1481us;1375us;1481us;1377us;1481us;1378us;1481us;1380us;1481us;1381us;1481us;1383us;1481us;1384us;1481us;1386us;1481us;1387us;1481us;1389us;1481us;1390us;1481us;1392us;1481us;1393us;1481us;1399us;1481us;1400us;1481us;1407us;1481us;1409us;1481us;1411us;1481us;1412us;1481us;1413us;1481us;1416us;1481us;1421us;1481us;1429us;1481us;1430us;1481us;1433us;1481us;1434us;1481us;1452us;1481us;1459us;1481us;1466us;1481us;1473us;1481us;1490us;1481us;1497us;1481us;1498us;1481us;1504us;1481us;1510us;1481us;1511us;1481us;1512us;1481us;1524us;1481us;1530us;1481us;1540us;1481us;1553us;1481us;1555us;1481us;1558us;1481us;1559us;1481us;1565us;1481us;1580us;1481us;1585us;1481us;1590us;1481us;1615us;1481us;1648us;1481us;1657us;1481us;1662us;1481us;1893us;1481us;2053us;1481us;2057us;1481us;1us;65535us;1540us;1541us;1us;65535us;1452us;1453us;1us;65535us;1504us;1505us;1us;65535us;1540us;1549us;1us;65535us;1161us;1162us;1us;65535us;1152us;1153us;1us;65535us;1152us;1163us;1us;65535us;1245us;1559us;3us;65535us;1510us;1533us;1511us;1533us;1512us;1533us;1us;65535us;1564us;1565us;4us;65535us;336us;337us;340us;341us;345us;346us;1580us;1581us;1us;65535us;1563us;1564us;1us;65535us;1565us;1566us;1us;65535us;1540us;1547us;2us;65535us;1540us;1584us;1648us;1649us;6us;65535us;1582us;1583us;1587us;1588us;1592us;1593us;1596us;1597us;1598us;1599us;1602us;1603us;6us;65535us;1582us;1606us;1587us;1606us;1592us;1606us;1596us;1606us;1598us;1605us;1602us;1606us;3us;65535us;1594us;1614us;1598us;1614us;1606us;1614us;5us;65535us;1581us;1582us;1586us;1587us;1591us;1592us;1595us;1596us;1601us;1602us;3us;65535us;1594us;1595us;1598us;1601us;1606us;1613us;1us;65535us;1540us;1548us;1us;65535us;1540us;1619us;1us;65535us;1641us;1642us;2us;65535us;1619us;1620us;1641us;1626us;1us;65535us;1623us;1624us;4us;65535us;1621us;1622us;1634us;1635us;1636us;1637us;1638us;1639us;5us;65535us;1621us;1636us;1623us;1634us;1634us;1636us;1636us;1636us;1638us;1636us;155us;65535us;6us;1482us;31us;1482us;117us;1482us;119us;1482us;242us;1482us;256us;1482us;279us;1482us;336us;1482us;340us;1482us;345us;1482us;427us;1482us;432us;1482us;474us;1482us;497us;1482us;531us;1482us;701us;1482us;713us;1482us;774us;1482us;780us;1482us;832us;1482us;836us;1482us;846us;1482us;1047us;1482us;1053us;1482us;1069us;1482us;1071us;1482us;1074us;1482us;1077us;1482us;1096us;1482us;1101us;1482us;1107us;1482us;1110us;1482us;1113us;1482us;1119us;1482us;1123us;1482us;1127us;1482us;1133us;1482us;1135us;1482us;1140us;1482us;1142us;1482us;1144us;1482us;1146us;1482us;1148us;1482us;1150us;1482us;1154us;1482us;1164us;1482us;1171us;1482us;1177us;1482us;1179us;1482us;1184us;1482us;1188us;1482us;1191us;1482us;1195us;1482us;1198us;1482us;1201us;1482us;1203us;1482us;1206us;1482us;1208us;1482us;1257us;1482us;1259us;1482us;1263us;1482us;1265us;1482us;1267us;1482us;1269us;1482us;1271us;1482us;1273us;1482us;1275us;1482us;1277us;1482us;1279us;1482us;1281us;1482us;1283us;1482us;1285us;1482us;1287us;1482us;1289us;1482us;1291us;1482us;1293us;1482us;1295us;1482us;1297us;1482us;1299us;1482us;1301us;1482us;1303us;1482us;1304us;1482us;1305us;1482us;1306us;1482us;1309us;1482us;1319us;1482us;1348us;1482us;1349us;1482us;1353us;1482us;1355us;1482us;1358us;1482us;1359us;1482us;1361us;1482us;1364us;1482us;1366us;1482us;1368us;1482us;1370us;1482us;1372us;1482us;1373us;1482us;1374us;1482us;1375us;1482us;1377us;1482us;1378us;1482us;1380us;1482us;1381us;1482us;1383us;1482us;1384us;1482us;1386us;1482us;1387us;1482us;1389us;1482us;1390us;1482us;1392us;1482us;1393us;1482us;1399us;1482us;1400us;1482us;1407us;1482us;1409us;1482us;1411us;1482us;1412us;1482us;1413us;1482us;1416us;1482us;1421us;1482us;1429us;1482us;1430us;1482us;1433us;1482us;1434us;1482us;1452us;1482us;1459us;1482us;1466us;1482us;1473us;1482us;1490us;1482us;1497us;1482us;1498us;1482us;1504us;1482us;1510us;1482us;1511us;1482us;1512us;1482us;1524us;1482us;1530us;1482us;1540us;1482us;1553us;1482us;1555us;1482us;1558us;1482us;1559us;1482us;1565us;1482us;1580us;1482us;1585us;1482us;1590us;1482us;1615us;1482us;1648us;1482us;1657us;1482us;1662us;1482us;1893us;1482us;2053us;1482us;2057us;1482us;157us;65535us;6us;1647us;31us;1647us;117us;1647us;119us;1647us;242us;1647us;256us;1647us;279us;1647us;336us;1647us;340us;1647us;345us;1647us;427us;1647us;432us;1647us;474us;1647us;497us;1647us;531us;1647us;701us;1647us;713us;1647us;774us;1647us;780us;1647us;832us;1647us;836us;1647us;846us;1647us;1047us;1647us;1053us;1647us;1069us;1647us;1071us;1647us;1074us;1647us;1077us;1647us;1096us;1647us;1101us;1647us;1107us;1647us;1110us;1647us;1113us;1647us;1119us;1647us;1123us;1647us;1127us;1647us;1133us;1647us;1135us;1647us;1140us;1647us;1142us;1647us;1144us;1647us;1146us;1647us;1148us;1647us;1150us;1647us;1154us;1647us;1164us;1647us;1171us;1647us;1177us;1647us;1179us;1647us;1184us;1647us;1188us;1647us;1191us;1647us;1195us;1647us;1198us;1647us;1201us;1647us;1203us;1647us;1206us;1647us;1208us;1647us;1257us;1647us;1259us;1647us;1263us;1647us;1265us;1647us;1267us;1647us;1269us;1647us;1271us;1647us;1273us;1647us;1275us;1647us;1277us;1647us;1279us;1647us;1281us;1647us;1283us;1647us;1285us;1647us;1287us;1647us;1289us;1647us;1291us;1647us;1293us;1647us;1295us;1647us;1297us;1647us;1299us;1647us;1301us;1647us;1303us;1647us;1304us;1647us;1305us;1647us;1306us;1647us;1309us;1647us;1319us;1647us;1348us;1647us;1349us;1647us;1353us;1647us;1355us;1647us;1358us;1647us;1359us;1647us;1361us;1647us;1364us;1647us;1366us;1647us;1368us;1647us;1370us;1647us;1372us;1647us;1373us;1647us;1374us;1647us;1375us;1647us;1377us;1647us;1378us;1647us;1380us;1647us;1381us;1647us;1383us;1647us;1384us;1647us;1386us;1647us;1387us;1647us;1389us;1647us;1390us;1647us;1392us;1647us;1393us;1647us;1399us;1647us;1400us;1647us;1407us;1647us;1409us;1647us;1411us;1647us;1412us;1647us;1413us;1647us;1416us;1647us;1421us;1647us;1429us;1647us;1430us;1647us;1433us;1647us;1434us;1647us;1452us;1647us;1458us;1646us;1459us;1647us;1466us;1647us;1473us;1647us;1490us;1647us;1497us;1647us;1498us;1647us;1504us;1647us;1510us;1647us;1511us;1647us;1512us;1647us;1524us;1647us;1530us;1647us;1540us;1647us;1553us;1647us;1555us;1647us;1558us;1647us;1559us;1647us;1565us;1647us;1580us;1647us;1585us;1647us;1590us;1647us;1615us;1647us;1645us;1646us;1648us;1647us;1657us;1647us;1662us;1647us;1893us;1647us;2053us;1647us;2057us;1647us;116us;65535us;6us;1118us;31us;1118us;117us;1118us;119us;1118us;242us;1118us;256us;1118us;279us;1118us;427us;1118us;432us;1118us;474us;1118us;497us;1118us;774us;1118us;780us;1118us;832us;1118us;836us;1118us;846us;1118us;1047us;1118us;1053us;1118us;1069us;1118us;1071us;1118us;1074us;1118us;1077us;1118us;1096us;1118us;1101us;1118us;1107us;1118us;1110us;1118us;1113us;1118us;1119us;1118us;1123us;1118us;1127us;1118us;1133us;1118us;1135us;1118us;1140us;1118us;1142us;1118us;1144us;1118us;1146us;1118us;1148us;1118us;1150us;1118us;1154us;1118us;1164us;1118us;1171us;1118us;1177us;1118us;1179us;1118us;1184us;1118us;1188us;1118us;1191us;1118us;1195us;1118us;1198us;1118us;1201us;1118us;1203us;1118us;1206us;1118us;1208us;1118us;1257us;1118us;1259us;1118us;1263us;1118us;1265us;1118us;1267us;1118us;1269us;1118us;1271us;1118us;1273us;1118us;1275us;1118us;1277us;1118us;1279us;1118us;1281us;1118us;1283us;1118us;1285us;1118us;1287us;1118us;1289us;1118us;1291us;1118us;1293us;1118us;1295us;1118us;1297us;1118us;1299us;1118us;1301us;1118us;1303us;1118us;1304us;1118us;1305us;1118us;1306us;1118us;1309us;1118us;1319us;1118us;1348us;1118us;1349us;1118us;1353us;1118us;1355us;1118us;1358us;1118us;1359us;1118us;1361us;1118us;1364us;1118us;1366us;1118us;1368us;1118us;1370us;1118us;1452us;1118us;1459us;1118us;1466us;1118us;1473us;1118us;1490us;1118us;1497us;1118us;1498us;1118us;1504us;1118us;1510us;1118us;1511us;1118us;1512us;1118us;1524us;1118us;1530us;1118us;1540us;1118us;1553us;1118us;1555us;1118us;1558us;1118us;1559us;1118us;1585us;1118us;1590us;1118us;1615us;1118us;1657us;1118us;1662us;1118us;2053us;1118us;2057us;1118us;116us;65535us;6us;1117us;31us;1117us;117us;1117us;119us;1117us;242us;1117us;256us;1117us;279us;1117us;427us;1117us;432us;1117us;474us;1117us;497us;1117us;774us;1117us;780us;1117us;832us;1117us;836us;1117us;846us;1117us;1047us;1117us;1053us;1117us;1069us;1117us;1071us;1117us;1074us;1117us;1077us;1117us;1096us;1117us;1101us;1117us;1107us;1117us;1110us;1117us;1113us;1117us;1119us;1117us;1123us;1117us;1127us;1117us;1133us;1117us;1135us;1117us;1140us;1117us;1142us;1117us;1144us;1117us;1146us;1117us;1148us;1117us;1150us;1117us;1154us;1117us;1164us;1117us;1171us;1117us;1177us;1117us;1179us;1117us;1184us;1117us;1188us;1117us;1191us;1117us;1195us;1117us;1198us;1117us;1201us;1117us;1203us;1117us;1206us;1117us;1208us;1117us;1257us;1117us;1259us;1117us;1263us;1117us;1265us;1117us;1267us;1117us;1269us;1117us;1271us;1117us;1273us;1117us;1275us;1117us;1277us;1117us;1279us;1117us;1281us;1117us;1283us;1117us;1285us;1117us;1287us;1117us;1289us;1117us;1291us;1117us;1293us;1117us;1295us;1117us;1297us;1117us;1299us;1117us;1301us;1117us;1303us;1117us;1304us;1117us;1305us;1117us;1306us;1117us;1309us;1117us;1319us;1117us;1348us;1117us;1349us;1117us;1353us;1117us;1355us;1117us;1358us;1117us;1359us;1117us;1361us;1117us;1364us;1117us;1366us;1117us;1368us;1117us;1370us;1117us;1452us;1117us;1459us;1117us;1466us;1117us;1473us;1117us;1490us;1117us;1497us;1117us;1498us;1117us;1504us;1117us;1510us;1117us;1511us;1117us;1512us;1117us;1524us;1117us;1530us;1117us;1540us;1117us;1553us;1117us;1555us;1117us;1558us;1117us;1559us;1117us;1585us;1117us;1590us;1117us;1615us;1117us;1657us;1117us;1662us;1117us;2053us;1117us;2057us;1117us;2us;65535us;1021us;1022us;1063us;1064us;5us;65535us;114us;115us;187us;188us;204us;205us;460us;461us;1681us;1682us;3us;65535us;425us;426us;430us;431us;830us;831us;10us;65535us;114us;1679us;152us;153us;187us;1679us;204us;1679us;390us;391us;460us;1679us;699us;700us;722us;723us;1681us;1679us;1685us;1686us;10us;65535us;114us;1684us;152us;1684us;187us;1684us;204us;1684us;390us;1684us;460us;1684us;699us;1684us;722us;1684us;1681us;1684us;1685us;1684us;4us;65535us;1689us;1690us;1692us;1693us;1695us;1696us;1698us;1699us;14us;65535us;114us;1688us;152us;1688us;187us;1688us;204us;1688us;390us;1688us;460us;1688us;699us;1688us;722us;1688us;1681us;1688us;1685us;1688us;1689us;1694us;1692us;1694us;1695us;1694us;1698us;1694us;11us;65535us;690us;739us;692us;739us;695us;739us;719us;739us;725us;739us;728us;739us;731us;739us;734us;738us;765us;739us;1722us;1723us;1725us;1726us;33us;65535us;8us;1733us;181us;572us;444us;572us;487us;488us;503us;504us;567us;572us;575us;1878us;650us;651us;653us;654us;664us;1878us;751us;752us;852us;853us;1021us;1677us;1063us;1677us;1248us;1249us;1251us;1252us;1254us;1255us;1571us;1572us;1574us;1575us;1576us;1878us;1728us;1729us;1731us;1732us;1774us;1878us;1780us;1878us;1786us;1787us;1789us;1790us;1856us;1921us;1860us;1921us;1866us;1878us;1876us;1877us;1909us;1921us;1911us;1921us;1922us;1923us;1us;65535us;8us;9us;33us;65535us;8us;1727us;181us;1727us;444us;1727us;487us;1727us;503us;1727us;567us;1727us;575us;1727us;650us;1727us;653us;1727us;664us;1727us;751us;1727us;852us;1727us;1021us;1727us;1063us;1727us;1248us;1727us;1251us;1727us;1254us;1727us;1571us;1727us;1574us;1727us;1576us;1727us;1728us;1727us;1731us;1727us;1774us;1727us;1780us;1727us;1786us;1727us;1789us;1727us;1856us;1727us;1860us;1727us;1866us;1727us;1876us;1727us;1909us;1727us;1911us;1727us;1922us;1727us;11us;65535us;1737us;1738us;1740us;1742us;1741us;1742us;1743us;1745us;1744us;1745us;1747us;1748us;1751us;1752us;1754us;1755us;1756us;1757us;1759us;1760us;1884us;1885us;86us;65535us;8us;1785us;114us;1785us;152us;1785us;181us;1785us;187us;1785us;191us;1785us;193us;1785us;204us;1785us;295us;1785us;390us;1785us;444us;1785us;451us;1785us;460us;1785us;487us;1785us;503us;1785us;567us;1785us;575us;1785us;634us;1785us;638us;1785us;650us;1785us;653us;1785us;664us;1785us;675us;1785us;690us;1785us;692us;1785us;695us;1785us;699us;1785us;719us;1785us;722us;1785us;725us;1785us;728us;1785us;731us;1785us;734us;1785us;751us;1785us;765us;1785us;852us;1785us;1021us;1785us;1063us;1785us;1248us;1785us;1251us;1785us;1254us;1785us;1538us;1785us;1571us;1785us;1574us;1785us;1576us;1785us;1640us;1785us;1678us;1785us;1680us;1785us;1681us;1785us;1685us;1785us;1689us;1785us;1692us;1785us;1695us;1785us;1698us;1785us;1700us;1785us;1702us;1785us;1707us;1785us;1711us;1785us;1716us;1785us;1722us;1785us;1725us;1785us;1728us;1785us;1731us;1785us;1737us;1785us;1740us;1785us;1741us;1785us;1743us;1785us;1744us;1785us;1747us;1785us;1751us;1785us;1754us;1785us;1756us;1785us;1759us;1785us;1774us;1785us;1780us;1785us;1786us;1785us;1789us;1785us;1856us;1785us;1860us;1785us;1866us;1785us;1876us;1785us;1882us;1785us;1884us;1785us;1909us;1785us;1911us;1785us;1922us;1785us;111us;65535us;8us;1768us;114us;1768us;152us;1768us;181us;1768us;187us;1768us;191us;1768us;192us;1767us;193us;1768us;194us;1767us;204us;1768us;295us;1768us;296us;1767us;390us;1768us;444us;1768us;451us;1768us;452us;1767us;460us;1768us;487us;1768us;503us;1768us;528us;1768us;567us;1768us;575us;1768us;576us;1768us;619us;1768us;632us;1768us;634us;1768us;638us;1768us;643us;1768us;650us;1768us;653us;1768us;664us;1768us;674us;1767us;675us;1768us;676us;1767us;677us;1767us;690us;1768us;692us;1768us;695us;1768us;699us;1768us;719us;1768us;722us;1768us;725us;1768us;728us;1768us;731us;1768us;734us;1768us;751us;1768us;765us;1768us;852us;1768us;952us;1768us;1021us;1768us;1063us;1768us;1248us;1768us;1251us;1768us;1254us;1768us;1395us;1768us;1396us;1768us;1538us;1768us;1571us;1768us;1574us;1768us;1576us;1768us;1578us;1768us;1640us;1768us;1641us;1767us;1678us;1768us;1680us;1768us;1681us;1768us;1685us;1768us;1689us;1768us;1692us;1768us;1695us;1768us;1698us;1768us;1700us;1768us;1702us;1768us;1707us;1768us;1711us;1768us;1716us;1768us;1719us;1767us;1720us;1767us;1721us;1767us;1722us;1768us;1725us;1768us;1728us;1768us;1731us;1768us;1737us;1768us;1740us;1768us;1741us;1768us;1743us;1768us;1744us;1768us;1747us;1768us;1751us;1768us;1754us;1768us;1756us;1768us;1759us;1768us;1762us;1768us;1764us;1768us;1771us;1767us;1774us;1768us;1780us;1768us;1782us;1767us;1786us;1768us;1789us;1768us;1856us;1768us;1860us;1768us;1866us;1768us;1868us;1767us;1876us;1768us;1882us;1768us;1884us;1768us;1909us;1768us;1911us;1768us;1922us;1768us;111us;65535us;8us;1874us;114us;1874us;152us;1874us;181us;1874us;187us;1874us;191us;1874us;192us;1779us;193us;1874us;194us;1779us;204us;1874us;295us;1874us;296us;1779us;390us;1874us;444us;1874us;451us;1874us;452us;1779us;460us;1874us;487us;1874us;503us;1874us;528us;1874us;567us;1874us;575us;1874us;576us;1874us;619us;1874us;632us;1874us;634us;1874us;638us;1874us;643us;1874us;650us;1874us;653us;1874us;664us;1874us;674us;1779us;675us;1874us;676us;1779us;677us;1779us;690us;1874us;692us;1874us;695us;1874us;699us;1874us;719us;1874us;722us;1874us;725us;1874us;728us;1874us;731us;1874us;734us;1874us;751us;1874us;765us;1874us;852us;1874us;952us;1874us;1021us;1874us;1063us;1874us;1248us;1874us;1251us;1874us;1254us;1874us;1395us;1874us;1396us;1874us;1538us;1874us;1571us;1874us;1574us;1874us;1576us;1874us;1578us;1874us;1640us;1874us;1641us;1779us;1678us;1874us;1680us;1874us;1681us;1874us;1685us;1874us;1689us;1874us;1692us;1874us;1695us;1874us;1698us;1874us;1700us;1874us;1702us;1874us;1707us;1874us;1711us;1874us;1716us;1874us;1719us;1779us;1720us;1779us;1721us;1779us;1722us;1874us;1725us;1874us;1728us;1874us;1731us;1874us;1737us;1874us;1740us;1874us;1741us;1874us;1743us;1874us;1744us;1874us;1747us;1874us;1751us;1874us;1754us;1874us;1756us;1874us;1759us;1874us;1762us;1874us;1764us;1874us;1771us;1779us;1774us;1874us;1780us;1874us;1782us;1783us;1786us;1874us;1789us;1874us;1856us;1874us;1860us;1874us;1866us;1874us;1868us;1869us;1876us;1874us;1882us;1874us;1884us;1874us;1909us;1874us;1911us;1874us;1922us;1874us;65us;65535us;8us;1735us;114us;1710us;152us;1710us;181us;1735us;187us;1710us;204us;1710us;390us;1710us;444us;1735us;460us;1710us;487us;1735us;503us;1735us;567us;1735us;575us;1735us;650us;1735us;653us;1735us;664us;1735us;699us;1710us;722us;1710us;751us;1735us;852us;1735us;1021us;1735us;1063us;1735us;1248us;1735us;1251us;1735us;1254us;1735us;1538us;1539us;1571us;1735us;1574us;1735us;1576us;1735us;1681us;1710us;1685us;1710us;1689us;1710us;1692us;1710us;1695us;1710us;1698us;1710us;1700us;1701us;1702us;1703us;1707us;1708us;1711us;1712us;1716us;1717us;1728us;1735us;1731us;1735us;1737us;1750us;1740us;1750us;1741us;1750us;1743us;1750us;1744us;1750us;1747us;1750us;1751us;1750us;1754us;1750us;1756us;1750us;1759us;1750us;1774us;1736us;1780us;1735us;1786us;1735us;1789us;1735us;1856us;1735us;1860us;1735us;1866us;1735us;1876us;1735us;1882us;1883us;1884us;1750us;1909us;1735us;1911us;1735us;1922us;1735us;9us;65535us;690us;737us;692us;737us;695us;737us;719us;737us;725us;737us;728us;737us;731us;737us;734us;735us;765us;737us;86us;65535us;8us;1771us;114us;1771us;152us;1771us;181us;1771us;187us;1771us;191us;192us;193us;194us;204us;1771us;295us;296us;390us;1771us;444us;1771us;451us;452us;460us;1771us;487us;1771us;503us;1771us;567us;1771us;575us;1771us;634us;674us;638us;674us;650us;1771us;653us;1771us;664us;677us;675us;676us;690us;1720us;692us;1720us;695us;1720us;699us;1771us;719us;1720us;722us;1771us;725us;1720us;728us;1720us;731us;1720us;734us;1720us;751us;1771us;765us;1720us;852us;1771us;1021us;1771us;1063us;1771us;1248us;1771us;1251us;1771us;1254us;1771us;1538us;1771us;1571us;1771us;1574us;1771us;1576us;1771us;1640us;1641us;1678us;674us;1680us;674us;1681us;1771us;1685us;1771us;1689us;1771us;1692us;1771us;1695us;1771us;1698us;1771us;1700us;1771us;1702us;1771us;1707us;1771us;1711us;1771us;1716us;1771us;1722us;1719us;1725us;1721us;1728us;1771us;1731us;1771us;1737us;1771us;1740us;1771us;1741us;1771us;1743us;1771us;1744us;1771us;1747us;1771us;1751us;1771us;1754us;1771us;1756us;1771us;1759us;1771us;1774us;1771us;1780us;1771us;1786us;1771us;1789us;1771us;1856us;1771us;1860us;1771us;1866us;1771us;1876us;1771us;1882us;1771us;1884us;1771us;1909us;1771us;1911us;1771us;1922us;1771us;13us;65535us;192us;1776us;194us;1776us;296us;1776us;452us;1776us;674us;1776us;676us;1776us;677us;1776us;1641us;1776us;1719us;1776us;1720us;1776us;1721us;1776us;1771us;1776us;1777us;1778us;6us;65535us;575us;1781us;664us;1781us;1576us;1781us;1774us;1781us;1780us;1781us;1866us;1867us;2us;65535us;1857us;1858us;1912us;1859us;86us;65535us;8us;1784us;114us;1784us;152us;1784us;181us;1784us;187us;1784us;191us;1784us;193us;1784us;204us;1784us;295us;1784us;390us;1784us;444us;1784us;451us;1784us;460us;1784us;487us;1784us;503us;1784us;567us;1784us;575us;1784us;634us;1784us;638us;1784us;650us;1784us;653us;1784us;664us;1784us;675us;1784us;690us;1784us;692us;1784us;695us;1784us;699us;1784us;719us;1784us;722us;1784us;725us;1784us;728us;1784us;731us;1784us;734us;1784us;751us;1784us;765us;1784us;852us;1784us;1021us;1784us;1063us;1784us;1248us;1784us;1251us;1784us;1254us;1784us;1538us;1784us;1571us;1784us;1574us;1784us;1576us;1784us;1640us;1784us;1678us;1784us;1680us;1784us;1681us;1784us;1685us;1784us;1689us;1784us;1692us;1784us;1695us;1784us;1698us;1784us;1700us;1784us;1702us;1784us;1707us;1784us;1711us;1784us;1716us;1784us;1722us;1784us;1725us;1784us;1728us;1784us;1731us;1784us;1737us;1784us;1740us;1784us;1741us;1784us;1743us;1784us;1744us;1784us;1747us;1784us;1751us;1784us;1754us;1784us;1756us;1784us;1759us;1784us;1774us;1784us;1780us;1784us;1786us;1784us;1789us;1784us;1856us;1784us;1860us;1784us;1866us;1784us;1876us;1784us;1882us;1784us;1884us;1784us;1909us;1784us;1911us;1784us;1922us;1784us;4us;65535us;528us;529us;1395us;1397us;1396us;1398us;1578us;1579us;87us;65535us;8us;1863us;114us;1863us;152us;1863us;181us;1863us;187us;1863us;191us;1863us;193us;1863us;204us;1863us;295us;1863us;390us;1863us;444us;1863us;451us;1863us;460us;1863us;487us;1863us;503us;1863us;567us;1863us;575us;1863us;634us;1863us;638us;1863us;650us;1863us;653us;1863us;664us;1863us;675us;1863us;690us;1863us;692us;1863us;695us;1863us;699us;1863us;719us;1863us;722us;1863us;725us;1863us;728us;1863us;731us;1863us;734us;1863us;751us;1863us;765us;1863us;852us;1863us;952us;953us;1021us;1863us;1063us;1863us;1248us;1863us;1251us;1863us;1254us;1863us;1538us;1863us;1571us;1863us;1574us;1863us;1576us;1863us;1640us;1863us;1678us;1863us;1680us;1863us;1681us;1863us;1685us;1863us;1689us;1863us;1692us;1863us;1695us;1863us;1698us;1863us;1700us;1863us;1702us;1863us;1707us;1863us;1711us;1863us;1716us;1863us;1722us;1863us;1725us;1863us;1728us;1863us;1731us;1863us;1737us;1863us;1740us;1863us;1741us;1863us;1743us;1863us;1744us;1863us;1747us;1863us;1751us;1863us;1754us;1863us;1756us;1863us;1759us;1863us;1774us;1863us;1780us;1863us;1786us;1863us;1789us;1863us;1856us;1863us;1860us;1863us;1866us;1863us;1876us;1863us;1882us;1863us;1884us;1863us;1909us;1863us;1911us;1863us;1922us;1863us;97us;65535us;8us;1871us;114us;1871us;152us;1871us;181us;1871us;187us;1871us;191us;1871us;193us;1871us;204us;1871us;295us;1871us;390us;1871us;444us;1871us;451us;1871us;460us;1871us;487us;1871us;503us;1871us;528us;1870us;567us;1871us;575us;1871us;576us;633us;619us;647us;632us;633us;634us;1871us;638us;1871us;643us;645us;650us;1871us;653us;1871us;664us;1871us;675us;1871us;690us;1871us;692us;1871us;695us;1871us;699us;1871us;719us;1871us;722us;1871us;725us;1871us;728us;1871us;731us;1871us;734us;1871us;751us;1871us;765us;1871us;852us;1871us;952us;1871us;1021us;1871us;1063us;1871us;1248us;1871us;1251us;1871us;1254us;1871us;1395us;1870us;1396us;1870us;1538us;1871us;1571us;1871us;1574us;1871us;1576us;1871us;1578us;1870us;1640us;1871us;1678us;1871us;1680us;1871us;1681us;1871us;1685us;1871us;1689us;1871us;1692us;1871us;1695us;1871us;1698us;1871us;1700us;1871us;1702us;1871us;1707us;1871us;1711us;1871us;1716us;1871us;1722us;1871us;1725us;1871us;1728us;1871us;1731us;1871us;1737us;1871us;1740us;1871us;1741us;1871us;1743us;1871us;1744us;1871us;1747us;1871us;1751us;1871us;1754us;1871us;1756us;1871us;1759us;1871us;1762us;647us;1764us;647us;1774us;1871us;1780us;1871us;1786us;1871us;1789us;1871us;1856us;1871us;1860us;1871us;1866us;1871us;1876us;1871us;1882us;1871us;1884us;1871us;1909us;1871us;1911us;1871us;1922us;1871us;4us;65535us;657us;673us;671us;672us;1768us;1900us;1902us;1903us;6us;65535us;657us;1906us;671us;1906us;1431us;1432us;1768us;1906us;1902us;1906us;1907us;1908us;10us;65535us;575us;1855us;664us;1855us;1576us;1855us;1774us;1855us;1780us;1855us;1856us;1857us;1860us;1861us;1866us;1855us;1909us;1916us;1911us;1924us;2us;65535us;1909us;1910us;1911us;1912us;3us;65535us;1860us;1862us;1909us;1925us;1911us;1925us;1us;65535us;888us;889us;6us;65535us;1926us;1936us;1933us;1936us;1940us;1936us;1946us;1936us;1947us;1936us;1948us;1936us;6us;65535us;1926us;1940us;1933us;1940us;1940us;1940us;1946us;1940us;1947us;1940us;1948us;1940us;6us;65535us;1926us;1942us;1933us;1942us;1940us;1941us;1946us;1942us;1947us;1942us;1948us;1942us;5us;65535us;1926us;1927us;1933us;1934us;1946us;1943us;1947us;1944us;1948us;1945us;125us;65535us;8us;1761us;114us;1761us;152us;1761us;181us;1761us;187us;1761us;191us;1761us;192us;1766us;193us;1761us;194us;1766us;204us;1761us;295us;1761us;296us;1766us;390us;1761us;444us;1761us;451us;1761us;452us;1766us;460us;1761us;487us;1761us;503us;1761us;528us;1766us;567us;1761us;575us;1761us;576us;1766us;601us;607us;617us;618us;619us;1766us;632us;1766us;634us;652us;638us;652us;643us;1766us;648us;649us;650us;1761us;653us;1761us;664us;1761us;674us;1766us;675us;1761us;676us;1766us;677us;1766us;690us;1761us;692us;1761us;695us;1761us;699us;1761us;719us;1761us;722us;1761us;725us;1761us;728us;1761us;731us;1761us;734us;1761us;751us;1761us;765us;1761us;844us;851us;848us;851us;852us;1761us;952us;1766us;1021us;1761us;1063us;1761us;1248us;1761us;1251us;1761us;1254us;1761us;1395us;1766us;1396us;1766us;1510us;1534us;1511us;1535us;1512us;1534us;1538us;1761us;1571us;1761us;1574us;1761us;1576us;1761us;1578us;1766us;1640us;1761us;1641us;1766us;1678us;652us;1680us;652us;1681us;1761us;1685us;1761us;1689us;1761us;1692us;1761us;1695us;1761us;1698us;1761us;1700us;1761us;1702us;1761us;1707us;1761us;1711us;1761us;1716us;1761us;1719us;1766us;1720us;1766us;1721us;1766us;1722us;1761us;1725us;1761us;1728us;1761us;1731us;1761us;1737us;1761us;1740us;1761us;1741us;1761us;1743us;1761us;1744us;1761us;1747us;1761us;1751us;1761us;1754us;1761us;1756us;1761us;1759us;1761us;1762us;1766us;1764us;1766us;1771us;1766us;1774us;1761us;1780us;1761us;1782us;1766us;1786us;1761us;1789us;1761us;1856us;1761us;1860us;1761us;1866us;1761us;1868us;1766us;1876us;1761us;1882us;1761us;1884us;1761us;1909us;1761us;1911us;1761us;1922us;1761us;1926us;1932us;1933us;1932us;1940us;1932us;1946us;1932us;1947us;1932us;1948us;1932us;379us;65535us;6us;2012us;8us;1957us;31us;2012us;40us;2006us;56us;1957us;61us;1957us;98us;1957us;111us;2004us;114us;1957us;117us;2012us;119us;2012us;123us;1957us;152us;1957us;181us;711us;184us;2004us;187us;1957us;191us;1957us;192us;1957us;193us;1957us;194us;1957us;204us;1957us;212us;2004us;215us;2004us;242us;2012us;256us;2012us;279us;2012us;286us;1957us;292us;1957us;295us;1957us;296us;1957us;322us;351us;333us;351us;338us;1957us;342us;1957us;390us;1957us;424us;2006us;427us;2012us;429us;2006us;432us;2012us;444us;711us;451us;1957us;452us;1957us;457us;2004us;460us;1957us;471us;2006us;474us;2012us;485us;486us;487us;1957us;494us;495us;497us;2012us;503us;1957us;507us;2006us;510us;2006us;513us;2006us;515us;2006us;528us;1957us;536us;537us;540us;541us;567us;711us;575us;1957us;576us;1957us;601us;1957us;603us;1957us;619us;1957us;632us;1957us;634us;1957us;638us;1957us;643us;1957us;650us;1957us;653us;1957us;664us;1957us;674us;1957us;675us;1957us;676us;1957us;677us;1957us;689us;2004us;690us;733us;692us;733us;695us;733us;699us;1957us;701us;2012us;713us;2012us;719us;733us;722us;1957us;725us;733us;728us;733us;731us;733us;734us;1957us;749us;750us;751us;1957us;760us;764us;765us;733us;768us;1957us;774us;2012us;780us;2012us;792us;793us;804us;1957us;805us;806us;819us;1957us;829us;2006us;832us;2012us;836us;2012us;846us;2012us;852us;1957us;892us;2006us;911us;2006us;914us;2006us;915us;2006us;920us;2006us;921us;2006us;924us;2006us;926us;2006us;927us;2006us;930us;934us;932us;934us;936us;2006us;940us;2006us;941us;2006us;943us;2006us;945us;2006us;948us;2006us;950us;2006us;952us;1957us;956us;935us;960us;2006us;962us;2006us;964us;2006us;967us;1957us;972us;2006us;975us;2006us;978us;980us;979us;980us;986us;2006us;994us;2006us;1015us;2006us;1018us;2006us;1021us;1957us;1024us;2006us;1025us;2006us;1028us;2006us;1029us;2006us;1032us;2006us;1034us;2006us;1035us;2006us;1038us;1957us;1041us;2006us;1045us;2006us;1047us;2012us;1053us;2012us;1063us;1957us;1069us;2012us;1071us;2012us;1074us;2012us;1077us;2012us;1095us;2006us;1096us;2012us;1100us;2006us;1101us;2012us;1107us;2012us;1110us;2012us;1113us;2012us;1119us;2012us;1123us;2012us;1127us;2012us;1133us;2012us;1135us;2012us;1140us;2012us;1142us;2012us;1144us;2012us;1146us;2012us;1148us;2012us;1150us;2012us;1152us;2006us;1154us;2012us;1164us;2012us;1171us;2012us;1177us;2012us;1179us;2012us;1183us;2006us;1184us;2012us;1188us;2012us;1190us;2006us;1191us;2012us;1195us;2012us;1198us;2012us;1201us;2012us;1203us;2012us;1206us;2012us;1208us;2012us;1248us;1957us;1251us;1957us;1254us;1957us;1257us;2012us;1259us;2012us;1263us;2012us;1265us;2012us;1267us;2012us;1269us;2012us;1271us;2012us;1273us;2012us;1275us;2012us;1277us;2012us;1279us;2012us;1281us;2012us;1283us;2012us;1285us;2012us;1287us;2012us;1289us;2012us;1291us;2012us;1293us;2012us;1295us;2012us;1297us;2012us;1299us;2012us;1301us;2012us;1303us;2012us;1304us;2012us;1305us;2012us;1306us;2012us;1309us;2012us;1319us;2012us;1322us;2006us;1324us;2006us;1330us;2006us;1332us;2006us;1339us;2006us;1341us;2006us;1343us;2006us;1348us;2012us;1349us;2012us;1353us;2012us;1355us;2012us;1358us;2012us;1359us;2012us;1361us;2012us;1364us;2012us;1366us;2012us;1368us;2012us;1370us;2012us;1372us;2012us;1373us;1954us;1374us;1954us;1375us;2012us;1377us;2012us;1378us;2012us;1380us;2012us;1381us;2012us;1383us;2012us;1384us;2012us;1386us;2012us;1387us;2012us;1389us;2012us;1390us;2012us;1392us;2012us;1393us;2012us;1395us;1957us;1396us;1957us;1403us;2004us;1407us;2012us;1409us;2012us;1411us;2012us;1412us;2012us;1413us;2012us;1416us;2012us;1421us;2012us;1429us;2012us;1430us;2012us;1433us;2012us;1434us;2012us;1435us;1437us;1436us;1438us;1440us;2004us;1443us;2004us;1445us;2004us;1446us;2004us;1452us;2012us;1459us;2012us;1466us;2012us;1473us;2012us;1490us;2012us;1497us;2012us;1498us;2012us;1504us;2012us;1510us;2012us;1511us;2012us;1512us;2012us;1524us;2012us;1530us;2012us;1538us;1957us;1540us;2012us;1553us;2012us;1555us;2012us;1558us;2012us;1559us;2012us;1565us;2012us;1571us;1957us;1574us;1957us;1576us;1957us;1578us;1957us;1585us;2012us;1590us;2012us;1594us;1957us;1598us;1957us;1606us;1957us;1615us;2012us;1640us;1957us;1641us;1957us;1648us;2012us;1655us;2006us;1657us;2012us;1660us;2006us;1662us;2012us;1672us;2006us;1674us;2006us;1678us;1957us;1680us;1957us;1681us;1957us;1685us;1957us;1689us;1957us;1692us;1957us;1695us;1957us;1698us;1957us;1700us;1957us;1702us;1957us;1705us;1706us;1707us;1957us;1711us;1957us;1714us;1715us;1716us;1957us;1719us;1957us;1720us;1957us;1721us;1957us;1722us;1957us;1725us;1957us;1728us;1957us;1731us;1957us;1737us;1957us;1740us;1957us;1741us;1957us;1743us;1957us;1744us;1957us;1747us;1957us;1751us;1957us;1754us;1957us;1756us;1957us;1759us;1957us;1762us;1957us;1764us;1957us;1771us;1957us;1774us;1957us;1780us;1957us;1782us;1957us;1786us;1957us;1789us;1957us;1856us;1957us;1860us;1957us;1866us;1957us;1868us;1957us;1876us;1957us;1882us;1957us;1884us;1957us;1893us;2012us;1901us;1957us;1909us;1957us;1911us;1957us;1922us;1957us;1926us;1957us;1933us;1957us;1940us;1957us;1946us;1957us;1947us;1957us;1948us;1957us;1949us;1950us;1951us;1953us;1952us;1953us;1958us;1959us;2008us;2006us;2050us;2051us;2053us;2012us;2057us;2012us;138us;65535us;8us;1765us;56us;57us;61us;62us;98us;300us;114us;1765us;123us;298us;152us;1765us;181us;568us;187us;1765us;191us;1765us;192us;1765us;193us;1765us;194us;1765us;204us;1765us;286us;310us;292us;293us;295us;1765us;296us;1765us;322us;335us;333us;335us;338us;339us;342us;343us;390us;1765us;444us;568us;451us;1765us;452us;1765us;460us;1765us;487us;1765us;503us;1765us;528us;1765us;567us;568us;575us;1765us;576us;1765us;601us;602us;603us;604us;619us;1765us;632us;1765us;634us;1765us;638us;1765us;643us;1765us;650us;1765us;653us;1765us;664us;1765us;674us;1765us;675us;1765us;676us;1765us;677us;1765us;690us;1765us;692us;1765us;695us;1765us;699us;1765us;719us;1765us;722us;1765us;725us;1765us;728us;1765us;731us;1765us;734us;1765us;751us;1765us;765us;1765us;768us;769us;804us;807us;819us;807us;852us;1765us;952us;1765us;967us;1040us;1021us;1765us;1038us;1040us;1063us;1765us;1248us;1765us;1251us;1765us;1254us;1765us;1395us;1765us;1396us;1765us;1538us;1765us;1571us;1765us;1574us;1765us;1576us;1765us;1578us;1765us;1594us;1611us;1598us;1611us;1606us;1611us;1640us;1765us;1641us;1765us;1678us;1765us;1680us;1765us;1681us;1765us;1685us;1765us;1689us;1765us;1692us;1765us;1695us;1765us;1698us;1765us;1700us;1765us;1702us;1765us;1707us;1765us;1711us;1765us;1716us;1765us;1719us;1765us;1720us;1765us;1721us;1765us;1722us;1765us;1725us;1765us;1728us;1765us;1731us;1765us;1737us;1765us;1740us;1765us;1741us;1765us;1743us;1765us;1744us;1765us;1747us;1765us;1751us;1765us;1754us;1765us;1756us;1765us;1759us;1765us;1762us;1765us;1764us;1765us;1771us;1765us;1774us;1765us;1780us;1765us;1782us;1765us;1786us;1765us;1789us;1765us;1856us;1765us;1860us;1765us;1866us;1765us;1868us;1765us;1876us;1765us;1882us;1765us;1884us;1765us;1901us;1902us;1909us;1765us;1911us;1765us;1922us;1765us;1926us;1931us;1933us;1931us;1940us;1931us;1946us;1931us;1947us;1931us;1948us;1931us;223us;65535us;6us;2013us;31us;2013us;40us;2007us;111us;2005us;117us;2013us;119us;2013us;181us;2005us;184us;2005us;212us;2005us;215us;2005us;242us;2013us;256us;2013us;279us;2013us;424us;2007us;427us;2013us;429us;2007us;432us;2013us;444us;2005us;457us;2005us;471us;2007us;474us;2013us;497us;2013us;507us;2007us;510us;2007us;513us;2007us;515us;2007us;567us;2005us;689us;2005us;701us;2013us;713us;2013us;774us;2013us;780us;2013us;829us;2007us;832us;2013us;836us;2013us;846us;2013us;892us;2007us;911us;2007us;914us;2007us;915us;2007us;920us;2007us;921us;2007us;924us;2007us;926us;2007us;927us;2007us;936us;2007us;940us;2007us;941us;2007us;943us;2007us;945us;2007us;948us;2007us;950us;2007us;956us;2007us;960us;2007us;962us;2007us;964us;2007us;972us;2007us;975us;2007us;986us;2007us;994us;2007us;1015us;2007us;1018us;2007us;1024us;2007us;1025us;2007us;1028us;2007us;1029us;2007us;1032us;2007us;1034us;2007us;1035us;2007us;1041us;2007us;1045us;2007us;1047us;2013us;1053us;2013us;1069us;2013us;1071us;2013us;1074us;2013us;1077us;2013us;1095us;2007us;1096us;2013us;1100us;2007us;1101us;2013us;1107us;2013us;1110us;2013us;1113us;2013us;1119us;2013us;1123us;2013us;1127us;2013us;1133us;2013us;1135us;2013us;1140us;2013us;1142us;2013us;1144us;2013us;1146us;2013us;1148us;2013us;1150us;2013us;1152us;2007us;1154us;2013us;1164us;2013us;1171us;2013us;1177us;2013us;1179us;2013us;1183us;2007us;1184us;2013us;1188us;2013us;1190us;2007us;1191us;2013us;1195us;2013us;1198us;2013us;1201us;2013us;1203us;2013us;1206us;2013us;1208us;2013us;1257us;2013us;1259us;2013us;1263us;2013us;1265us;2013us;1267us;2013us;1269us;2013us;1271us;2013us;1273us;2013us;1275us;2013us;1277us;2013us;1279us;2013us;1281us;2013us;1283us;2013us;1285us;2013us;1287us;2013us;1289us;2013us;1291us;2013us;1293us;2013us;1295us;2013us;1297us;2013us;1299us;2013us;1301us;2013us;1303us;2013us;1304us;2013us;1305us;2013us;1306us;2013us;1309us;2013us;1319us;2013us;1322us;2007us;1324us;2007us;1330us;2007us;1332us;2007us;1339us;2007us;1341us;2007us;1343us;2007us;1348us;2013us;1349us;2013us;1353us;2013us;1355us;2013us;1358us;2013us;1359us;2013us;1361us;2013us;1364us;2013us;1366us;2013us;1368us;2013us;1370us;2013us;1372us;2013us;1373us;2013us;1374us;2013us;1375us;2013us;1377us;2013us;1378us;2013us;1380us;2013us;1381us;2013us;1383us;2013us;1384us;2013us;1386us;2013us;1387us;2013us;1389us;2013us;1390us;2013us;1392us;2013us;1393us;2013us;1403us;2005us;1407us;2013us;1409us;2013us;1411us;2013us;1412us;2013us;1413us;2013us;1416us;2013us;1421us;2013us;1429us;2013us;1430us;2013us;1433us;2013us;1434us;2013us;1440us;2005us;1443us;2005us;1445us;2005us;1446us;2005us;1452us;2013us;1459us;2013us;1466us;2013us;1473us;2013us;1490us;2013us;1497us;2013us;1498us;2013us;1504us;2013us;1510us;2013us;1511us;2013us;1512us;2013us;1524us;2013us;1530us;2013us;1540us;2013us;1553us;2013us;1555us;2013us;1558us;2013us;1559us;2013us;1565us;2013us;1585us;2013us;1590us;2013us;1615us;2013us;1648us;2013us;1655us;2007us;1657us;2013us;1660us;2007us;1662us;2013us;1672us;2007us;1674us;2007us;1893us;2013us;2008us;2007us;2053us;2013us;2057us;2013us;8us;65535us;575us;1962us;705us;1962us;956us;1962us;986us;1962us;1466us;1962us;1511us;1962us;1512us;1962us;1961us;1962us;2us;65535us;1968us;2003us;2001us;2002us;8us;65535us;575us;1967us;705us;1967us;956us;1967us;986us;1967us;1466us;1967us;1511us;1967us;1512us;1967us;1961us;1967us;14us;65535us;111us;2011us;181us;2011us;184us;2011us;212us;2011us;215us;2011us;444us;2011us;457us;2011us;567us;2011us;689us;2011us;1403us;1463us;1440us;1463us;1443us;1463us;1445us;2011us;1446us;2011us;61us;65535us;40us;45us;424us;512us;429us;512us;471us;512us;507us;508us;510us;511us;513us;517us;515us;516us;829us;512us;892us;512us;911us;512us;914us;512us;915us;512us;920us;512us;921us;512us;924us;512us;926us;512us;927us;512us;936us;512us;940us;512us;941us;512us;943us;512us;945us;512us;948us;512us;950us;512us;956us;512us;960us;512us;962us;512us;964us;512us;972us;512us;975us;512us;986us;512us;994us;512us;1015us;512us;1018us;512us;1024us;512us;1025us;512us;1028us;512us;1029us;512us;1032us;512us;1034us;512us;1035us;512us;1041us;512us;1045us;512us;1095us;512us;1100us;512us;1152us;512us;1183us;512us;1190us;512us;1322us;512us;1324us;512us;1330us;512us;1332us;512us;1339us;512us;1341us;512us;1343us;512us;1655us;512us;1660us;512us;1672us;512us;1674us;512us;2008us;2009us;11us;65535us;111us;112us;181us;704us;184us;185us;212us;213us;215us;216us;444us;704us;457us;458us;567us;704us;689us;704us;1445us;1447us;1446us;1447us;148us;65535us;6us;1451us;31us;1451us;117us;1451us;119us;1451us;242us;1451us;256us;1451us;279us;1451us;427us;1451us;432us;1451us;474us;1451us;497us;1451us;701us;1451us;713us;1451us;774us;1451us;780us;1451us;832us;1451us;836us;1451us;846us;1451us;1047us;1451us;1053us;1451us;1069us;1451us;1071us;1451us;1074us;1451us;1077us;1451us;1096us;1451us;1101us;1451us;1107us;1451us;1110us;1451us;1113us;1451us;1119us;1451us;1123us;1451us;1127us;1451us;1133us;1451us;1135us;1451us;1140us;1451us;1142us;1451us;1144us;1451us;1146us;1451us;1148us;1451us;1150us;1451us;1154us;1451us;1164us;1451us;1171us;1451us;1177us;1451us;1179us;1451us;1184us;1451us;1188us;1451us;1191us;1451us;1195us;1451us;1198us;1451us;1201us;1451us;1203us;1451us;1206us;1451us;1208us;1451us;1257us;1451us;1259us;1451us;1263us;1451us;1265us;1451us;1267us;1451us;1269us;1451us;1271us;1451us;1273us;1451us;1275us;1451us;1277us;1451us;1279us;1451us;1281us;1451us;1283us;1451us;1285us;1451us;1287us;1451us;1289us;1451us;1291us;1451us;1293us;1451us;1295us;1451us;1297us;1451us;1299us;1451us;1301us;1451us;1303us;1451us;1304us;1451us;1305us;1451us;1306us;1451us;1309us;1451us;1319us;1451us;1348us;1451us;1349us;1451us;1353us;1451us;1355us;1451us;1358us;1451us;1359us;1451us;1361us;1451us;1364us;1451us;1366us;1451us;1368us;1451us;1370us;1451us;1372us;1451us;1373us;1451us;1374us;1451us;1375us;1451us;1377us;1451us;1378us;1451us;1380us;1451us;1381us;1451us;1383us;1451us;1384us;1451us;1386us;1451us;1387us;1451us;1389us;1451us;1390us;1451us;1392us;1451us;1393us;1451us;1407us;1451us;1409us;1451us;1411us;1451us;1412us;1451us;1413us;1451us;1416us;1451us;1421us;1451us;1429us;1451us;1430us;1451us;1433us;1451us;1434us;1451us;1452us;1451us;1459us;1451us;1466us;1451us;1473us;1451us;1490us;1451us;1497us;1451us;1498us;1451us;1504us;1451us;1510us;1451us;1511us;1451us;1512us;1451us;1524us;1451us;1530us;1451us;1540us;1451us;1553us;1451us;1555us;1451us;1558us;1451us;1559us;1451us;1565us;1451us;1585us;1451us;1590us;1451us;1615us;1451us;1648us;1451us;1657us;1451us;1662us;1451us;1893us;1451us;2053us;1451us;2057us;1451us;16us;65535us;51us;2017us;82us;2017us;85us;2017us;86us;2017us;87us;2019us;90us;2017us;232us;2017us;251us;2017us;257us;2017us;262us;2017us;266us;2017us;267us;2017us;268us;2017us;269us;2017us;2017us;2017us;2019us;2019us;14us;65535us;51us;91us;82us;91us;85us;91us;86us;91us;90us;91us;232us;270us;251us;270us;257us;258us;262us;264us;266us;270us;267us;270us;268us;270us;269us;270us;2017us;2018us;2us;65535us;87us;88us;2019us;2020us;10us;65535us;175us;2034us;323us;333us;411us;2034us;548us;2034us;742us;743us;928us;930us;930us;932us;1012us;1045us;1036us;1038us;1068us;1069us;4us;65535us;226us;227us;317us;318us;523us;524us;526us;527us;2us;65535us;1632us;1633us;1642us;1643us;10us;65535us;121us;122us;448us;449us;462us;463us;465us;466us;467us;468us;469us;470us;475us;476us;554us;555us;556us;557us;560us;561us;2us;65535us;68us;69us;238us;239us;19us;65535us;79us;80us;141us;142us;248us;249us;325us;326us;328us;329us;377us;378us;479us;480us;683us;718us;711us;712us;714us;715us;716us;717us;1103us;1104us;1153us;1161us;1186us;1187us;1193us;1194us;1200us;1201us;1619us;1623us;1620us;1621us;1643us;1644us;8us;65535us;175us;176us;323us;324us;411us;412us;548us;549us;742us;745us;928us;929us;1012us;1044us;1036us;1037us;4us;65535us;55us;56us;60us;61us;770us;771us;776us;777us;11us;65535us;108us;109us;182us;183us;414us;423us;416us;423us;421us;423us;447us;429us;456us;457us;552us;828us;553us;429us;559us;429us;825us;828us;7us;65535us;109us;110us;196us;748us;199us;748us;483us;484us;492us;493us;746us;748us;828us;829us;4us;65535us;1081us;1171us;1153us;1154us;1163us;1164us;1233us;1309us;9us;65535us;1079us;1158us;1080us;1168us;1082us;1175us;1083us;1317us;1155us;1156us;1165us;1166us;1172us;1173us;1310us;1311us;1313us;1314us;2us;65535us;286us;311us;301us;311us;2us;65535us;98us;130us;123us;126us;2us;65535us;73us;98us;97us;98us;309us;65535us;6us;870us;8us;870us;31us;870us;40us;42us;114us;870us;117us;870us;119us;870us;152us;870us;181us;870us;187us;870us;191us;870us;193us;870us;204us;870us;242us;870us;256us;870us;279us;870us;295us;870us;336us;870us;340us;870us;345us;870us;390us;870us;424us;870us;427us;870us;429us;870us;432us;870us;444us;870us;451us;870us;460us;870us;471us;870us;474us;870us;487us;870us;497us;870us;503us;870us;528us;870us;531us;870us;567us;870us;575us;870us;576us;577us;619us;870us;632us;870us;634us;870us;638us;870us;643us;870us;650us;870us;653us;870us;664us;870us;675us;870us;690us;870us;692us;870us;695us;870us;699us;870us;701us;870us;713us;870us;719us;870us;722us;870us;725us;870us;728us;870us;731us;870us;734us;870us;751us;870us;765us;870us;774us;870us;780us;870us;829us;870us;832us;870us;836us;870us;846us;870us;852us;870us;892us;870us;911us;870us;914us;870us;915us;870us;920us;870us;921us;870us;924us;870us;926us;870us;927us;870us;936us;870us;940us;870us;941us;870us;943us;870us;945us;870us;948us;870us;950us;870us;952us;870us;956us;870us;960us;870us;962us;870us;964us;870us;972us;870us;975us;870us;986us;870us;994us;870us;1015us;870us;1018us;870us;1021us;870us;1024us;870us;1025us;870us;1028us;870us;1029us;870us;1032us;870us;1034us;870us;1035us;870us;1041us;870us;1045us;870us;1047us;870us;1053us;870us;1063us;870us;1069us;870us;1071us;870us;1074us;870us;1077us;870us;1095us;870us;1096us;870us;1100us;870us;1101us;870us;1107us;870us;1110us;870us;1113us;870us;1119us;870us;1123us;870us;1127us;870us;1133us;870us;1135us;870us;1140us;870us;1142us;870us;1144us;870us;1146us;870us;1148us;870us;1150us;870us;1152us;870us;1154us;870us;1164us;870us;1171us;870us;1177us;870us;1179us;870us;1183us;870us;1184us;870us;1188us;870us;1190us;870us;1191us;870us;1195us;870us;1198us;870us;1201us;870us;1203us;870us;1206us;870us;1208us;870us;1248us;870us;1251us;870us;1254us;870us;1257us;870us;1259us;870us;1263us;870us;1265us;870us;1267us;870us;1269us;870us;1271us;870us;1273us;870us;1275us;870us;1277us;870us;1279us;870us;1281us;870us;1283us;870us;1285us;870us;1287us;870us;1289us;870us;1291us;870us;1293us;870us;1295us;870us;1297us;870us;1299us;870us;1301us;870us;1303us;870us;1304us;870us;1305us;870us;1306us;870us;1309us;870us;1319us;870us;1322us;870us;1324us;870us;1330us;870us;1332us;870us;1339us;870us;1341us;870us;1343us;870us;1348us;870us;1349us;870us;1353us;870us;1355us;870us;1358us;870us;1359us;870us;1361us;870us;1364us;870us;1366us;870us;1368us;870us;1370us;870us;1372us;870us;1373us;870us;1374us;870us;1375us;870us;1377us;870us;1378us;870us;1380us;870us;1381us;870us;1383us;870us;1384us;870us;1386us;870us;1387us;870us;1389us;870us;1390us;870us;1392us;870us;1393us;870us;1395us;870us;1396us;870us;1399us;870us;1400us;870us;1407us;870us;1409us;870us;1411us;870us;1412us;870us;1413us;870us;1416us;870us;1421us;870us;1429us;870us;1430us;870us;1433us;870us;1434us;870us;1452us;870us;1459us;870us;1466us;870us;1473us;870us;1490us;870us;1497us;870us;1498us;870us;1504us;870us;1510us;870us;1511us;870us;1512us;870us;1524us;870us;1530us;870us;1538us;870us;1540us;870us;1553us;870us;1555us;870us;1558us;870us;1559us;870us;1562us;1563us;1565us;870us;1571us;870us;1574us;870us;1576us;870us;1578us;870us;1580us;870us;1585us;870us;1590us;870us;1615us;870us;1640us;870us;1648us;870us;1655us;870us;1657us;870us;1660us;870us;1662us;870us;1672us;870us;1674us;870us;1678us;870us;1680us;870us;1681us;870us;1685us;870us;1689us;870us;1692us;870us;1695us;870us;1698us;870us;1700us;870us;1702us;870us;1707us;870us;1711us;870us;1716us;870us;1722us;870us;1725us;870us;1728us;870us;1731us;870us;1737us;870us;1740us;870us;1741us;870us;1743us;870us;1744us;870us;1747us;870us;1751us;870us;1754us;870us;1756us;870us;1759us;870us;1762us;870us;1764us;870us;1774us;870us;1780us;870us;1786us;870us;1789us;870us;1856us;870us;1860us;870us;1866us;870us;1876us;870us;1882us;870us;1884us;870us;1893us;870us;1909us;870us;1911us;870us;1922us;870us;2053us;870us;2057us;870us;308us;65535us;6us;871us;8us;871us;31us;871us;40us;46us;114us;871us;117us;871us;119us;871us;152us;871us;181us;871us;187us;871us;191us;871us;193us;871us;204us;871us;242us;871us;256us;871us;279us;871us;295us;871us;336us;871us;340us;871us;345us;871us;390us;871us;424us;871us;427us;871us;429us;871us;432us;871us;444us;871us;451us;871us;460us;871us;471us;871us;474us;871us;487us;871us;497us;871us;503us;871us;528us;871us;531us;871us;567us;871us;575us;871us;576us;871us;619us;871us;632us;871us;634us;871us;638us;871us;643us;871us;650us;871us;653us;871us;664us;871us;675us;871us;690us;871us;692us;871us;695us;871us;699us;871us;701us;871us;713us;871us;719us;871us;722us;871us;725us;871us;728us;871us;731us;871us;734us;871us;751us;871us;765us;871us;774us;871us;780us;871us;829us;871us;832us;871us;836us;871us;846us;871us;852us;871us;892us;871us;911us;871us;914us;871us;915us;871us;920us;871us;921us;871us;924us;871us;926us;871us;927us;871us;936us;871us;940us;871us;941us;871us;943us;871us;945us;871us;948us;871us;950us;871us;952us;871us;956us;871us;960us;871us;962us;871us;964us;871us;972us;871us;975us;871us;986us;871us;994us;871us;1015us;871us;1018us;871us;1021us;871us;1024us;871us;1025us;871us;1028us;871us;1029us;871us;1032us;871us;1034us;871us;1035us;871us;1041us;871us;1045us;871us;1047us;871us;1053us;871us;1063us;871us;1069us;871us;1071us;871us;1074us;871us;1077us;871us;1095us;871us;1096us;871us;1100us;871us;1101us;871us;1107us;871us;1110us;871us;1113us;871us;1119us;871us;1123us;871us;1127us;871us;1133us;871us;1135us;871us;1140us;871us;1142us;871us;1144us;871us;1146us;871us;1148us;871us;1150us;871us;1152us;871us;1154us;871us;1164us;871us;1171us;871us;1177us;871us;1179us;871us;1183us;871us;1184us;871us;1188us;871us;1190us;871us;1191us;871us;1195us;871us;1198us;871us;1201us;871us;1203us;871us;1206us;871us;1208us;871us;1248us;871us;1251us;871us;1254us;871us;1257us;871us;1259us;871us;1263us;871us;1265us;871us;1267us;871us;1269us;871us;1271us;871us;1273us;871us;1275us;871us;1277us;871us;1279us;871us;1281us;871us;1283us;871us;1285us;871us;1287us;871us;1289us;871us;1291us;871us;1293us;871us;1295us;871us;1297us;871us;1299us;871us;1301us;871us;1303us;871us;1304us;871us;1305us;871us;1306us;871us;1309us;871us;1319us;871us;1322us;871us;1324us;871us;1330us;871us;1332us;871us;1339us;871us;1341us;871us;1343us;871us;1348us;871us;1349us;871us;1353us;871us;1355us;871us;1358us;871us;1359us;871us;1361us;871us;1364us;871us;1366us;871us;1368us;871us;1370us;871us;1372us;871us;1373us;871us;1374us;871us;1375us;871us;1377us;871us;1378us;871us;1380us;871us;1381us;871us;1383us;871us;1384us;871us;1386us;871us;1387us;871us;1389us;871us;1390us;871us;1392us;871us;1393us;871us;1395us;871us;1396us;871us;1399us;871us;1400us;871us;1407us;871us;1409us;871us;1411us;871us;1412us;871us;1413us;871us;1416us;871us;1421us;871us;1429us;871us;1430us;871us;1433us;871us;1434us;871us;1452us;871us;1459us;871us;1466us;871us;1473us;871us;1490us;871us;1497us;871us;1498us;871us;1504us;871us;1510us;871us;1511us;871us;1512us;871us;1524us;871us;1530us;871us;1538us;871us;1540us;871us;1553us;871us;1555us;871us;1558us;871us;1559us;871us;1565us;871us;1571us;871us;1574us;871us;1576us;871us;1578us;871us;1580us;871us;1585us;871us;1590us;871us;1615us;871us;1640us;871us;1648us;871us;1655us;871us;1657us;871us;1660us;871us;1662us;871us;1672us;871us;1674us;871us;1678us;871us;1680us;871us;1681us;871us;1685us;871us;1689us;871us;1692us;871us;1695us;871us;1698us;871us;1700us;871us;1702us;871us;1707us;871us;1711us;871us;1716us;871us;1722us;871us;1725us;871us;1728us;871us;1731us;871us;1737us;871us;1740us;871us;1741us;871us;1743us;871us;1744us;871us;1747us;871us;1751us;871us;1754us;871us;1756us;871us;1759us;871us;1762us;871us;1764us;871us;1774us;871us;1780us;871us;1786us;871us;1789us;871us;1856us;871us;1860us;871us;1866us;871us;1876us;871us;1882us;871us;1884us;871us;1893us;871us;1909us;871us;1911us;871us;1922us;871us;2053us;871us;2057us;871us;2us;65535us;2053us;2054us;2057us;2058us;4us;65535us;2053us;2056us;2054us;2055us;2057us;2061us;2058us;2059us;155us;65535us;6us;1483us;31us;1483us;117us;1483us;119us;1483us;242us;1483us;256us;1483us;279us;1483us;336us;1483us;340us;1483us;345us;1483us;427us;1483us;432us;1483us;474us;1483us;497us;1483us;531us;1483us;701us;1483us;713us;1483us;774us;1483us;780us;1483us;832us;1483us;836us;1483us;846us;1483us;1047us;1483us;1053us;1483us;1069us;1483us;1071us;1483us;1074us;1483us;1077us;1483us;1096us;1483us;1101us;1483us;1107us;1483us;1110us;1483us;1113us;1483us;1119us;1483us;1123us;1483us;1127us;1483us;1133us;1483us;1135us;1483us;1140us;1483us;1142us;1483us;1144us;1483us;1146us;1483us;1148us;1483us;1150us;1483us;1154us;1483us;1164us;1483us;1171us;1483us;1177us;1483us;1179us;1483us;1184us;1483us;1188us;1483us;1191us;1483us;1195us;1483us;1198us;1483us;1201us;1483us;1203us;1483us;1206us;1483us;1208us;1483us;1257us;1483us;1259us;1483us;1263us;1483us;1265us;1483us;1267us;1483us;1269us;1483us;1271us;1483us;1273us;1483us;1275us;1483us;1277us;1483us;1279us;1483us;1281us;1483us;1283us;1483us;1285us;1483us;1287us;1483us;1289us;1483us;1291us;1483us;1293us;1483us;1295us;1483us;1297us;1483us;1299us;1483us;1301us;1483us;1303us;1483us;1304us;1483us;1305us;1483us;1306us;1483us;1309us;1483us;1319us;1483us;1348us;1483us;1349us;1483us;1353us;1483us;1355us;1483us;1358us;1483us;1359us;1483us;1361us;1483us;1364us;1483us;1366us;1483us;1368us;1483us;1370us;1483us;1372us;1483us;1373us;1483us;1374us;1483us;1375us;1483us;1377us;1483us;1378us;1483us;1380us;1483us;1381us;1483us;1383us;1483us;1384us;1483us;1386us;1483us;1387us;1483us;1389us;1483us;1390us;1483us;1392us;1483us;1393us;1483us;1399us;1483us;1400us;1483us;1407us;1483us;1409us;1483us;1411us;1483us;1412us;1483us;1413us;1483us;1416us;1483us;1421us;1483us;1429us;1483us;1430us;1483us;1433us;1483us;1434us;1483us;1452us;1483us;1459us;1483us;1466us;1483us;1473us;1483us;1490us;1483us;1497us;1483us;1498us;1483us;1504us;1483us;1510us;1483us;1511us;1483us;1512us;1483us;1524us;1483us;1530us;1483us;1540us;1483us;1553us;1483us;1555us;1483us;1558us;1483us;1559us;1483us;1565us;1483us;1580us;1483us;1585us;1483us;1590us;1483us;1615us;1483us;1648us;1483us;1657us;1483us;1662us;1483us;1893us;1483us;2053us;1483us;2057us;1483us;11us;65535us;335us;336us;339us;340us;344us;345us;369us;370us;529us;531us;793us;794us;805us;809us;808us;809us;1397us;1399us;1398us;1400us;1579us;1580us;5us;65535us;112us;626us;185us;626us;458us;626us;602us;621us;940us;626us;14us;65535us;31us;281us;72us;102us;96us;102us;198us;201us;242us;281us;256us;281us;275us;281us;292us;295us;322us;349us;333us;349us;355us;481us;1563us;1570us;2065us;2067us;2066us;2067us;10us;65535us;31us;53us;72us;53us;96us;53us;242us;53us;256us;53us;275us;53us;322us;347us;333us;347us;2070us;2072us;2071us;2072us;9us;65535us;580us;586us;581us;582us;584us;585us;968us;969us;970us;971us;1092us;1544us;1540us;1546us;1541us;1542us;2075us;2076us;5us;65535us;591us;592us;594us;595us;1093us;1652us;1648us;1654us;1649us;1650us;45us;65535us;578us;579us;609us;610us;662us;663us;665us;666us;669us;670us;706us;707us;709us;710us;796us;797us;882us;883us;892us;895us;893us;894us;957us;958us;987us;988us;990us;991us;995us;996us;998us;999us;1090us;1517us;1091us;1518us;1243us;1525us;1262us;1460us;1320us;1321us;1467us;1468us;1471us;1472us;1510us;1513us;1511us;1513us;1512us;1513us;1514us;1515us;1529us;1530us;1536us;1537us;1572us;1573us;1576us;1577us;1736us;1775us;1781us;1782us;1867us;1868us;1877us;1879us;1878us;1879us;1885us;1886us;1896us;1898us;1897us;1899us;1934us;1935us;1962us;1963us;1964us;1965us;1968us;1969us;1971us;1972us;2080us;2081us;28us;65535us;78us;79us;82us;83us;120us;121us;124us;125us;128us;129us;144us;145us;162us;163us;170us;171us;218us;219us;247us;248us;251us;252us;268us;308us;298us;299us;302us;303us;305us;306us;343us;344us;376us;384us;380us;381us;400us;402us;404us;406us;544us;545us;837us;838us;1047us;1051us;1048us;1049us;1053us;1056us;1054us;1055us;1075us;1076us;2084us;2085us;1us;65535us;1514us;1516us;51us;65535us;322us;331us;324us;330us;394us;396us;431us;435us;473us;477us;496us;500us;528us;534us;915us;916us;920us;922us;921us;923us;924us;925us;1013us;1557us;1028us;1030us;1029us;1031us;1032us;1033us;1152us;1174us;1153us;1160us;1154us;1159us;1155us;1157us;1263us;1264us;1265us;1266us;1267us;1268us;1269us;1270us;1271us;1272us;1273us;1274us;1275us;1276us;1277us;1278us;1279us;1280us;1281us;1282us;1283us;1284us;1285us;1286us;1287us;1288us;1289us;1290us;1291us;1292us;1293us;1294us;1295us;1296us;1297us;1298us;1299us;1300us;1301us;1302us;1364us;1365us;1366us;1367us;1368us;1369us;1370us;1371us;1555us;1556us;1614us;1618us;1615us;1617us;1904us;1905us;1911us;1915us;1916us;1918us;1958us;1960us;2008us;2010us;|]
+let _fsyacc_sparseGotoTableRowOffsets = [|0us;1us;2us;3us;4us;5us;7us;15us;20us;26us;31us;36us;41us;46us;70us;72us;74us;76us;83us;88us;90us;93us;96us;99us;103us;110us;120us;130us;140us;143us;145us;148us;152us;154us;157us;160us;163us;167us;176us;185us;197us;201us;204us;207us;210us;216us;218us;220us;223us;226us;229us;233us;239us;249us;260us;271us;287us;312us;314us;316us;319us;321us;403us;527us;651us;653us;656us;659us;664us;671us;674us;678us;680us;683us;686us;689us;693us;702us;713us;715us;718us;722us;726us;731us;742us;746us;749us;751us;807us;834us;916us;918us;923us;926us;929us;932us;935us;939us;942us;947us;952us;955us;960us;970us;1058us;1147us;1152us;1162us;1164us;1166us;1170us;1176us;1178us;1180us;1185us;1189us;1287us;1291us;1295us;1299us;1304us;1306us;1310us;1316us;1320us;1324us;1329us;1333us;1337us;1346us;1355us;1362us;1366us;1370us;1374us;1379us;1386us;1388us;1390us;1511us;1519us;1640us;1760us;1764us;1770us;1891us;1893us;1895us;1899us;1902us;1904us;1909us;1912us;1918us;1921us;1923us;1926us;1928us;1930us;1932us;1935us;2243us;2245us;2250us;2254us;2465us;2469us;2471us;2473us;2510us;2525us;2540us;2555us;2559us;2563us;2607us;2614us;2626us;2682us;2685us;2713us;2741us;2769us;2772us;2775us;2779us;2807us;2814us;2820us;2873us;2875us;2933us;3138us;3143us;3260us;3263us;3265us;3270us;3275us;3285us;3295us;3297us;3299us;3302us;3305us;3307us;3424us;3559us;3695us;3700us;3849us;3853us;4009us;4165us;4376us;4532us;4688us;4692us;4696us;4698us;4854us;4856us;4858us;4860us;4862us;4864us;4866us;4868us;4870us;4874us;4876us;4881us;4883us;4885us;4887us;4890us;4897us;4904us;4908us;4914us;4918us;4920us;4922us;4924us;4927us;4929us;4934us;4940us;5096us;5254us;5371us;5488us;5491us;5497us;5501us;5512us;5523us;5528us;5543us;5555us;5589us;5591us;5625us;5637us;5724us;5836us;5948us;6014us;6024us;6111us;6125us;6132us;6135us;6222us;6227us;6315us;6413us;6418us;6425us;6436us;6439us;6443us;6445us;6452us;6459us;6466us;6472us;6598us;6978us;7117us;7341us;7350us;7353us;7362us;7377us;7439us;7451us;7600us;7617us;7632us;7635us;7646us;7651us;7654us;7665us;7668us;7688us;7697us;7702us;7714us;7722us;7727us;7737us;7740us;7743us;7746us;8056us;8365us;8368us;8373us;8529us;8541us;8547us;8562us;8573us;8583us;8589us;8635us;8664us;8666us;|]
+let _fsyacc_stateToProdIdxsTableElements = [| 1us;0us;1us;0us;1us;1us;1us;1us;1us;2us;1us;2us;1us;3us;1us;3us;1us;4us;1us;4us;1us;5us;1us;6us;1us;7us;1us;8us;1us;9us;1us;10us;2us;11us;14us;1us;11us;2us;12us;15us;1us;12us;2us;13us;16us;1us;13us;1us;14us;1us;14us;1us;15us;1us;15us;1us;16us;1us;16us;2us;17us;18us;1us;18us;8us;19us;145us;146us;147us;148us;149us;150us;151us;8us;19us;145us;146us;147us;148us;149us;150us;151us;54us;19us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;20us;2us;21us;22us;1us;22us;1us;23us;1us;24us;1us;25us;1us;25us;2us;25us;27us;1us;27us;1us;28us;1us;29us;2us;30us;1109us;1us;31us;1us;32us;2us;33us;34us;1us;33us;1us;34us;1us;34us;3us;35us;53us;56us;1us;35us;3us;36us;37us;38us;3us;36us;37us;38us;3us;36us;37us;38us;3us;36us;37us;38us;3us;36us;1112us;1113us;1us;37us;1us;38us;2us;39us;40us;2us;39us;40us;3us;39us;1112us;1113us;1us;40us;2us;41us;42us;1us;42us;2us;43us;44us;1us;43us;1us;45us;1us;45us;1us;45us;7us;46us;60us;61us;62us;63us;64us;66us;7us;46us;60us;61us;62us;63us;64us;66us;4us;46us;60us;61us;62us;1us;46us;1us;47us;1us;48us;3us;49us;50us;51us;2us;49us;50us;1us;49us;1us;49us;1us;50us;3us;51us;53us;56us;1us;51us;1us;52us;2us;53us;56us;3us;53us;56us;62us;2us;55us;57us;2us;55us;57us;1us;55us;1us;56us;1us;56us;1us;56us;1us;58us;1us;59us;6us;60us;61us;62us;63us;64us;66us;6us;60us;61us;62us;63us;64us;66us;3us;60us;61us;62us;2us;60us;61us;1us;60us;1us;61us;1us;62us;1us;63us;1us;63us;1us;63us;1us;64us;1us;65us;1us;66us;1us;66us;1us;66us;1us;66us;1us;66us;1us;66us;1us;66us;1us;66us;1us;66us;1us;66us;2us;68us;69us;54us;68us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;69us;54us;69us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;69us;1us;69us;3us;70us;71us;158us;1us;70us;1us;70us;1us;71us;1us;71us;1us;71us;1us;71us;1us;72us;1us;72us;1us;72us;1us;73us;1us;73us;1us;73us;2us;75us;76us;1us;75us;1us;75us;1us;76us;3us;77us;86us;87us;1us;77us;1us;77us;1us;77us;1us;77us;1us;77us;1us;77us;1us;78us;1us;78us;1us;79us;1us;80us;1us;81us;1us;81us;1us;81us;1us;82us;3us;83us;84us;85us;2us;83us;84us;1us;83us;1us;84us;1us;85us;1us;85us;2us;86us;87us;2us;86us;87us;1us;86us;1us;87us;2us;88us;89us;2us;88us;89us;1us;88us;1us;89us;2us;90us;91us;2us;90us;91us;1us;90us;1us;91us;1us;92us;1us;93us;1us;95us;1us;95us;1us;95us;8us;96us;97us;98us;99us;100us;101us;102us;103us;13us;96us;97us;98us;99us;100us;101us;102us;103us;299us;300us;301us;302us;303us;8us;96us;97us;98us;99us;100us;101us;102us;103us;13us;96us;97us;98us;99us;100us;101us;102us;103us;299us;300us;301us;302us;303us;1us;96us;1us;96us;1us;96us;1us;96us;1us;96us;1us;96us;1us;96us;1us;96us;1us;96us;1us;97us;4us;97us;1008us;1009us;1010us;2us;98us;99us;4us;98us;1008us;1009us;1010us;1us;99us;1us;100us;1us;100us;6us;101us;102us;188us;189us;232us;233us;1us;101us;1us;101us;1us;102us;1us;102us;1us;103us;1us;103us;1us;103us;1us;105us;1us;105us;2us;106us;107us;2us;106us;107us;1us;106us;1us;107us;3us;108us;109us;110us;3us;108us;109us;110us;2us;109us;110us;1us;109us;1us;109us;1us;110us;1us;111us;1us;111us;1us;111us;1us;112us;1us;113us;1us;114us;1us;114us;1us;115us;1us;115us;1us;115us;2us;117us;118us;1us;117us;1us;118us;1us;118us;2us;119us;142us;1us;119us;2us;120us;121us;1us;121us;2us;122us;123us;1us;122us;1us;124us;1us;124us;1us;124us;12us;125us;133us;134us;135us;137us;145us;146us;147us;148us;149us;150us;151us;11us;125us;133us;134us;135us;145us;146us;147us;148us;149us;150us;151us;3us;125us;150us;151us;1us;125us;1us;126us;3us;127us;128us;129us;2us;127us;128us;1us;127us;1us;127us;1us;128us;2us;129us;142us;1us;129us;1us;130us;1us;131us;11us;133us;134us;135us;137us;145us;146us;147us;148us;149us;150us;151us;10us;133us;134us;135us;145us;146us;147us;148us;149us;150us;151us;56us;133us;134us;135us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;2us;133us;134us;1us;133us;1us;136us;1us;137us;4us;138us;139us;140us;141us;1us;138us;2us;139us;141us;1us;139us;1us;142us;2us;142us;151us;2us;142us;164us;2us;142us;169us;1us;142us;1us;142us;1us;143us;1us;144us;7us;145us;146us;147us;148us;149us;150us;151us;7us;145us;146us;147us;148us;149us;150us;151us;1us;145us;3us;145us;612us;613us;1us;146us;5us;146us;614us;615us;616us;617us;1us;147us;1us;148us;1us;148us;1us;148us;1us;149us;2us;150us;151us;1us;150us;1us;150us;1us;151us;2us;152us;171us;1us;152us;1us;153us;4us;154us;155us;156us;157us;3us;154us;1112us;1113us;1us;155us;2us;156us;157us;4us;156us;1008us;1009us;1010us;1us;157us;3us;158us;1112us;1113us;1us;158us;3us;159us;1112us;1113us;5us;160us;161us;162us;163us;164us;2us;160us;161us;1us;160us;1us;161us;2us;162us;163us;1us;162us;1us;163us;1us;164us;1us;165us;3us;166us;1112us;1113us;3us;167us;168us;169us;2us;167us;168us;1us;167us;1us;168us;1us;169us;1us;170us;1us;170us;1us;170us;1us;171us;2us;173us;174us;1us;174us;4us;175us;176us;177us;178us;3us;175us;177us;180us;2us;175us;177us;1us;175us;1us;175us;2us;176us;607us;1us;176us;1us;176us;1us;177us;1us;178us;1us;179us;2us;180us;1181us;1us;180us;3us;181us;1112us;1113us;1us;181us;1us;181us;2us;182us;183us;3us;182us;1112us;1113us;1us;182us;1us;182us;1us;183us;3us;183us;1112us;1113us;1us;183us;1us;183us;1us;183us;1us;184us;1us;184us;1us;185us;1us;185us;2us;186us;1111us;1us;186us;1us;187us;1us;187us;7us;188us;189us;232us;233us;235us;243us;249us;1us;188us;1us;190us;1us;191us;1us;192us;1us;193us;1us;193us;1us;193us;1us;194us;1us;194us;1us;194us;4us;196us;197us;198us;199us;1us;197us;2us;198us;199us;2us;198us;199us;2us;198us;199us;2us;198us;199us;2us;198us;199us;1us;198us;1us;198us;1us;199us;5us;200us;201us;202us;211us;212us;2us;200us;201us;2us;200us;201us;2us;200us;201us;2us;200us;201us;1us;200us;1us;200us;1us;201us;1us;202us;1us;203us;1us;203us;1us;204us;1us;205us;1us;206us;1us;206us;1us;206us;1us;207us;3us;208us;209us;210us;2us;208us;209us;1us;208us;1us;209us;2us;210us;217us;1us;210us;2us;211us;212us;2us;211us;212us;1us;211us;1us;212us;2us;213us;214us;2us;213us;214us;1us;213us;1us;214us;1us;215us;1us;216us;1us;217us;1us;217us;1us;219us;1us;219us;1us;219us;1us;220us;1us;220us;2us;221us;222us;2us;221us;222us;1us;221us;1us;222us;2us;223us;224us;1us;224us;1us;224us;1us;225us;1us;225us;1us;225us;1us;225us;1us;225us;1us;225us;4us;226us;227us;228us;229us;4us;226us;227us;228us;229us;4us;226us;227us;228us;229us;1us;226us;1us;226us;1us;227us;1us;228us;1us;229us;2us;230us;231us;1us;231us;2us;232us;233us;1us;233us;16us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;247us;248us;249us;21us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;247us;248us;249us;299us;300us;301us;302us;303us;16us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;247us;248us;249us;21us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;247us;248us;249us;299us;300us;301us;302us;303us;1us;234us;1us;235us;3us;236us;237us;244us;1us;236us;1us;236us;1us;237us;2us;238us;239us;4us;238us;1008us;1009us;1010us;1us;238us;1us;239us;1us;240us;1us;240us;1us;240us;1us;240us;1us;240us;1us;240us;1us;240us;1us;240us;1us;240us;1us;241us;1us;242us;1us;242us;1us;243us;1us;243us;1us;244us;1us;244us;4us;245us;246us;247us;248us;3us;245us;246us;247us;3us;245us;246us;247us;1us;245us;1us;245us;1us;245us;1us;246us;1us;247us;1us;248us;1us;248us;1us;249us;1us;249us;4us;250us;251us;252us;253us;4us;250us;251us;252us;253us;4us;250us;251us;252us;253us;3us;250us;251us;252us;2us;250us;251us;1us;250us;1us;251us;1us;252us;1us;253us;4us;254us;255us;256us;257us;4us;254us;255us;256us;257us;4us;254us;255us;256us;257us;3us;254us;255us;256us;3us;254us;255us;256us;1us;254us;1us;254us;1us;254us;1us;255us;1us;256us;1us;257us;2us;259us;260us;1us;259us;1us;260us;2us;261us;541us;1us;261us;1us;261us;1us;262us;1us;262us;1us;262us;1us;263us;2us;264us;265us;1us;264us;1us;264us;1us;264us;1us;265us;1us;267us;1us;268us;1us;269us;1us;270us;2us;271us;272us;1us;271us;1us;271us;1us;274us;1us;274us;1us;274us;3us;276us;277us;278us;2us;276us;277us;1us;276us;1us;277us;1us;277us;1us;277us;1us;278us;1us;279us;2us;281us;282us;1us;281us;1us;282us;1us;283us;2us;285us;286us;1us;285us;1us;286us;2us;287us;288us;2us;287us;288us;1us;287us;1us;288us;1us;289us;2us;290us;291us;2us;290us;291us;1us;290us;4us;292us;293us;294us;295us;5us;292us;293us;294us;295us;444us;3us;292us;293us;294us;1us;292us;1us;292us;1us;293us;1us;293us;1us;294us;1us;295us;1us;295us;1us;295us;1us;296us;1us;296us;1us;297us;1us;298us;5us;299us;300us;301us;302us;303us;5us;299us;300us;301us;302us;303us;4us;299us;1000us;1112us;1113us;1us;299us;1us;299us;1us;299us;1us;300us;1us;301us;1us;302us;11us;303us;375us;376us;1011us;1061us;1062us;1073us;1114us;1115us;1117us;1118us;2us;303us;335us;2us;303us;475us;1us;303us;1us;303us;4us;304us;305us;306us;307us;2us;304us;305us;1us;304us;1us;305us;1us;306us;1us;306us;1us;307us;6us;308us;1063us;1064us;1065us;1066us;1067us;1us;308us;1us;309us;3us;310us;311us;312us;2us;310us;311us;1us;310us;1us;311us;1us;312us;1us;312us;1us;313us;1us;314us;1us;315us;1us;316us;1us;317us;4us;318us;319us;320us;321us;4us;318us;320us;1112us;1113us;1us;319us;3us;319us;1112us;1113us;1us;320us;1us;321us;1us;322us;1us;323us;2us;323us;324us;1us;323us;2us;324us;328us;3us;324us;329us;330us;1us;324us;2us;324us;329us;1us;324us;1us;325us;2us;326us;327us;2us;326us;327us;1us;327us;3us;327us;340us;341us;1us;328us;1us;328us;1us;328us;1us;328us;1us;329us;1us;332us;1us;332us;1us;332us;1us;332us;1us;332us;1us;333us;1us;335us;3us;335us;1075us;1076us;1us;337us;2us;337us;338us;2us;338us;947us;2us;338us;949us;1us;338us;1us;338us;1us;339us;3us;340us;341us;998us;3us;340us;341us;999us;2us;340us;341us;2us;340us;1058us;3us;341us;1075us;1076us;2us;342us;1058us;3us;343us;1075us;1076us;1us;344us;1us;344us;1us;344us;1us;344us;12us;345us;346us;347us;348us;349us;350us;352us;353us;354us;998us;1001us;1014us;2us;345us;1014us;2us;345us;1014us;8us;346us;347us;348us;349us;350us;352us;353us;354us;1us;346us;4us;347us;349us;353us;354us;1us;347us;1us;348us;1us;349us;1us;350us;1us;350us;1us;350us;5us;351us;1011us;1061us;1062us;1073us;2us;351us;356us;1us;351us;1us;351us;1us;351us;1us;351us;1us;351us;1us;352us;1us;352us;1us;353us;4us;355us;1008us;1009us;1010us;1us;356us;4us;356us;1008us;1009us;1010us;6us;357us;1004us;1005us;1008us;1009us;1010us;1us;358us;1us;358us;1us;359us;1us;359us;1us;359us;2us;360us;380us;1us;361us;2us;362us;363us;1us;362us;1us;362us;10us;364us;365us;366us;367us;368us;369us;370us;371us;372us;373us;10us;364us;365us;366us;367us;368us;369us;370us;371us;372us;373us;7us;364us;366us;367us;370us;371us;372us;373us;1us;365us;2us;366us;370us;1us;366us;1us;367us;2us;368us;369us;1us;368us;1us;369us;1us;370us;1us;371us;1us;371us;2us;372us;373us;6us;372us;788us;789us;790us;794us;797us;1us;373us;1us;374us;6us;375us;376us;1114us;1115us;1117us;1118us;1us;375us;1us;375us;1us;376us;1us;376us;1us;376us;9us;377us;378us;379us;381us;383us;385us;386us;1111us;1148us;1us;377us;4us;378us;379us;385us;386us;7us;378us;385us;788us;789us;790us;794us;797us;2us;378us;385us;2us;379us;386us;2us;379us;386us;1us;380us;2us;381us;383us;1us;381us;1us;382us;1us;382us;1us;382us;1us;383us;1us;384us;1us;384us;3us;387us;388us;390us;2us;387us;388us;1us;387us;1us;388us;1us;389us;1us;389us;4us;391us;392us;394us;1111us;3us;391us;392us;394us;1us;391us;1us;392us;1us;393us;1us;394us;1us;395us;1us;396us;1us;397us;2us;398us;399us;2us;398us;1181us;1us;398us;1us;399us;1us;400us;1us;400us;4us;401us;402us;403us;404us;4us;401us;402us;403us;404us;3us;401us;402us;403us;2us;401us;402us;1us;401us;1us;402us;1us;403us;1us;404us;1us;405us;1us;405us;2us;406us;407us;2us;406us;407us;2us;406us;407us;1us;406us;1us;406us;1us;407us;3us;408us;409us;410us;2us;409us;410us;1us;409us;1us;410us;1us;412us;3us;412us;1112us;1113us;1us;413us;1us;413us;1us;413us;1us;414us;1us;415us;1us;415us;1us;416us;1us;416us;1us;416us;1us;416us;2us;417us;418us;1us;417us;1us;417us;1us;418us;1us;419us;1us;420us;1us;421us;1us;422us;1us;423us;1us;424us;1us;425us;1us;425us;1us;425us;1us;425us;1us;425us;1us;425us;1us;425us;1us;425us;2us;426us;429us;2us;427us;430us;1us;429us;1us;429us;1us;430us;1us;430us;2us;431us;432us;6us;431us;432us;434us;435us;436us;437us;1us;432us;3us;433us;1112us;1113us;5us;434us;435us;436us;437us;439us;1us;434us;1us;434us;1us;434us;1us;435us;1us;436us;1us;436us;1us;437us;1us;438us;2us;438us;440us;1us;438us;2us;439us;440us;1us;441us;1us;441us;1us;442us;1us;442us;1us;442us;1us;444us;1us;444us;1us;445us;3us;446us;447us;448us;3us;446us;447us;448us;3us;446us;447us;448us;3us;446us;447us;448us;2us;446us;447us;1us;446us;1us;447us;1us;448us;2us;449us;450us;2us;449us;450us;1us;449us;1us;450us;1us;451us;1us;452us;2us;452us;453us;1us;453us;1us;455us;2us;455us;456us;1us;455us;1us;455us;1us;456us;1us;456us;1us;457us;2us;458us;459us;1us;458us;1us;458us;1us;459us;1us;460us;1us;461us;1us;462us;1us;463us;1us;464us;1us;465us;1us;466us;1us;467us;1us;468us;1us;469us;1us;470us;1us;471us;1us;472us;1us;473us;1us;474us;1us;475us;1us;476us;1us;477us;2us;478us;480us;1us;478us;1us;478us;2us;479us;481us;2us;479us;481us;1us;479us;1us;479us;1us;482us;1us;483us;1us;483us;1us;483us;1us;484us;1us;485us;1us;485us;2us;486us;487us;1us;487us;1us;487us;11us;488us;495us;496us;497us;498us;499us;500us;501us;506us;508us;512us;1us;489us;2us;491us;492us;13us;491us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;1us;491us;1us;492us;1us;493us;2us;493us;735us;2us;493us;741us;1us;494us;11us;495us;496us;497us;498us;498us;499us;500us;501us;506us;508us;512us;11us;495us;496us;497us;498us;499us;499us;500us;501us;506us;508us;512us;11us;495us;496us;497us;498us;499us;500us;501us;505us;506us;508us;512us;11us;495us;496us;497us;498us;499us;500us;501us;506us;506us;508us;512us;11us;495us;496us;497us;498us;499us;500us;501us;506us;508us;509us;512us;11us;495us;496us;497us;498us;499us;500us;501us;506us;508us;511us;512us;11us;495us;496us;497us;498us;499us;500us;501us;506us;508us;512us;512us;11us;495us;496us;497us;498us;499us;500us;501us;506us;508us;512us;609us;11us;495us;496us;497us;498us;499us;500us;501us;506us;508us;512us;610us;11us;495us;496us;497us;498us;499us;500us;501us;506us;508us;512us;660us;12us;495us;496us;497us;498us;499us;500us;501us;506us;508us;512us;661us;662us;3us;495us;496us;497us;1us;495us;1us;496us;1us;498us;3us;499us;500us;501us;1us;500us;3us;502us;505us;507us;2us;503us;511us;1us;504us;2us;505us;507us;2us;506us;508us;1us;507us;1us;508us;2us;509us;510us;1us;510us;1us;511us;1us;512us;3us;513us;514us;515us;1us;513us;3us;514us;515us;1181us;1us;514us;1us;515us;1us;515us;3us;516us;517us;518us;6us;516us;517us;518us;1150us;1152us;1153us;2us;516us;517us;13us;516us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;1us;517us;1us;518us;8us;519us;520us;521us;522us;523us;524us;525us;543us;4us;519us;520us;521us;522us;1us;520us;1us;521us;1us;521us;1us;522us;1us;522us;1us;523us;1us;524us;1us;524us;1us;525us;1us;525us;3us;526us;527us;528us;1us;526us;1us;527us;1us;529us;9us;530us;548us;549us;550us;551us;1114us;1115us;1117us;1118us;1us;530us;1us;530us;1us;531us;4us;532us;533us;534us;535us;1us;532us;1us;533us;1us;533us;1us;534us;1us;534us;1us;536us;2us;537us;538us;1us;537us;1us;537us;1us;538us;1us;538us;1us;539us;1us;539us;1us;539us;1us;540us;1us;540us;1us;540us;1us;542us;2us;542us;1135us;1us;542us;1us;543us;1us;544us;1us;545us;1us;546us;1us;547us;8us;548us;549us;550us;551us;1114us;1115us;1117us;1118us;2us;548us;549us;1us;548us;1us;549us;3us;550us;607us;1115us;2us;550us;1115us;1us;551us;4us;552us;553us;554us;555us;4us;552us;553us;554us;555us;5us;552us;553us;562us;571us;573us;1us;552us;1us;553us;2us;554us;607us;1us;554us;1us;555us;13us;556us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;13us;558us;559us;560us;561us;561us;564us;565us;567us;568us;569us;572us;574us;578us;13us;558us;559us;560us;561us;564us;565us;566us;567us;568us;569us;572us;574us;578us;13us;558us;559us;560us;561us;564us;565us;567us;567us;568us;569us;572us;574us;578us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;571us;572us;574us;578us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;572us;574us;578us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;575us;578us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;577us;578us;12us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;578us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;581us;14us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;585us;586us;18us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;654us;655us;871us;872us;873us;874us;13us;558us;559us;560us;561us;564us;565us;567us;568us;569us;572us;574us;578us;738us;3us;558us;559us;560us;1us;558us;1us;559us;1us;561us;3us;562us;571us;573us;2us;563us;577us;2us;564us;565us;1us;564us;1us;565us;1us;566us;3us;567us;568us;569us;1us;568us;1us;570us;2us;571us;573us;2us;572us;574us;1us;573us;1us;574us;2us;575us;576us;1us;576us;1us;577us;1us;578us;2us;579us;580us;1us;579us;2us;580us;1181us;1us;580us;5us;581us;582us;583us;1112us;1113us;2us;581us;582us;1us;582us;1us;583us;1us;585us;2us;586us;1181us;1us;586us;3us;587us;588us;589us;2us;587us;588us;1us;587us;1us;588us;1us;589us;1us;590us;2us;591us;592us;1us;591us;1us;591us;1us;592us;54us;593us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;2us;594us;595us;1us;594us;1us;596us;2us;596us;941us;3us;597us;598us;599us;2us;597us;598us;1us;597us;1us;598us;1us;600us;1us;600us;58us;601us;602us;603us;604us;605us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;2us;601us;602us;1us;601us;1us;604us;1us;604us;1us;605us;1us;605us;1us;605us;1us;605us;5us;606us;614us;615us;616us;617us;1us;607us;2us;607us;643us;2us;607us;649us;2us;607us;652us;2us;607us;654us;2us;607us;726us;2us;607us;737us;2us;607us;742us;2us;607us;802us;2us;607us;815us;2us;607us;834us;2us;607us;838us;2us;607us;843us;3us;607us;843us;1115us;2us;607us;859us;2us;607us;933us;1us;608us;1us;609us;1us;609us;1us;609us;1us;609us;1us;609us;1us;610us;1us;610us;1us;610us;1us;610us;1us;610us;1us;610us;2us;612us;613us;2us;612us;613us;1us;612us;1us;613us;4us;614us;615us;616us;617us;1us;614us;1us;615us;2us;616us;617us;1us;616us;1us;617us;1us;618us;1us;619us;1us;620us;2us;621us;622us;2us;621us;622us;1us;621us;1us;622us;2us;623us;624us;2us;623us;624us;1us;623us;1us;624us;5us;625us;626us;627us;628us;629us;3us;625us;626us;629us;1us;625us;1us;626us;2us;627us;628us;1us;628us;1us;629us;1us;629us;3us;630us;631us;632us;55us;630us;631us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;630us;1us;631us;1us;632us;1us;633us;54us;633us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;2us;634us;635us;54us;634us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;636us;1us;636us;2us;637us;638us;1us;637us;1us;639us;1us;639us;1us;640us;1us;640us;15us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;6us;641us;642us;643us;644us;645us;646us;4us;641us;642us;643us;644us;2us;641us;642us;1us;641us;1us;642us;1us;643us;1us;644us;1us;645us;1us;646us;1us;646us;5us;647us;648us;649us;650us;651us;4us;647us;648us;649us;650us;2us;647us;648us;1us;647us;1us;648us;1us;649us;1us;650us;1us;651us;1us;652us;1us;652us;1us;652us;1us;653us;1us;654us;2us;655us;1240us;2us;656us;658us;54us;656us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;2us;657us;659us;54us;657us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;658us;1us;659us;1us;660us;1us;660us;1us;660us;1us;660us;1us;660us;1us;660us;1us;660us;2us;661us;662us;2us;661us;662us;2us;661us;662us;2us;661us;662us;2us;661us;662us;1us;661us;1us;661us;1us;662us;1us;663us;1us;663us;1us;663us;1us;663us;1us;663us;1us;664us;1us;664us;1us;664us;1us;665us;54us;665us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1us;666us;1us;666us;54us;667us;668us;669us;670us;671us;672us;673us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;718us;763us;764us;765us;766us;57us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;721us;722us;723us;724us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;746us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;750us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;755us;763us;764us;765us;766us;55us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;757us;758us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;759us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;761us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;764us;765us;766us;53us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;766us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;849us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;871us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;874us;54us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;874us;55us;667us;668us;669us;670us;671us;672us;673us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;700us;701us;702us;703us;704us;705us;706us;707us;708us;709us;710us;711us;712us;713us;714us;715us;716us;717us;763us;764us;765us;766us;1201us;1202us;2us;667us;668us;1us;667us;1us;668us;2us;669us;670us;1us;669us;1us;670us;2us;671us;672us;1us;671us;1us;672us;1us;673us;2us;674us;720us;1us;674us;1us;674us;5us;675us;759us;760us;761us;762us;7us;675us;759us;760us;761us;762us;804us;805us;2us;676us;677us;1us;677us;2us;678us;679us;1us;679us;2us;680us;681us;1us;681us;2us;682us;683us;1us;683us;2us;684us;685us;1us;685us;2us;686us;687us;1us;687us;2us;688us;689us;1us;689us;2us;690us;691us;1us;691us;2us;692us;693us;1us;693us;2us;694us;695us;1us;695us;2us;696us;697us;1us;697us;2us;698us;699us;1us;699us;2us;700us;701us;1us;701us;2us;702us;703us;1us;703us;2us;704us;705us;1us;705us;2us;706us;707us;1us;707us;2us;708us;709us;1us;709us;2us;710us;711us;1us;711us;2us;712us;713us;1us;713us;2us;714us;715us;1us;715us;2us;716us;717us;1us;718us;3us;718us;1142us;1143us;2us;718us;1143us;1us;719us;2us;719us;1130us;3us;721us;722us;723us;2us;721us;722us;1us;721us;1us;722us;1us;723us;1us;723us;1us;724us;1us;725us;1us;726us;1us;727us;1us;728us;1us;728us;1us;728us;1us;729us;1us;729us;3us;730us;731us;732us;2us;730us;731us;1us;730us;1us;731us;1us;732us;1us;733us;2us;734us;736us;1us;734us;1us;735us;1us;735us;1us;736us;1us;737us;1us;738us;7us;739us;740us;741us;742us;743us;744us;745us;5us;739us;740us;741us;743us;744us;2us;740us;743us;1us;740us;1us;741us;1us;741us;1us;742us;1us;742us;1us;743us;1us;744us;1us;745us;1us;746us;1us;748us;1us;748us;1us;749us;1us;749us;2us;750us;751us;1us;751us;2us;752us;753us;1us;752us;1us;753us;1us;755us;1us;756us;1us;756us;2us;757us;758us;1us;757us;1us;758us;4us;759us;760us;761us;762us;1us;760us;2us;761us;762us;1us;762us;4us;763us;764us;765us;766us;1us;763us;2us;765us;766us;1us;765us;1us;767us;2us;767us;1108us;3us;767us;1108us;1122us;2us;767us;1122us;1us;767us;1us;768us;2us;768us;1129us;1us;768us;1us;769us;2us;769us;1125us;1us;769us;1us;770us;2us;770us;1128us;1us;770us;1us;771us;2us;771us;1141us;1us;771us;1us;772us;2us;772us;1136us;1us;772us;1us;773us;2us;773us;1137us;1us;773us;4us;774us;775us;776us;777us;8us;774us;775us;776us;777us;915us;916us;917us;918us;3us;774us;775us;776us;7us;774us;775us;776us;915us;916us;917us;918us;3us;774us;775us;776us;5us;774us;775us;776us;916us;917us;2us;774us;775us;4us;774us;775us;916us;917us;1us;774us;1us;774us;1us;776us;1us;777us;1us;778us;1us;778us;1us;779us;1us;779us;2us;780us;781us;8us;780us;781us;889us;890us;891us;895us;896us;897us;7us;781us;889us;890us;891us;895us;896us;897us;1us;781us;6us;782us;788us;789us;790us;794us;797us;1us;783us;6us;783us;788us;789us;790us;794us;797us;6us;784us;788us;789us;790us;794us;797us;3us;785us;786us;787us;6us;785us;786us;787us;892us;893us;894us;2us;785us;786us;6us;785us;788us;789us;790us;794us;797us;1us;786us;1us;787us;6us;788us;788us;789us;790us;794us;797us;6us;788us;789us;789us;790us;794us;797us;6us;788us;789us;790us;791us;794us;797us;6us;788us;789us;790us;794us;797us;1070us;1us;788us;1us;789us;1us;790us;1us;790us;1us;791us;2us;791us;1119us;1us;792us;2us;792us;1107us;1us;792us;2us;792us;1107us;1us;793us;1us;794us;1us;794us;1us;795us;1us;795us;1us;795us;1us;796us;2us;796us;1135us;1us;796us;1us;797us;1us;797us;1us;798us;1us;799us;4us;800us;801us;802us;803us;2us;800us;801us;1us;800us;1us;801us;1us;802us;1us;803us;3us;804us;805us;929us;2us;804us;805us;1us;804us;1us;805us;1us;806us;1us;807us;1us;808us;1us;810us;6us;811us;812us;1114us;1115us;1117us;1118us;1us;811us;1us;811us;1us;811us;1us;811us;1us;812us;1us;812us;4us;813us;814us;815us;816us;2us;813us;814us;1us;813us;1us;814us;1us;815us;1us;816us;1us;817us;1us;818us;1us;819us;1us;820us;1us;821us;1us;822us;1us;823us;1us;824us;1us;825us;1us;826us;1us;827us;4us;828us;829us;830us;831us;2us;828us;829us;1us;828us;1us;829us;1us;830us;1us;830us;1us;831us;4us;832us;833us;834us;835us;5us;832us;833us;834us;835us;1144us;2us;832us;833us;1us;832us;1us;833us;1us;834us;1us;835us;4us;836us;837us;838us;839us;2us;836us;837us;1us;836us;1us;837us;1us;838us;1us;839us;10us;840us;841us;842us;843us;844us;845us;846us;847us;848us;849us;15us;840us;841us;842us;843us;844us;845us;846us;847us;848us;849us;854us;1114us;1115us;1117us;1118us;14us;840us;841us;842us;843us;844us;845us;846us;847us;848us;849us;1114us;1115us;1117us;1118us;1us;840us;2us;841us;842us;1us;841us;1us;842us;1us;843us;2us;843us;1115us;1us;844us;1us;845us;1us;846us;1us;847us;1us;848us;1us;849us;1us;849us;1us;850us;1us;850us;1us;850us;1us;850us;1us;850us;1us;850us;1us;851us;1us;852us;1us;853us;2us;853us;856us;2us;854us;855us;1us;854us;1us;855us;1us;855us;5us;857us;858us;859us;860us;861us;2us;857us;858us;1us;857us;1us;858us;1us;859us;1us;860us;1us;861us;1us;862us;1us;863us;1us;864us;1us;865us;1us;867us;1us;869us;1us;870us;1us;870us;2us;871us;872us;1us;872us;1us;873us;1us;874us;1us;874us;1us;875us;1us;876us;1us;877us;1us;877us;1us;877us;2us;877us;878us;1us;877us;1us;877us;1us;878us;1us;881us;1us;883us;1us;883us;1us;883us;1us;883us;2us;885us;886us;1us;885us;5us;886us;1011us;1061us;1062us;1073us;1us;886us;1us;887us;1us;887us;1us;887us;1us;887us;2us;887us;906us;1us;887us;1us;888us;2us;889us;890us;1us;889us;2us;889us;906us;1us;889us;1us;890us;2us;893us;894us;1us;894us;2us;894us;906us;1us;894us;1us;895us;1us;895us;2us;895us;906us;1us;895us;2us;896us;897us;1us;896us;1us;896us;1us;897us;2us;897us;906us;1us;897us;1us;897us;1us;898us;2us;898us;906us;2us;900us;903us;2us;901us;902us;1us;902us;1us;903us;3us;904us;1112us;1113us;1us;905us;1us;906us;5us;908us;909us;910us;911us;912us;3us;908us;909us;910us;1us;908us;1us;910us;1us;912us;2us;913us;914us;1us;913us;1us;913us;1us;913us;1us;914us;1us;914us;1us;916us;1us;919us;2us;921us;923us;1us;921us;1us;922us;1us;922us;1us;922us;1us;923us;1us;923us;1us;924us;1us;924us;1us;926us;1us;926us;1us;927us;1us;927us;1us;928us;4us;928us;1008us;1009us;1010us;1us;928us;1us;928us;1us;928us;1us;929us;1us;929us;1us;930us;5us;931us;932us;933us;934us;935us;2us;931us;932us;1us;931us;1us;932us;1us;933us;1us;934us;1us;935us;2us;936us;937us;2us;936us;937us;2us;936us;937us;1us;936us;1us;937us;6us;938us;939us;940us;941us;942us;943us;5us;938us;939us;940us;941us;942us;4us;938us;939us;940us;941us;2us;938us;939us;1us;938us;1us;939us;1us;940us;1us;940us;1us;942us;1us;942us;1us;943us;1us;943us;1us;944us;1us;944us;1us;945us;1us;945us;1us;945us;2us;946us;947us;1us;947us;2us;948us;949us;1us;949us;2us;951us;952us;1us;951us;1us;952us;3us;953us;954us;955us;2us;953us;954us;1us;953us;1us;954us;3us;956us;957us;959us;2us;956us;957us;1us;956us;1us;957us;1us;958us;1us;958us;3us;960us;961us;963us;2us;960us;961us;1us;960us;1us;961us;1us;962us;1us;962us;5us;964us;965us;966us;967us;968us;3us;964us;965us;968us;2us;964us;965us;1us;964us;1us;965us;2us;966us;967us;2us;966us;967us;2us;966us;967us;1us;966us;1us;967us;3us;969us;970us;973us;2us;969us;970us;1us;969us;1us;970us;2us;971us;972us;2us;971us;972us;2us;971us;972us;1us;971us;1us;972us;8us;974us;975us;976us;977us;977us;1008us;1009us;1010us;8us;974us;975us;976us;977us;1006us;1008us;1009us;1010us;7us;974us;975us;976us;977us;1008us;1009us;1010us;4us;974us;975us;976us;977us;1us;974us;1us;975us;1us;976us;1us;976us;4us;978us;979us;980us;981us;3us;978us;979us;980us;1us;978us;1us;979us;1us;980us;1us;980us;1us;982us;1us;982us;5us;983us;984us;988us;989us;990us;6us;983us;984us;988us;989us;990us;1007us;2us;983us;984us;1us;983us;1us;984us;1us;985us;2us;985us;1130us;1us;985us;2us;986us;987us;3us;986us;987us;1126us;1us;986us;1us;987us;2us;988us;989us;1us;988us;1us;989us;5us;991us;992us;994us;995us;997us;2us;991us;992us;1us;991us;1us;992us;1us;993us;1us;993us;2us;994us;995us;1us;994us;1us;995us;1us;996us;1us;996us;3us;998us;1001us;1014us;1us;998us;2us;999us;1058us;1us;999us;3us;1000us;1112us;1113us;1us;1001us;2us;1002us;1003us;4us;1002us;1003us;1074us;1077us;1us;1002us;1us;1002us;5us;1004us;1005us;1008us;1009us;1010us;1us;1004us;1us;1004us;5us;1007us;1011us;1061us;1062us;1073us;1us;1007us;1us;1008us;1us;1009us;1us;1009us;1us;1010us;4us;1011us;1061us;1062us;1073us;1us;1011us;1us;1011us;1us;1011us;1us;1012us;1us;1013us;1us;1014us;1us;1014us;2us;1015us;1060us;1us;1015us;1us;1015us;32us;1016us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1016us;31us;1017us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1017us;30us;1018us;1019us;1020us;1021us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1018us;29us;1019us;1020us;1021us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1019us;28us;1020us;1021us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1020us;27us;1021us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1021us;26us;1022us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1022us;25us;1023us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1023us;24us;1024us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1024us;23us;1025us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1025us;22us;1026us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1026us;21us;1027us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1027us;20us;1028us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1028us;19us;1029us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1029us;18us;1030us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1030us;17us;1031us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1031us;16us;1032us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1032us;15us;1033us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1033us;14us;1034us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1034us;13us;1035us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1035us;12us;1036us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1036us;11us;1037us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1037us;10us;1038us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1038us;9us;1039us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1039us;8us;1040us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1040us;7us;1041us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1041us;6us;1042us;1043us;1044us;1045us;1046us;1047us;1us;1042us;5us;1043us;1044us;1045us;1046us;1047us;1us;1043us;4us;1044us;1045us;1046us;1047us;1us;1044us;3us;1045us;1046us;1047us;1us;1045us;2us;1046us;1047us;1us;1046us;1us;1047us;1us;1047us;1us;1048us;1us;1048us;1us;1048us;3us;1048us;1049us;1050us;4us;1049us;1050us;1080us;1081us;2us;1049us;1050us;1us;1049us;1us;1050us;2us;1052us;1053us;1us;1053us;1us;1053us;4us;1054us;1061us;1062us;1073us;1us;1054us;1us;1054us;1us;1054us;3us;1055us;1075us;1076us;3us;1056us;1075us;1076us;1us;1057us;1us;1058us;1us;1059us;1us;1060us;3us;1061us;1062us;1073us;2us;1061us;1062us;5us;1061us;1062us;1087us;1088us;1089us;1us;1061us;1us;1062us;5us;1063us;1064us;1065us;1066us;1067us;5us;1063us;1064us;1065us;1066us;1067us;4us;1063us;1064us;1065us;1066us;3us;1063us;1064us;1065us;2us;1063us;1064us;1us;1063us;1us;1064us;1us;1065us;1us;1066us;1us;1067us;1us;1068us;1us;1069us;1us;1070us;1us;1071us;1us;1072us;1us;1073us;2us;1073us;1115us;1us;1073us;2us;1073us;1115us;1us;1074us;2us;1075us;1076us;4us;1075us;1076us;1112us;1113us;1us;1076us;1us;1077us;1us;1077us;1us;1078us;1us;1079us;1us;1079us;7us;1080us;1081us;1082us;1083us;1084us;1085us;1086us;3us;1080us;1081us;1082us;3us;1080us;1081us;1082us;2us;1080us;1081us;1us;1080us;1us;1081us;1us;1082us;3us;1083us;1084us;1090us;1us;1083us;1us;1084us;1us;1085us;1us;1086us;3us;1087us;1088us;1089us;2us;1088us;1089us;1us;1088us;1us;1090us;1us;1091us;2us;1093us;1094us;3us;1093us;1104us;1105us;1us;1093us;1us;1094us;1us;1094us;3us;1095us;1112us;1113us;1us;1096us;1us;1097us;3us;1097us;1104us;1105us;1us;1097us;2us;1098us;1099us;1us;1099us;1us;1099us;1us;1100us;2us;1101us;1102us;1us;1102us;1us;1103us;3us;1104us;1104us;1105us;3us;1104us;1105us;1105us;3us;1104us;1105us;1106us;1us;1104us;1us;1105us;1us;1106us;1us;1107us;1us;1107us;1us;1108us;2us;1108us;1122us;1us;1108us;2us;1108us;1155us;1us;1109us;1us;1110us;1us;1111us;2us;1112us;1113us;1us;1112us;1us;1113us;4us;1114us;1115us;1117us;1118us;1us;1114us;1us;1114us;1us;1115us;1us;1115us;1us;1116us;3us;1117us;1118us;1147us;3us;1117us;1118us;1147us;1us;1117us;1us;1118us;1us;1118us;1us;1118us;1us;1119us;1us;1120us;1us;1121us;1us;1122us;1us;1123us;1us;1124us;1us;1125us;1us;1126us;1us;1127us;1us;1128us;1us;1129us;1us;1130us;1us;1131us;1us;1132us;1us;1133us;1us;1134us;1us;1135us;1us;1136us;1us;1137us;1us;1138us;1us;1139us;1us;1140us;1us;1141us;2us;1142us;1143us;1us;1143us;1us;1144us;1us;1144us;1us;1145us;1us;1146us;1us;1146us;1us;1147us;1us;1148us;1us;1149us;3us;1150us;1152us;1153us;1us;1151us;2us;1152us;1153us;1us;1152us;1us;1153us;1us;1154us;1us;1155us;1us;1156us;1us;1157us;1us;1158us;1us;1159us;2us;1160us;1161us;1us;1161us;1us;1162us;1us;1162us;2us;1164us;1166us;2us;1165us;1167us;1us;1166us;1us;1167us;1us;1168us;1us;1169us;1us;1170us;1us;1171us;1us;1172us;1us;1173us;1us;1175us;1us;1177us;1us;1179us;1us;1181us;1us;1183us;1us;1185us;1us;1187us;1us;1189us;1us;1190us;1us;1191us;1us;1192us;1us;1193us;1us;1194us;1us;1195us;1us;1196us;1us;1197us;1us;1198us;1us;1199us;1us;1200us;1us;1202us;1us;1202us;1us;1203us;2us;1204us;1205us;1us;1204us;1us;1204us;1us;1205us;2us;1206us;1208us;1us;1206us;1us;1206us;1us;1207us;1us;1208us;1us;1209us;1us;1210us;1us;1212us;1us;1214us;2us;1214us;1235us;1us;1214us;1us;1215us;1us;1216us;1us;1217us;2us;1217us;1236us;1us;1217us;1us;1218us;1us;1219us;1us;1220us;1us;1220us;1us;1221us;1us;1222us;1us;1223us;1us;1224us;1us;1224us;1us;1225us;1us;1226us;1us;1227us;1us;1227us;1us;1228us;1us;1229us;1us;1230us;1us;1231us;1us;1232us;1us;1233us;1us;1234us;1us;1235us;1us;1236us;1us;1237us;1us;1238us;1us;1239us;1us;1240us;|]
+let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us;2us;4us;6us;8us;10us;12us;14us;16us;18us;20us;22us;24us;26us;28us;30us;32us;35us;37us;40us;42us;45us;47us;49us;51us;53us;55us;57us;59us;62us;64us;73us;82us;137us;139us;142us;144us;146us;148us;150us;152us;155us;157us;159us;161us;164us;166us;168us;171us;173us;175us;177us;181us;183us;187us;191us;195us;199us;203us;205us;207us;210us;213us;217us;219us;222us;224us;227us;229us;231us;233us;235us;243us;251us;256us;258us;260us;262us;266us;269us;271us;273us;275us;279us;281us;283us;286us;290us;293us;296us;298us;300us;302us;304us;306us;308us;315us;322us;326us;329us;331us;333us;335us;337us;339us;341us;343us;345us;347us;349us;351us;353us;355us;357us;359us;361us;363us;365us;368us;423us;425us;480us;482us;484us;488us;490us;492us;494us;496us;498us;500us;502us;504us;506us;508us;510us;512us;515us;517us;519us;521us;525us;527us;529us;531us;533us;535us;537us;539us;541us;543us;545us;547us;549us;551us;553us;557us;560us;562us;564us;566us;568us;571us;574us;576us;578us;581us;584us;586us;588us;591us;594us;596us;598us;600us;602us;604us;606us;608us;617us;631us;640us;654us;656us;658us;660us;662us;664us;666us;668us;670us;672us;674us;679us;682us;687us;689us;691us;693us;700us;702us;704us;706us;708us;710us;712us;714us;716us;718us;721us;724us;726us;728us;732us;736us;739us;741us;743us;745us;747us;749us;751us;753us;755us;757us;759us;761us;763us;765us;768us;770us;772us;774us;777us;779us;782us;784us;787us;789us;791us;793us;795us;808us;820us;824us;826us;828us;832us;835us;837us;839us;841us;844us;846us;848us;850us;862us;873us;930us;933us;935us;937us;939us;944us;946us;949us;951us;953us;956us;959us;962us;964us;966us;968us;970us;978us;986us;988us;992us;994us;1000us;1002us;1004us;1006us;1008us;1010us;1013us;1015us;1017us;1019us;1022us;1024us;1026us;1031us;1035us;1037us;1040us;1045us;1047us;1051us;1053us;1057us;1063us;1066us;1068us;1070us;1073us;1075us;1077us;1079us;1081us;1085us;1089us;1092us;1094us;1096us;1098us;1100us;1102us;1104us;1106us;1109us;1111us;1116us;1120us;1123us;1125us;1127us;1130us;1132us;1134us;1136us;1138us;1140us;1143us;1145us;1149us;1151us;1153us;1156us;1160us;1162us;1164us;1166us;1170us;1172us;1174us;1176us;1178us;1180us;1182us;1184us;1187us;1189us;1191us;1193us;1201us;1203us;1205us;1207us;1209us;1211us;1213us;1215us;1217us;1219us;1221us;1226us;1228us;1231us;1234us;1237us;1240us;1243us;1245us;1247us;1249us;1255us;1258us;1261us;1264us;1267us;1269us;1271us;1273us;1275us;1277us;1279us;1281us;1283us;1285us;1287us;1289us;1291us;1295us;1298us;1300us;1302us;1305us;1307us;1310us;1313us;1315us;1317us;1320us;1323us;1325us;1327us;1329us;1331us;1333us;1335us;1337us;1339us;1341us;1343us;1345us;1348us;1351us;1353us;1355us;1358us;1360us;1362us;1364us;1366us;1368us;1370us;1372us;1374us;1379us;1384us;1389us;1391us;1393us;1395us;1397us;1399us;1402us;1404us;1407us;1409us;1426us;1448us;1465us;1487us;1489us;1491us;1495us;1497us;1499us;1501us;1504us;1509us;1511us;1513us;1515us;1517us;1519us;1521us;1523us;1525us;1527us;1529us;1531us;1533us;1535us;1537us;1539us;1541us;1543us;1545us;1550us;1554us;1558us;1560us;1562us;1564us;1566us;1568us;1570us;1572us;1574us;1576us;1581us;1586us;1591us;1595us;1598us;1600us;1602us;1604us;1606us;1611us;1616us;1621us;1625us;1629us;1631us;1633us;1635us;1637us;1639us;1641us;1644us;1646us;1648us;1651us;1653us;1655us;1657us;1659us;1661us;1663us;1666us;1668us;1670us;1672us;1674us;1676us;1678us;1680us;1682us;1685us;1687us;1689us;1691us;1693us;1695us;1699us;1702us;1704us;1706us;1708us;1710us;1712us;1714us;1717us;1719us;1721us;1723us;1726us;1728us;1730us;1733us;1736us;1738us;1740us;1742us;1745us;1748us;1750us;1755us;1761us;1765us;1767us;1769us;1771us;1773us;1775us;1777us;1779us;1781us;1783us;1785us;1787us;1789us;1795us;1801us;1806us;1808us;1810us;1812us;1814us;1816us;1818us;1830us;1833us;1836us;1838us;1840us;1845us;1848us;1850us;1852us;1854us;1856us;1858us;1865us;1867us;1869us;1873us;1876us;1878us;1880us;1882us;1884us;1886us;1888us;1890us;1892us;1894us;1899us;1904us;1906us;1910us;1912us;1914us;1916us;1918us;1921us;1923us;1926us;1930us;1932us;1935us;1937us;1939us;1942us;1945us;1947us;1951us;1953us;1955us;1957us;1959us;1961us;1963us;1965us;1967us;1969us;1971us;1973us;1975us;1979us;1981us;1984us;1987us;1990us;1992us;1994us;1996us;2000us;2004us;2007us;2010us;2014us;2017us;2021us;2023us;2025us;2027us;2029us;2042us;2045us;2048us;2057us;2059us;2064us;2066us;2068us;2070us;2072us;2074us;2076us;2082us;2085us;2087us;2089us;2091us;2093us;2095us;2097us;2099us;2101us;2106us;2108us;2113us;2120us;2122us;2124us;2126us;2128us;2130us;2133us;2135us;2138us;2140us;2142us;2153us;2164us;2172us;2174us;2177us;2179us;2181us;2184us;2186us;2188us;2190us;2192us;2194us;2197us;2204us;2206us;2208us;2215us;2217us;2219us;2221us;2223us;2225us;2235us;2237us;2242us;2250us;2253us;2256us;2259us;2261us;2264us;2266us;2268us;2270us;2272us;2274us;2276us;2278us;2282us;2285us;2287us;2289us;2291us;2293us;2298us;2302us;2304us;2306us;2308us;2310us;2312us;2314us;2316us;2319us;2322us;2324us;2326us;2328us;2330us;2335us;2340us;2344us;2347us;2349us;2351us;2353us;2355us;2357us;2359us;2362us;2365us;2368us;2370us;2372us;2374us;2378us;2381us;2383us;2385us;2387us;2391us;2393us;2395us;2397us;2399us;2401us;2403us;2405us;2407us;2409us;2411us;2414us;2416us;2418us;2420us;2422us;2424us;2426us;2428us;2430us;2432us;2434us;2436us;2438us;2440us;2442us;2444us;2446us;2448us;2451us;2454us;2456us;2458us;2460us;2462us;2465us;2472us;2474us;2478us;2484us;2486us;2488us;2490us;2492us;2494us;2496us;2498us;2500us;2503us;2505us;2508us;2510us;2512us;2514us;2516us;2518us;2520us;2522us;2524us;2528us;2532us;2536us;2540us;2543us;2545us;2547us;2549us;2552us;2555us;2557us;2559us;2561us;2563us;2566us;2568us;2570us;2573us;2575us;2577us;2579us;2581us;2583us;2586us;2588us;2590us;2592us;2594us;2596us;2598us;2600us;2602us;2604us;2606us;2608us;2610us;2612us;2614us;2616us;2618us;2620us;2622us;2624us;2626us;2628us;2631us;2633us;2635us;2638us;2641us;2643us;2645us;2647us;2649us;2651us;2653us;2655us;2657us;2659us;2662us;2664us;2666us;2678us;2680us;2683us;2697us;2699us;2701us;2703us;2706us;2709us;2711us;2723us;2735us;2747us;2759us;2771us;2783us;2795us;2807us;2819us;2831us;2844us;2848us;2850us;2852us;2854us;2858us;2860us;2864us;2867us;2869us;2872us;2875us;2877us;2879us;2882us;2884us;2886us;2888us;2892us;2894us;2898us;2900us;2902us;2904us;2908us;2915us;2918us;2932us;2934us;2936us;2945us;2950us;2952us;2954us;2956us;2958us;2960us;2962us;2964us;2966us;2968us;2970us;2974us;2976us;2978us;2980us;2990us;2992us;2994us;2996us;3001us;3003us;3005us;3007us;3009us;3011us;3013us;3016us;3018us;3020us;3022us;3024us;3026us;3028us;3030us;3032us;3034us;3036us;3038us;3041us;3043us;3045us;3047us;3049us;3051us;3053us;3062us;3065us;3067us;3069us;3073us;3076us;3078us;3083us;3088us;3094us;3096us;3098us;3101us;3103us;3105us;3119us;3133us;3147us;3161us;3175us;3189us;3203us;3217us;3230us;3244us;3258us;3273us;3292us;3306us;3310us;3312us;3314us;3316us;3320us;3323us;3326us;3328us;3330us;3332us;3336us;3338us;3340us;3343us;3346us;3348us;3350us;3353us;3355us;3357us;3359us;3362us;3364us;3367us;3369us;3375us;3378us;3380us;3382us;3384us;3387us;3389us;3393us;3396us;3398us;3400us;3402us;3404us;3407us;3409us;3411us;3413us;3468us;3471us;3473us;3475us;3478us;3482us;3485us;3487us;3489us;3491us;3493us;3552us;3555us;3557us;3559us;3561us;3563us;3565us;3567us;3569us;3575us;3577us;3580us;3583us;3586us;3589us;3592us;3595us;3598us;3601us;3604us;3607us;3610us;3613us;3617us;3620us;3623us;3625us;3627us;3629us;3631us;3633us;3635us;3637us;3639us;3641us;3643us;3645us;3647us;3650us;3653us;3655us;3657us;3662us;3664us;3666us;3669us;3671us;3673us;3675us;3677us;3679us;3682us;3685us;3687us;3689us;3692us;3695us;3697us;3699us;3705us;3709us;3711us;3713us;3716us;3718us;3720us;3722us;3726us;3782us;3784us;3786us;3788us;3790us;3845us;3848us;3903us;3905us;3907us;3910us;3912us;3914us;3916us;3918us;3920us;3936us;3943us;3948us;3951us;3953us;3955us;3957us;3959us;3961us;3963us;3965us;3971us;3976us;3979us;3981us;3983us;3985us;3987us;3989us;3991us;3993us;3995us;3997us;3999us;4002us;4005us;4060us;4063us;4118us;4120us;4122us;4124us;4126us;4128us;4130us;4132us;4134us;4136us;4139us;4142us;4145us;4148us;4151us;4153us;4155us;4157us;4159us;4161us;4163us;4165us;4167us;4169us;4171us;4173us;4175us;4230us;4232us;4234us;4289us;4344us;4399us;4454us;4509us;4564us;4619us;4674us;4729us;4784us;4839us;4894us;4949us;5004us;5059us;5114us;5169us;5224us;5279us;5334us;5389us;5444us;5499us;5557us;5612us;5667us;5722us;5778us;5833us;5888us;5943us;5997us;6052us;6107us;6162us;6217us;6272us;6328us;6331us;6333us;6335us;6338us;6340us;6342us;6345us;6347us;6349us;6351us;6354us;6356us;6358us;6364us;6372us;6375us;6377us;6380us;6382us;6385us;6387us;6390us;6392us;6395us;6397us;6400us;6402us;6405us;6407us;6410us;6412us;6415us;6417us;6420us;6422us;6425us;6427us;6430us;6432us;6435us;6437us;6440us;6442us;6445us;6447us;6450us;6452us;6455us;6457us;6460us;6462us;6465us;6467us;6470us;6472us;6475us;6477us;6481us;6484us;6486us;6489us;6493us;6496us;6498us;6500us;6502us;6504us;6506us;6508us;6510us;6512us;6514us;6516us;6518us;6520us;6522us;6526us;6529us;6531us;6533us;6535us;6537us;6540us;6542us;6544us;6546us;6548us;6550us;6552us;6560us;6566us;6569us;6571us;6573us;6575us;6577us;6579us;6581us;6583us;6585us;6587us;6589us;6591us;6593us;6595us;6598us;6600us;6603us;6605us;6607us;6609us;6611us;6613us;6616us;6618us;6620us;6625us;6627us;6630us;6632us;6637us;6639us;6642us;6644us;6646us;6649us;6653us;6656us;6658us;6660us;6663us;6665us;6667us;6670us;6672us;6674us;6677us;6679us;6681us;6684us;6686us;6688us;6691us;6693us;6695us;6698us;6700us;6705us;6714us;6718us;6726us;6730us;6736us;6739us;6744us;6746us;6748us;6750us;6752us;6754us;6756us;6758us;6760us;6763us;6772us;6780us;6782us;6789us;6791us;6798us;6805us;6809us;6816us;6819us;6826us;6828us;6830us;6837us;6844us;6851us;6858us;6860us;6862us;6864us;6866us;6868us;6871us;6873us;6876us;6878us;6881us;6883us;6885us;6887us;6889us;6891us;6893us;6895us;6898us;6900us;6902us;6904us;6906us;6908us;6913us;6916us;6918us;6920us;6922us;6924us;6928us;6931us;6933us;6935us;6937us;6939us;6941us;6943us;6950us;6952us;6954us;6956us;6958us;6960us;6962us;6967us;6970us;6972us;6974us;6976us;6978us;6980us;6982us;6984us;6986us;6988us;6990us;6992us;6994us;6996us;6998us;7000us;7005us;7008us;7010us;7012us;7014us;7016us;7018us;7023us;7029us;7032us;7034us;7036us;7038us;7040us;7045us;7048us;7050us;7052us;7054us;7056us;7067us;7083us;7098us;7100us;7103us;7105us;7107us;7109us;7112us;7114us;7116us;7118us;7120us;7122us;7124us;7126us;7128us;7130us;7132us;7134us;7136us;7138us;7140us;7142us;7144us;7147us;7150us;7152us;7154us;7156us;7162us;7165us;7167us;7169us;7171us;7173us;7175us;7177us;7179us;7181us;7183us;7185us;7187us;7189us;7191us;7194us;7196us;7198us;7200us;7202us;7204us;7206us;7208us;7210us;7212us;7215us;7217us;7219us;7221us;7223us;7225us;7227us;7229us;7231us;7234us;7236us;7242us;7244us;7246us;7248us;7250us;7252us;7255us;7257us;7259us;7262us;7264us;7267us;7269us;7271us;7274us;7276us;7279us;7281us;7283us;7285us;7288us;7290us;7293us;7295us;7297us;7299us;7302us;7304us;7306us;7308us;7311us;7314us;7317us;7319us;7321us;7325us;7327us;7329us;7335us;7339us;7341us;7343us;7345us;7348us;7350us;7352us;7354us;7356us;7358us;7360us;7362us;7365us;7367us;7369us;7371us;7373us;7375us;7377us;7379us;7381us;7383us;7385us;7387us;7389us;7391us;7396us;7398us;7400us;7402us;7404us;7406us;7408us;7414us;7417us;7419us;7421us;7423us;7425us;7427us;7430us;7433us;7436us;7438us;7440us;7447us;7453us;7458us;7461us;7463us;7465us;7467us;7469us;7471us;7473us;7475us;7477us;7479us;7481us;7483us;7485us;7487us;7490us;7492us;7495us;7497us;7500us;7502us;7504us;7508us;7511us;7513us;7515us;7519us;7522us;7524us;7526us;7528us;7530us;7534us;7537us;7539us;7541us;7543us;7545us;7551us;7555us;7558us;7560us;7562us;7565us;7568us;7571us;7573us;7575us;7579us;7582us;7584us;7586us;7589us;7592us;7595us;7597us;7599us;7608us;7617us;7625us;7630us;7632us;7634us;7636us;7638us;7643us;7647us;7649us;7651us;7653us;7655us;7657us;7659us;7665us;7672us;7675us;7677us;7679us;7681us;7684us;7686us;7689us;7693us;7695us;7697us;7700us;7702us;7704us;7710us;7713us;7715us;7717us;7719us;7721us;7724us;7726us;7728us;7730us;7732us;7736us;7738us;7741us;7743us;7747us;7749us;7752us;7757us;7759us;7761us;7767us;7769us;7771us;7777us;7779us;7781us;7783us;7785us;7787us;7792us;7794us;7796us;7798us;7800us;7802us;7804us;7806us;7809us;7811us;7813us;7846us;7848us;7880us;7882us;7913us;7915us;7945us;7947us;7976us;7978us;8006us;8008us;8035us;8037us;8063us;8065us;8090us;8092us;8116us;8118us;8141us;8143us;8165us;8167us;8188us;8190us;8210us;8212us;8231us;8233us;8251us;8253us;8270us;8272us;8288us;8290us;8305us;8307us;8321us;8323us;8336us;8338us;8350us;8352us;8363us;8365us;8375us;8377us;8386us;8388us;8396us;8398us;8405us;8407us;8413us;8415us;8420us;8422us;8426us;8428us;8431us;8433us;8435us;8437us;8439us;8441us;8443us;8447us;8452us;8455us;8457us;8459us;8462us;8464us;8466us;8471us;8473us;8475us;8477us;8481us;8485us;8487us;8489us;8491us;8493us;8497us;8500us;8506us;8508us;8510us;8516us;8522us;8527us;8531us;8534us;8536us;8538us;8540us;8542us;8544us;8546us;8548us;8550us;8552us;8554us;8556us;8559us;8561us;8564us;8566us;8569us;8574us;8576us;8578us;8580us;8582us;8584us;8586us;8594us;8598us;8602us;8605us;8607us;8609us;8611us;8615us;8617us;8619us;8621us;8623us;8627us;8630us;8632us;8634us;8636us;8639us;8643us;8645us;8647us;8649us;8653us;8655us;8657us;8661us;8663us;8666us;8668us;8670us;8672us;8675us;8677us;8679us;8683us;8687us;8691us;8693us;8695us;8697us;8699us;8701us;8703us;8706us;8708us;8711us;8713us;8715us;8717us;8720us;8722us;8724us;8729us;8731us;8733us;8735us;8737us;8739us;8743us;8747us;8749us;8751us;8753us;8755us;8757us;8759us;8761us;8763us;8765us;8767us;8769us;8771us;8773us;8775us;8777us;8779us;8781us;8783us;8785us;8787us;8789us;8791us;8793us;8795us;8797us;8799us;8801us;8804us;8806us;8808us;8810us;8812us;8814us;8816us;8818us;8820us;8822us;8826us;8828us;8831us;8833us;8835us;8837us;8839us;8841us;8843us;8845us;8847us;8850us;8852us;8854us;8856us;8859us;8862us;8864us;8866us;8868us;8870us;8872us;8874us;8876us;8878us;8880us;8882us;8884us;8886us;8888us;8890us;8892us;8894us;8896us;8898us;8900us;8902us;8904us;8906us;8908us;8910us;8912us;8914us;8916us;8918us;8920us;8922us;8925us;8927us;8929us;8931us;8934us;8936us;8938us;8940us;8942us;8944us;8946us;8948us;8950us;8953us;8955us;8957us;8959us;8961us;8964us;8966us;8968us;8970us;8972us;8974us;8976us;8978us;8980us;8982us;8984us;8986us;8988us;8990us;8992us;8994us;8996us;8998us;9000us;9002us;9004us;9006us;9008us;9010us;9012us;9014us;9016us;|]
+let _fsyacc_action_rows = 2099
+let _fsyacc_actionTableElements = [|16us;16438us;22us;77us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;51us;0us;49152us;95us;16516us;13us;16556us;22us;246us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;232us;0us;49152us;7us;16556us;10us;14us;21us;12us;68us;13us;74us;322us;84us;11us;89us;38us;102us;292us;0us;49152us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;49152us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;49152us;0us;16389us;0us;16390us;0us;16391us;0us;16392us;0us;16393us;0us;16394us;4us;32768us;10us;14us;21us;37us;68us;13us;84us;36us;0us;16395us;4us;32768us;10us;14us;21us;37us;68us;13us;84us;36us;0us;16396us;4us;32768us;10us;14us;21us;37us;68us;13us;84us;36us;0us;16397us;5us;16556us;10us;14us;68us;13us;74us;322us;89us;38us;102us;292us;0us;16398us;5us;16556us;10us;14us;68us;13us;74us;322us;89us;38us;102us;292us;0us;16399us;5us;16556us;10us;14us;68us;13us;74us;322us;89us;38us;102us;292us;0us;16400us;16us;16401us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;102us;292us;109us;16556us;122us;16556us;138us;16556us;151us;16556us;163us;16556us;0us;16402us;3us;16650us;44us;520us;45us;519us;46us;521us;87us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;109us;2069us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;122us;758us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;138us;774us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;151us;2074us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;26us;16403us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;0us;16404us;2us;16405us;21us;37us;84us;36us;0us;16406us;0us;16407us;0us;16408us;1us;32768us;194us;39us;0us;16410us;6us;16409us;93us;1961us;101us;1966us;179us;43us;194us;44us;195us;2049us;202us;2048us;0us;16411us;0us;16412us;0us;16413us;1us;16414us;77us;17493us;0us;16415us;0us;16416us;2us;32768us;10us;48us;204us;49us;0us;16417us;1us;32768us;10us;50us;0us;16418us;4us;16437us;10us;52us;21us;2016us;68us;2015us;84us;2014us;0us;16419us;1us;16556us;74us;322us;3us;16650us;44us;520us;45us;519us;46us;521us;1us;17568us;104us;2035us;5us;32768us;10us;1094us;21us;58us;47us;1956us;194us;1955us;204us;1078us;1us;16420us;77us;1958us;0us;16421us;0us;16422us;1us;17568us;104us;2035us;4us;32768us;10us;1094us;47us;1956us;194us;1955us;204us;1078us;1us;16423us;77us;1958us;0us;16424us;1us;16425us;152us;60us;0us;16426us;1us;16428us;152us;60us;0us;16427us;1us;17562us;70us;2032us;16us;16438us;22us;77us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;85us;0us;16429us;3us;16650us;44us;520us;45us;519us;46us;521us;8us;32768us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;109us;2069us;110us;107us;122us;758us;151us;2074us;18us;16438us;22us;77us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;70us;2047us;74us;322us;78us;2046us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;86us;0us;16430us;0us;16431us;0us;16432us;15us;16438us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;82us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;1us;17564us;21us;2033us;0us;16433us;0us;16434us;6us;16437us;15us;2084us;16us;2086us;17us;2087us;21us;2016us;68us;2015us;84us;2014us;0us;16435us;0us;16436us;3us;16437us;21us;2016us;68us;2015us;84us;2014us;17us;16437us;21us;2016us;37us;16446us;38us;16446us;39us;16446us;40us;16446us;44us;16446us;45us;16446us;46us;16446us;68us;2015us;74us;16446us;84us;2014us;89us;16446us;102us;16446us;109us;16446us;110us;16446us;122us;16446us;151us;16446us;3us;17547us;21us;2016us;68us;2015us;84us;2014us;15us;16441us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;90us;0us;16439us;3us;32768us;21us;2016us;68us;2015us;84us;2014us;4us;16556us;74us;322us;89us;38us;102us;292us;204us;90us;0us;16440us;0us;16442us;0us;16443us;3us;16650us;44us;520us;45us;519us;46us;521us;8us;32768us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;109us;2069us;110us;107us;122us;758us;151us;2074us;3us;32768us;70us;2047us;78us;2046us;204us;101us;5us;32768us;22us;123us;47us;1956us;58us;2044us;137us;2045us;194us;1955us;0us;16444us;0us;16445us;0us;16446us;1us;16556us;74us;322us;1us;16458us;132us;133us;0us;16447us;0us;16448us;0us;16449us;1us;16556us;74us;322us;1us;17570us;111us;2036us;1us;17572us;119us;2037us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;2us;16718us;34us;2064us;161us;17597us;1us;32768us;78us;114us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;16451us;70us;117us;0us;16450us;80us;32768us;13us;1206us;22us;119us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;26us;16452us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;29us;32768us;15us;2084us;16us;2086us;17us;2087us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;1us;17560us;19us;2031us;0us;16453us;8us;16556us;47us;1956us;58us;2044us;74us;322us;89us;38us;102us;292us;137us;2045us;194us;1955us;204us;90us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;0us;16454us;15us;16438us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;85us;1us;32768us;143us;128us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;0us;16455us;15us;16438us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;44us;16556us;45us;16556us;46us;16556us;74us;322us;89us;38us;102us;292us;109us;16556us;110us;16556us;122us;16556us;151us;16556us;204us;85us;1us;32768us;143us;132us;0us;16456us;1us;16556us;74us;322us;1us;16458us;132us;133us;0us;16457us;2us;16500us;70us;137us;88us;225us;7us;16556us;22us;140us;50us;596us;57us;598us;74us;322us;112us;597us;137us;165us;153us;151us;0us;16459us;0us;16460us;55us;16478us;14us;16556us;22us;161us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;48us;16556us;49us;16556us;50us;596us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;57us;598us;59us;16556us;67us;16556us;73us;16556us;74us;322us;89us;16556us;92us;16556us;93us;16556us;97us;16556us;101us;16556us;107us;16556us;110us;16556us;112us;597us;114us;16556us;120us;16556us;121us;16556us;123us;16556us;137us;165us;149us;16556us;153us;151us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;187us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;202us;16556us;203us;16556us;1us;17564us;21us;2033us;14us;16478us;14us;16556us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;1us;16500us;88us;225us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;1us;16500us;88us;225us;0us;16461us;1us;16500us;88us;225us;0us;16462us;0us;16463us;0us;16464us;1us;32768us;121us;152us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16465us;0us;16466us;16us;16478us;14us;16556us;22us;169us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;204us;159us;3us;32768us;10us;1094us;143us;157us;204us;1078us;0us;16467us;0us;16468us;1us;32768us;143us;160us;0us;16469us;14us;16478us;14us;16556us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16470us;0us;16471us;15us;16478us;14us;16556us;22us;169us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;3us;32768us;10us;1094us;143us;167us;204us;1078us;0us;16472us;0us;16473us;14us;16478us;14us;16556us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16474us;0us;16475us;0us;16476us;0us;16477us;2us;17566us;21us;2021us;84us;2022us;14us;16478us;14us;16556us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;0us;16479us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;16650us;44us;520us;45us;519us;46us;521us;10us;32768us;14us;600us;48us;198us;49us;357us;51us;437us;52us;358us;53us;359us;55us;193us;110us;196us;112us;599us;120us;203us;47us;32768us;14us;600us;47us;1956us;48us;198us;49us;357us;51us;437us;52us;358us;53us;359us;55us;193us;57us;587us;59us;684us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;575us;97us;1740us;101us;1966us;107us;1895us;110us;196us;112us;599us;114us;1893us;120us;203us;121us;725us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;1us;17570us;111us;2036us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;2us;16718us;34us;2064us;161us;17597us;1us;32768us;78us;187us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;2us;16488us;26us;208us;88us;206us;1us;16451us;70us;117us;0us;16480us;31us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;6us;16481us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;190us;1951us;194us;1955us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;6us;16482us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;190us;1951us;194us;1955us;0us;16483us;1us;17572us;119us;2037us;0us;16484us;6us;16573us;37us;2065us;38us;2068us;49us;356us;51us;439us;109us;2069us;110us;199us;1us;17572us;119us;2037us;0us;16485us;1us;16556us;74us;322us;0us;16486us;1us;32768us;78us;204us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16487us;4us;16650us;22us;218us;44us;520us;45us;519us;46us;521us;0us;16489us;4us;16650us;22us;218us;44us;520us;45us;519us;46us;521us;2us;32768us;20us;210us;204us;211us;0us;16490us;0us;16491us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;1us;16492us;98us;214us;5us;16650us;10us;1094us;44us;520us;45us;519us;46us;521us;204us;1078us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;0us;16493us;0us;16494us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;1us;32768us;19us;220us;0us;16495us;0us;16496us;0us;16497us;1us;16500us;88us;225us;0us;16498us;15us;16478us;14us;16556us;22us;169us;44us;16556us;45us;16556us;46us;16556us;48us;16556us;49us;16556us;51us;16556us;52us;16556us;53us;16556us;55us;16556us;74us;322us;110us;16556us;112us;16556us;120us;16556us;3us;32768us;19us;2025us;20us;2026us;143us;2027us;0us;16499us;2us;32768us;10us;229us;204us;230us;0us;16501us;1us;32768us;10us;231us;0us;16502us;4us;32768us;10us;233us;21us;2016us;68us;2015us;84us;2014us;0us;16503us;1us;16504us;152us;60us;0us;16505us;1us;16507us;152us;60us;0us;16506us;1us;17562us;70us;2032us;95us;16516us;13us;16556us;22us;246us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;266us;0us;16508us;4us;16650us;44us;520us;45us;519us;46us;521us;204us;261us;87us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;109us;2069us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;122us;758us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;138us;774us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;151us;2074us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;96us;16516us;13us;16556us;22us;246us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;70us;286us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;267us;0us;16509us;0us;16510us;94us;16516us;13us;16556us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;251us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;1us;17564us;21us;2033us;0us;16511us;0us;16512us;6us;32768us;15us;2084us;16us;2086us;17us;2087us;21us;2016us;68us;2015us;84us;2014us;0us;16513us;0us;16514us;0us;16515us;4us;16650us;44us;520us;45us;519us;46us;521us;204us;261us;87us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;109us;2069us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;122us;758us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;138us;774us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;151us;2074us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;29us;16519us;21us;2016us;63us;1295us;64us;1281us;68us;2015us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;84us;2014us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;94us;16518us;13us;16556us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;266us;0us;16517us;0us;16520us;0us;16521us;21us;16524us;21us;2016us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;68us;2015us;74us;322us;84us;2014us;89us;38us;102us;292us;109us;16556us;122us;16556us;138us;16556us;151us;16556us;163us;16556us;204us;266us;0us;16522us;94us;16525us;13us;16556us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;266us;0us;16523us;3us;32768us;21us;2016us;68us;2015us;84us;2014us;3us;16535us;21us;2016us;68us;2015us;84us;2014us;6us;32768us;15us;2084us;16us;2086us;17us;2087us;21us;2016us;68us;2015us;84us;2014us;4us;32768us;21us;2016us;68us;2015us;84us;2014us;143us;315us;4us;16556us;74us;322us;89us;38us;102us;292us;204us;266us;0us;16526us;0us;16527us;0us;16528us;3us;16650us;44us;520us;45us;519us;46us;521us;11us;32768us;33us;776us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;42us;790us;109us;2069us;122us;758us;138us;774us;151us;2074us;163us;770us;0us;16529us;1us;16529us;128us;1107us;0us;16530us;80us;16530us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1112us;0us;16531us;1us;16556us;74us;322us;1us;16579us;132us;363us;0us;16532us;0us;16533us;2us;32768us;70us;286us;204us;288us;5us;32768us;22us;301us;47us;1956us;57us;2042us;137us;2043us;194us;1955us;0us;16534us;0us;16535us;2us;16555us;10us;1094us;204us;1078us;0us;16536us;0us;16537us;7us;32768us;10us;1094us;37us;2065us;38us;2068us;47us;1956us;109us;2069us;194us;1955us;204us;1078us;1us;16538us;77us;1958us;0us;16539us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;6us;16540us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;190us;1951us;194us;1955us;0us;16541us;4us;32768us;15us;2084us;16us;2086us;17us;2087us;77us;1958us;0us;16542us;1us;16543us;77us;1958us;6us;16556us;57us;2042us;74us;322us;89us;38us;102us;292us;137us;2043us;204us;268us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16544us;0us;16545us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16546us;0us;16547us;0us;16548us;0us;16549us;1us;16550us;77us;1958us;94us;16516us;13us;16556us;24us;16556us;25us;16556us;29us;16556us;30us;16556us;32us;16556us;33us;16556us;37us;16556us;38us;16556us;39us;16556us;40us;16556us;42us;16556us;44us;16556us;45us;16556us;46us;16556us;47us;16556us;57us;16556us;63us;16556us;67us;16556us;71us;16556us;72us;16556us;73us;16556us;74us;322us;75us;16556us;86us;16556us;87us;16556us;89us;38us;90us;16556us;91us;16556us;92us;16556us;93us;16556us;97us;16556us;99us;16556us;101us;16556us;102us;292us;107us;16556us;108us;16556us;109us;16556us;115us;16556us;116us;16556us;117us;16556us;118us;16556us;120us;16556us;122us;16556us;123us;16556us;124us;16556us;125us;16556us;126us;16556us;127us;16556us;131us;16556us;134us;16556us;135us;16556us;137us;16556us;138us;16556us;144us;16556us;147us;16556us;148us;16556us;149us;16556us;150us;16556us;151us;16556us;155us;16556us;156us;16556us;159us;16556us;160us;16556us;163us;16556us;164us;16556us;165us;16556us;167us;16556us;168us;16556us;169us;16556us;170us;16556us;171us;16556us;172us;16556us;173us;16556us;174us;16556us;175us;16556us;176us;16556us;177us;16556us;178us;16556us;179us;16556us;181us;16556us;182us;16556us;184us;16556us;185us;16556us;188us;16556us;190us;16556us;194us;16556us;195us;16556us;196us;16556us;200us;16556us;201us;16556us;202us;16556us;203us;16556us;204us;269us;3us;32768us;10us;1094us;143us;313us;204us;1078us;0us;16551us;0us;16552us;0us;16553us;6us;16556us;19us;16602us;20us;16602us;22us;403us;74us;322us;143us;16602us;204us;409us;3us;32768us;19us;2025us;20us;2026us;143us;2027us;0us;16554us;0us;16555us;1us;16557us;74us;322us;0us;16558us;14us;32768us;10us;1094us;15us;2097us;37us;2066us;38us;2068us;39us;2071us;40us;2073us;47us;1956us;61us;2095us;95us;2096us;109us;2069us;151us;2074us;164us;353us;194us;1955us;204us;327us;2us;17566us;21us;2021us;84us;2022us;8us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;56us;325us;61us;2095us;95us;2096us;204us;1078us;1us;17564us;21us;2033us;0us;16559us;1us;16991us;56us;328us;1us;17564us;21us;2033us;0us;16560us;0us;16561us;0us;16562us;0us;16563us;9us;17565us;37us;2065us;38us;2068us;39us;2070us;40us;2073us;47us;1956us;109us;2069us;151us;2074us;164us;353us;194us;1955us;0us;16564us;3us;17595us;35us;2063us;36us;2062us;77us;1958us;30us;17264us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16565us;3us;32768us;22us;342us;47us;1956us;194us;1955us;3us;17595us;35us;2063us;36us;2062us;77us;1958us;30us;17264us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16566us;2us;32768us;47us;1956us;194us;1955us;4us;32768us;15us;2084us;16us;2086us;17us;2087us;77us;1958us;2us;17595us;35us;2063us;36us;2062us;30us;17264us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16567us;1us;32768us;78us;348us;0us;16568us;1us;32768us;78us;350us;0us;16569us;1us;17495us;78us;352us;0us;16570us;1us;32768us;78us;354us;0us;16571us;11us;16573us;30us;780us;33us;776us;37us;2065us;38us;2068us;42us;790us;49us;356us;51us;439us;109us;2069us;110us;483us;138us;774us;163us;770us;0us;16572us;0us;16574us;0us;16575us;0us;16576us;3us;16650us;44us;520us;45us;519us;46us;521us;1us;16720us;85us;634us;0us;16577us;1us;16556us;74us;322us;1us;16579us;132us;363us;0us;16578us;39us;16556us;14us;16580us;15us;16580us;16us;16580us;17us;16580us;19us;16580us;20us;16580us;21us;16580us;30us;16580us;33us;16580us;37us;16580us;38us;16580us;39us;16580us;40us;16580us;42us;16580us;48us;16580us;49us;16580us;51us;16580us;52us;16580us;53us;16580us;55us;16580us;61us;16580us;68us;16580us;74us;322us;84us;16580us;88us;316us;89us;16580us;95us;16580us;102us;16580us;109us;16580us;110us;16580us;112us;16580us;120us;16580us;122us;16580us;132us;16580us;138us;16580us;143us;16580us;151us;16580us;152us;16580us;163us;16580us;0us;16581us;3us;16650us;44us;520us;45us;519us;46us;521us;2us;17595us;35us;2063us;36us;2062us;1us;16874us;93us;892us;1us;16664us;133us;536us;3us;32768us;10us;1094us;70us;373us;204us;1078us;6us;16556us;22us;376us;50us;596us;57us;598us;74us;322us;112us;597us;153us;389us;0us;16582us;0us;16583us;9us;16556us;15us;2084us;16us;2086us;17us;2087us;22us;399us;50us;596us;57us;598us;74us;322us;112us;597us;153us;389us;1us;17564us;21us;2033us;7us;16556us;10us;16602us;15us;16602us;16us;16602us;17us;16602us;74us;322us;88us;16602us;204us;409us;1us;16659us;88us;525us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;1us;16659us;88us;525us;0us;16584us;0us;16585us;0us;16586us;1us;16659us;88us;525us;0us;16587us;0us;16588us;0us;16589us;1us;32768us;121us;390us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16590us;0us;16591us;10us;16556us;10us;16602us;15us;16602us;22us;403us;37us;16602us;39us;16602us;61us;16602us;74us;322us;95us;16602us;143us;16602us;204us;397us;8us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;61us;2095us;95us;2096us;143us;395us;204us;1078us;0us;16592us;0us;16593us;9us;16556us;10us;16602us;15us;16602us;37us;16602us;39us;16602us;61us;16602us;74us;322us;95us;16602us;143us;398us;204us;409us;0us;16594us;1us;16556us;74us;322us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16595us;0us;16596us;6us;16556us;10us;16602us;15us;16602us;16us;16602us;17us;16602us;74us;322us;204us;409us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16597us;0us;16598us;0us;16599us;0us;16600us;14us;16556us;10us;16602us;15us;16602us;16us;16602us;17us;16602us;19us;16602us;20us;16602us;37us;16602us;39us;16602us;61us;16602us;74us;322us;88us;16602us;95us;16602us;143us;16602us;204us;409us;0us;16601us;2us;17566us;21us;2021us;84us;2022us;14us;16556us;10us;16602us;15us;16602us;16us;16602us;17us;16602us;19us;16602us;20us;16602us;37us;16602us;39us;16602us;61us;16602us;74us;322us;88us;16602us;95us;16602us;143us;16602us;204us;409us;0us;16603us;1us;17570us;111us;2036us;0us;16604us;1us;17570us;111us;2036us;2us;32768us;20us;418us;204us;419us;0us;16605us;0us;16606us;1us;16607us;132us;421us;1us;17570us;111us;2036us;0us;16608us;1us;16556us;74us;322us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;17334us;78us;1681us;1us;32768us;70us;427us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16609us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;17334us;78us;1681us;11us;32768us;10us;1094us;15us;2097us;21us;434us;26us;416us;37us;2093us;39us;2094us;61us;2095us;70us;432us;88us;414us;95us;2096us;204us;1078us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16610us;0us;16611us;0us;16612us;0us;16613us;1us;16614us;49us;438us;0us;16615us;1us;16616us;49us;440us;0us;16617us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;16650us;44us;520us;45us;519us;46us;521us;15us;32768us;14us;600us;30us;780us;33us;776us;42us;790us;48us;355us;49us;357us;51us;437us;52us;358us;53us;359us;55us;528us;110us;483us;112us;599us;120us;471us;138us;774us;163us;770us;52us;32768us;14us;600us;30us;780us;33us;776us;42us;790us;47us;1956us;48us;355us;49us;357us;51us;437us;52us;358us;53us;359us;55us;528us;57us;587us;59us;684us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;575us;97us;1740us;101us;1966us;107us;1895us;110us;483us;112us;599us;114us;1893us;120us;471us;121us;725us;123us;1894us;138us;774us;149us;1892us;163us;770us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;0us;16618us;0us;16619us;4us;17570us;10us;1094us;110us;492us;111us;2036us;204us;1078us;1us;17560us;19us;2031us;0us;16620us;0us;16621us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;7us;16657us;36us;1777us;47us;1956us;71us;1791us;88us;522us;92us;1949us;190us;1951us;194us;1955us;0us;16622us;0us;16623us;3us;16650us;44us;520us;45us;519us;46us;521us;1us;17570us;111us;2036us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;2us;16718us;34us;2064us;161us;17597us;1us;32768us;78us;460us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;2us;16488us;26us;208us;88us;206us;1us;17560us;19us;2031us;0us;16624us;0us;16625us;1us;17560us;19us;2031us;0us;16626us;1us;17560us;19us;2031us;0us;16627us;1us;17560us;19us;2031us;0us;16628us;37us;32768us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;1us;16664us;133us;536us;9us;32768us;10us;1094us;15us;2097us;21us;478us;37us;2093us;39us;2094us;61us;2095us;70us;474us;95us;2096us;204us;1078us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;17560us;19us;2031us;0us;16629us;0us;16630us;0us;16631us;1us;17564us;21us;2033us;0us;16632us;1us;16556us;74us;322us;0us;16633us;1us;17572us;119us;2037us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;32768us;10us;1094us;194us;1955us;204us;1078us;3us;32768us;10us;1094us;78us;487us;204us;1078us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16634us;0us;16635us;0us;16636us;0us;16637us;1us;17572us;119us;2037us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;32768us;10us;1094us;194us;1955us;204us;1078us;1us;16642us;78us;503us;9us;32768us;10us;1094us;15us;2097us;21us;501us;37us;2093us;39us;2094us;61us;2095us;70us;497us;95us;2096us;204us;1078us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;2us;16488us;26us;208us;88us;206us;0us;16638us;0us;16639us;0us;16640us;0us;16641us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16643us;0us;16644us;1us;16925us;77us;507us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;0us;16645us;1us;32768us;77us;510us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;0us;16646us;0us;16647us;4us;32768us;67us;514us;93us;1961us;101us;1966us;194us;1955us;1us;32768us;77us;515us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;0us;16648us;0us;16649us;0us;16651us;0us;16652us;0us;16653us;0us;16654us;31us;16556us;10us;16656us;14us;16656us;15us;16656us;16us;16656us;17us;16656us;19us;16656us;20us;16656us;21us;16656us;22us;543us;30us;16656us;33us;16656us;37us;16656us;39us;16656us;42us;16656us;44us;16656us;45us;16656us;46us;16656us;51us;16656us;53us;16656us;55us;16656us;61us;16656us;74us;322us;84us;16656us;88us;16656us;95us;16656us;110us;16656us;112us;16656us;120us;16656us;138us;16656us;143us;16656us;163us;16656us;3us;32768us;19us;2025us;20us;2026us;143us;2027us;0us;16655us;6us;16556us;19us;16602us;20us;16602us;22us;403us;74us;322us;143us;16602us;204us;409us;3us;32768us;19us;2025us;20us;2026us;143us;2027us;0us;16658us;37us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;47us;1956us;57us;1881us;61us;2095us;67us;1875us;89us;632us;92us;1949us;93us;1866us;95us;2096us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;33us;16668us;35us;2063us;36us;2062us;57us;17595us;72us;17595us;73us;17595us;93us;17595us;107us;17595us;123us;17595us;133us;540us;137us;17595us;149us;17595us;156us;17595us;167us;17595us;168us;17595us;169us;17595us;170us;17595us;171us;17595us;172us;17595us;173us;17595us;174us;17595us;175us;17595us;176us;17595us;177us;17595us;178us;17595us;179us;17595us;181us;17595us;182us;17595us;195us;17595us;196us;17595us;200us;17595us;201us;17595us;202us;17595us;203us;17595us;0us;16660us;30us;32768us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;16668us;133us;540us;0us;16661us;0us;16662us;0us;16663us;3us;32768us;10us;1094us;194us;1955us;204us;1078us;0us;16665us;0us;16666us;0us;16667us;2us;32768us;155us;542us;194us;1955us;0us;16669us;0us;16670us;1us;16556us;74us;322us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16671us;0us;16672us;0us;16673us;2us;17566us;21us;2021us;84us;2022us;14us;16556us;10us;16675us;14us;16675us;15us;16675us;16us;16675us;17us;16675us;19us;16675us;20us;16675us;21us;16675us;61us;16675us;62us;16675us;74us;322us;112us;16675us;143us;16675us;197us;16675us;0us;16674us;4us;32768us;48us;562us;49us;564us;52us;565us;204us;559us;5us;17570us;48us;562us;49us;564us;52us;565us;111us;2036us;204us;559us;4us;17570us;10us;1094us;110us;492us;111us;2036us;204us;1078us;1us;17560us;19us;2031us;0us;16676us;1us;17560us;19us;2031us;0us;16677us;0us;16678us;1us;17570us;111us;2036us;1us;17560us;19us;2031us;0us;16679us;1us;32768us;49us;563us;0us;16680us;0us;16681us;0us;16682us;3us;16650us;44us;520us;45us;519us;46us;521us;37us;32768us;47us;1956us;57us;587us;59us;684us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;575us;97us;1740us;101us;1966us;107us;1895us;114us;1893us;121us;725us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;2us;17384us;77us;1958us;156us;569us;1us;32768us;202us;570us;2us;32768us;10us;1094us;204us;1078us;0us;16683us;0us;16684us;0us;16685us;0us;16686us;59us;32768us;47us;1956us;57us;587us;59us;2001us;63us;1983us;64us;1981us;67us;1788us;70us;1985us;71us;708us;73us;590us;75us;1989us;79us;706us;83us;1993us;89us;576us;90us;1990us;91us;1991us;92us;1949us;93us;1780us;97us;1741us;103us;1986us;107us;1895us;114us;1893us;123us;1894us;144us;1996us;146us;1992us;149us;1892us;156us;1998us;159us;1995us;161us;1987us;162us;1988us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;183us;1994us;184us;1982us;185us;1979us;186us;1978us;187us;1744us;188us;1973us;189us;1977us;190us;1952us;191us;1975us;192us;1974us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1897us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;16859us;89us;578us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16687us;5us;16556us;61us;2075us;62us;2077us;74us;322us;197us;2078us;204us;584us;5us;32768us;10us;1094us;61us;2075us;62us;2077us;197us;2078us;204us;1078us;0us;16688us;0us;16689us;3us;32768us;61us;2075us;62us;2077us;197us;2078us;0us;16690us;0us;16691us;2us;32768us;73us;590us;93us;1882us;0us;16692us;0us;16693us;2us;16556us;74us;322us;204us;594us;3us;32768us;10us;1094us;66us;2079us;204us;1078us;0us;16694us;0us;16695us;1us;32768us;66us;2079us;0us;16696us;0us;16697us;0us;16698us;0us;16699us;0us;16700us;0us;16701us;7us;32768us;10us;1094us;47us;1956us;92us;1949us;93us;608us;190us;1951us;194us;1955us;204us;1078us;3us;16702us;34us;2064us;77us;1958us;161us;17597us;2us;32768us;47us;1956us;194us;1955us;1us;16703us;77us;1958us;0us;16704us;0us;16705us;0us;16706us;1us;16556us;74us;322us;4us;32768us;94us;2083us;95us;2080us;96us;2082us;98us;613us;0us;16707us;2us;16720us;85us;634us;98us;613us;1us;16714us;98us;614us;1us;16556us;74us;322us;2us;16556us;74us;322us;144us;625us;0us;16708us;0us;16709us;2us;32768us;92us;1949us;190us;1951us;1us;16710us;90us;619us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;16711us;90us;643us;1us;32768us;161us;622us;1us;16556us;74us;322us;1us;32768us;162us;624us;0us;16712us;0us;16713us;1us;32768us;161us;627us;3us;16556us;74us;322us;85us;16715us;162us;16715us;1us;16720us;85us;634us;1us;32768us;162us;630us;0us;16716us;0us;16717us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;16719us;77us;1901us;32us;32768us;47us;1956us;53us;648us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;664us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;16721us;132us;638us;1us;17331us;132us;638us;1us;17333us;132us;638us;32us;32768us;47us;1956us;53us;648us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;664us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16722us;0us;16723us;1us;17382us;90us;643us;1us;17383us;90us;643us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;16724us;77us;17442us;1us;16725us;77us;1901us;1us;16726us;77us;17442us;1us;16727us;77us;1901us;2us;32768us;92us;1949us;190us;1951us;1us;32768us;78us;650us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16728us;3us;17385us;78us;655us;80us;653us;90us;1762us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;4us;16729us;47us;17398us;71us;17398us;92us;17398us;194us;17398us;5us;32768us;57us;656us;93us;661us;149us;659us;153us;671us;194us;657us;0us;16730us;4us;16738us;34us;1907us;57us;658us;149us;660us;161us;1909us;0us;16731us;0us;16732us;0us;16733us;1us;16556us;74us;322us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16734us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1896us;4us;32768us;94us;2083us;95us;2080us;96us;2082us;103us;675us;1us;32768us;78us;667us;1us;32768us;93us;668us;1us;16556us;74us;322us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16735us;2us;32768us;34us;1907us;161us;1909us;0us;16736us;0us;16737us;6us;16739us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;190us;1951us;194us;1955us;31us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;6us;16740us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;190us;1951us;194us;1955us;14us;16741us;10us;17389us;36us;1777us;41us;1772us;47us;1956us;70us;17389us;71us;1791us;92us;1949us;97us;17389us;98us;17389us;99us;17389us;187us;17389us;190us;1951us;194us;1955us;204us;17389us;1us;16556us;74us;322us;0us;16742us;1us;32768us;59us;684us;1us;16556us;74us;322us;0us;16743us;2us;16744us;21us;2033us;59us;17564us;0us;16745us;1us;16747us;59us;684us;1us;16556us;74us;322us;0us;16746us;3us;16650us;44us;520us;45us;519us;46us;521us;6us;32768us;10us;1094us;93us;705us;101us;1966us;121us;695us;194us;1955us;204us;1078us;36us;16748us;47us;1956us;57us;587us;67us;1788us;70us;701us;73us;590us;78us;699us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;121us;692us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;0us;16749us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;204us;1078us;0us;16750us;0us;16751us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;204us;1078us;0us;16752us;0us;16753us;0us;16754us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16755us;42us;32768us;10us;1094us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;5us;16756us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;0us;16757us;0us;16758us;29us;32768us;59us;2001us;63us;1983us;64us;1981us;70us;1985us;71us;708us;75us;1989us;79us;706us;83us;1993us;90us;1990us;91us;1991us;97us;1984us;103us;1986us;144us;1996us;146us;1992us;156us;1998us;159us;1995us;161us;1987us;162us;1988us;183us;1994us;184us;1982us;185us;1979us;186us;1978us;187us;1980us;188us;1973us;189us;1977us;190us;1976us;191us;1975us;192us;1974us;204us;1964us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16759us;1us;32768us;60us;709us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16760us;5us;17495us;21us;2033us;59us;17564us;70us;713us;78us;17532us;121us;719us;0us;16761us;42us;32768us;10us;1094us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;6us;17564us;21us;2033us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;46us;16762us;10us;16769us;14us;16769us;15us;16769us;16us;16769us;17us;16769us;19us;16769us;20us;16769us;21us;16769us;30us;16769us;33us;16769us;37us;16769us;38us;16769us;39us;16769us;40us;16769us;42us;16769us;44us;16769us;45us;16769us;46us;16769us;48us;16769us;49us;16769us;51us;16769us;52us;16769us;53us;16769us;55us;16769us;61us;16769us;68us;16769us;74us;16769us;84us;16769us;88us;16769us;89us;16769us;94us;16769us;95us;16769us;96us;16769us;102us;16769us;109us;16769us;110us;16769us;112us;16769us;120us;16769us;122us;16769us;132us;16769us;138us;16769us;143us;16769us;151us;16769us;152us;16769us;163us;16769us;204us;16769us;1us;17564us;21us;2033us;46us;16763us;10us;16770us;14us;16770us;15us;16770us;16us;16770us;17us;16770us;19us;16770us;20us;16770us;21us;16770us;30us;16770us;33us;16770us;37us;16770us;38us;16770us;39us;16770us;40us;16770us;42us;16770us;44us;16770us;45us;16770us;46us;16770us;48us;16770us;49us;16770us;51us;16770us;52us;16770us;53us;16770us;55us;16770us;61us;16770us;68us;16770us;74us;16770us;84us;16770us;88us;16770us;89us;16770us;94us;16770us;95us;16770us;96us;16770us;102us;16770us;109us;16770us;110us;16770us;112us;16770us;120us;16770us;122us;16770us;132us;16770us;138us;16770us;143us;16770us;151us;16770us;152us;16770us;163us;16770us;204us;16770us;0us;16764us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;204us;1078us;0us;16765us;1us;32768us;78us;722us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16766us;0us;16767us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;0us;16768us;1us;16774us;97us;728us;34us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16771us;0us;16772us;32us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16773us;1us;17495us;78us;734us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16775us;0us;16776us;0us;16777us;0us;16778us;0us;16779us;0us;16780us;0us;16781us;2us;17566us;21us;2021us;84us;2022us;5us;16556us;61us;17565us;62us;17565us;66us;17565us;74us;322us;197us;17565us;0us;16782us;0us;16783us;1us;17572us;119us;2037us;0us;16784us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;32768us;10us;1094us;194us;1955us;204us;1078us;3us;32768us;10us;1094us;78us;751us;204us;1078us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16785us;0us;16786us;0us;16787us;0us;16788us;1us;16659us;88us;525us;0us;16789us;1us;16556us;74us;322us;3us;16650us;44us;520us;45us;519us;46us;521us;3us;32768us;10us;1094us;194us;1955us;204us;1078us;1us;16795us;70us;768us;0us;16790us;0us;16791us;1us;16792us;121us;765us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1774us;97us;731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;196us;580us;202us;2048us;203us;872us;204us;1078us;0us;16793us;0us;16794us;2us;32768us;47us;1956us;194us;1955us;1us;16796us;77us;1958us;1us;17568us;104us;2035us;2us;16556us;74us;322us;204us;827us;0us;16797us;0us;16798us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16799us;1us;17568us;104us;2035us;2us;16556us;74us;322us;204us;827us;3us;32768us;10us;1094us;19us;788us;204us;1078us;0us;16800us;81us;32768us;13us;1206us;19us;783us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;10us;1094us;19us;788us;204us;1078us;0us;16801us;0us;16802us;0us;16803us;0us;16804us;0us;16805us;0us;16806us;0us;16807us;0us;16808us;1us;16556us;74us;322us;3us;16650us;44us;520us;45us;519us;46us;521us;1us;32768us;194us;1955us;2us;17595us;35us;2063us;36us;2062us;1us;32768us;93us;795us;4us;16556us;74us;322us;94us;16812us;95us;16812us;96us;16812us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16809us;1us;16810us;98us;800us;1us;16811us;98us;802us;1us;16556us;74us;322us;0us;16813us;1us;16556us;74us;322us;0us;16814us;3us;32768us;43us;816us;47us;1956us;194us;1955us;7us;16815us;35us;2063us;36us;2062us;41us;813us;71us;17595us;90us;815us;97us;812us;194us;1955us;0us;16816us;1us;16817us;77us;1958us;6us;16823us;35us;2063us;36us;2062us;41us;813us;71us;17595us;90us;815us;97us;812us;1us;32768us;71us;810us;1us;32768us;60us;811us;0us;16818us;0us;16819us;1us;32768us;149us;814us;0us;16820us;0us;16821us;1us;32768us;97us;818us;1us;16824us;97us;818us;0us;16822us;3us;32768us;43us;817us;47us;1956us;194us;1955us;1us;16827us;132us;822us;0us;16825us;2us;16556us;74us;322us;204us;827us;1us;16827us;132us;822us;0us;16826us;1us;17570us;111us;2036us;0us;16828us;0us;16829us;1us;17572us;119us;2037us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;17334us;78us;1681us;3us;32768us;10us;1094us;70us;832us;204us;1078us;81us;32768us;13us;1206us;22us;836us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;834us;0us;16830us;0us;16831us;0us;16832us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16833us;0us;16834us;0us;16835us;0us;16838us;1us;16836us;85us;844us;0us;16837us;2us;32768us;92us;1949us;190us;1951us;2us;32768us;70us;846us;132us;848us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16839us;2us;32768us;92us;1949us;190us;1951us;0us;16840us;0us;16841us;2us;32768us;57us;854us;78us;852us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;16842us;0us;16843us;0us;16844us;0us;16845us;0us;16846us;0us;16847us;0us;16848us;0us;16849us;0us;16850us;0us;16851us;0us;16852us;0us;16853us;0us;16854us;0us;16855us;0us;16856us;0us;16857us;0us;16858us;0us;16859us;0us;16860us;0us;16861us;1us;16864us;187us;874us;1us;32768us;179us;875us;0us;16862us;1us;32768us;179us;877us;1us;16865us;187us;878us;1us;32768us;179us;879us;0us;16863us;0us;16866us;2us;32768us;63us;876us;179us;873us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16867us;0us;16868us;2us;32768us;93us;881us;179us;880us;0us;16869us;1us;16870us;34us;888us;1us;32768us;161us;1926us;0us;16871us;6us;16872us;41us;899us;59us;896us;79us;915us;90us;927us;98us;921us;133us;911us;0us;16873us;41us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;94us;2083us;95us;2080us;96us;2082us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;10us;32768us;41us;899us;59us;896us;78us;1021us;79us;1025us;90us;1035us;94us;2083us;95us;2080us;96us;2082us;98us;1029us;133us;1015us;0us;16875us;0us;16876us;0us;16877us;2us;16877us;41us;899us;59us;896us;2us;16877us;41us;899us;59us;896us;0us;16878us;3us;16882us;79us;915us;90us;927us;98us;921us;1us;16883us;79us;915us;2us;16889us;79us;915us;90us;927us;2us;16890us;79us;915us;90us;927us;2us;16893us;79us;915us;90us;927us;1us;16895us;79us;915us;1us;16896us;79us;915us;7us;32768us;41us;899us;59us;896us;70us;1096us;79us;915us;90us;927us;98us;921us;133us;911us;7us;32768us;41us;899us;59us;896us;70us;1101us;79us;915us;90us;927us;98us;921us;133us;911us;7us;32768us;41us;899us;59us;896us;70us;1184us;79us;915us;90us;927us;98us;921us;133us;911us;7us;32768us;41us;899us;59us;896us;70us;1191us;79us;915us;90us;927us;98us;921us;133us;911us;38us;16881us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16879us;0us;16880us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;42us;16885us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16884us;1us;16886us;98us;920us;0us;16887us;0us;16888us;44us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;44us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16891us;0us;16892us;44us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16894us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;2us;17566us;21us;2021us;84us;2022us;0us;16897us;3us;17565us;21us;2021us;84us;2022us;194us;1955us;0us;16898us;1us;32768us;194us;1955us;0us;16899us;3us;32768us;10us;1094us;70us;936us;204us;1078us;4us;17534us;10us;1094us;70us;936us;77us;2008us;204us;1078us;40us;32768us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;7us;16900us;41us;899us;59us;896us;78us;1021us;79us;1025us;90us;1035us;98us;1029us;133us;1015us;0us;16901us;0us;16902us;39us;16927us;34us;2064us;35us;948us;36us;950us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;956us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;161us;17597us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;37us;16903us;35us;943us;36us;945us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;956us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16904us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;956us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16905us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;956us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16906us;0us;16907us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;956us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16908us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;956us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16909us;33us;16912us;10us;1094us;47us;1956us;57us;587us;67us;1875us;73us;590us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16910us;0us;16911us;0us;16913us;64us;16941us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;59us;2001us;63us;1983us;64us;1981us;67us;506us;70us;1985us;71us;972us;72us;975us;74us;322us;75us;979us;82us;952us;83us;1993us;90us;1990us;91us;1991us;93us;986us;97us;1984us;98us;1032us;101us;1966us;103us;1986us;107us;984us;123us;983us;144us;1996us;146us;1992us;149us;985us;156us;1498us;159us;1995us;161us;1987us;162us;1988us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;183us;1994us;184us;1982us;185us;1979us;186us;1978us;187us;1980us;188us;1973us;189us;1977us;190us;1976us;191us;1975us;192us;1974us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;990us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;16914us;0us;16915us;37us;16919us;35us;964us;36us;962us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16916us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16917us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16918us;0us;16920us;3us;32768us;47us;1956us;194us;1955us;204us;970us;3us;32768us;61us;2075us;62us;2077us;197us;2078us;0us;16921us;3us;32768us;61us;2075us;62us;2077us;197us;2078us;0us;16922us;38us;16968us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;32768us;60us;974us;0us;16923us;38us;16968us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;32768us;65us;977us;0us;16924us;1us;32768us;194us;1955us;1us;17519us;194us;1955us;0us;16926us;0us;16927us;0us;16928us;0us;16929us;0us;16930us;0us;16931us;64us;16941us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;59us;2001us;63us;1983us;64us;1981us;67us;506us;70us;1985us;71us;972us;72us;975us;74us;322us;75us;979us;82us;952us;83us;1993us;90us;1990us;91us;1991us;93us;986us;97us;1984us;98us;1032us;101us;1966us;103us;1986us;107us;984us;123us;983us;144us;1996us;146us;1992us;149us;985us;156us;1498us;159us;1995us;161us;1987us;162us;1988us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;183us;1994us;184us;1982us;185us;1979us;186us;1978us;187us;1980us;188us;1973us;189us;1977us;190us;1976us;191us;1975us;192us;1974us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;990us;5us;32768us;10us;1094us;94us;2083us;95us;2080us;96us;2082us;204us;1078us;0us;16932us;0us;16933us;3us;16991us;94us;2083us;95us;2080us;96us;2082us;2us;16934us;34us;17499us;161us;17499us;0us;16935us;1us;32768us;93us;994us;40us;32768us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;998us;6us;16946us;10us;1094us;94us;2083us;95us;2080us;96us;2082us;98us;1028us;204us;1078us;0us;16936us;0us;16937us;3us;16991us;94us;2083us;95us;2080us;96us;2082us;0us;16938us;0us;16939us;7us;16940us;41us;899us;59us;896us;78us;1021us;79us;1025us;90us;1035us;98us;1029us;133us;1015us;4us;16945us;78us;1021us;79us;1025us;90us;1035us;98us;1029us;3us;16950us;78us;1021us;79us;1025us;90us;1035us;2us;16951us;78us;1021us;79us;1025us;3us;16955us;78us;1021us;79us;1025us;90us;1035us;3us;16956us;78us;1021us;79us;1025us;90us;1035us;3us;16959us;78us;1021us;79us;1025us;90us;1035us;2us;16961us;78us;1021us;79us;1025us;7us;32768us;41us;899us;59us;896us;78us;1021us;79us;1025us;90us;1035us;98us;1029us;133us;1015us;2us;16962us;78us;1021us;79us;1025us;7us;16965us;41us;899us;59us;896us;78us;1021us;79us;1025us;90us;1035us;98us;1029us;133us;1015us;9us;17566us;21us;2021us;41us;899us;59us;896us;78us;1021us;79us;1025us;84us;2022us;90us;1035us;98us;1029us;133us;1015us;16us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;41us;899us;59us;896us;61us;2095us;70us;1558us;78us;1021us;79us;1025us;90us;1035us;95us;2096us;98us;1029us;128us;1555us;133us;1015us;204us;1082us;8us;17131us;41us;899us;59us;896us;78us;1021us;79us;1025us;85us;1348us;90us;1035us;98us;1029us;133us;1015us;38us;16944us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16942us;0us;16943us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;16946us;98us;1028us;1us;16947us;90us;1034us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16948us;0us;16949us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;39us;16953us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16952us;0us;16954us;45us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;45us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16957us;0us;16958us;45us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16960us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;2us;17566us;21us;2021us;84us;2022us;0us;16963us;2us;17565us;47us;1956us;194us;1955us;0us;16964us;4us;32768us;10us;1094us;70us;1041us;77us;1958us;204us;1078us;40us;32768us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;16966us;0us;16967us;0us;16969us;38us;16968us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;16970us;82us;32768us;13us;1206us;15us;2084us;16us;2086us;17us;2087us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;5us;32768us;10us;1094us;15us;2084us;16us;2086us;17us;2087us;204us;1078us;0us;16971us;0us;16972us;0us;16973us;0us;16974us;82us;32768us;13us;1206us;15us;2084us;16us;2086us;17us;2087us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;0us;16975us;0us;16976us;26us;16977us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;1us;16979us;18us;1059us;0us;16978us;0us;16980us;94us;16980us;14us;17325us;15us;17325us;16us;17325us;17us;17325us;18us;17325us;19us;17325us;21us;17325us;26us;17325us;27us;17325us;28us;17325us;30us;17325us;33us;17325us;37us;17325us;38us;17325us;39us;17325us;40us;17325us;41us;17325us;42us;17325us;44us;17325us;45us;17325us;46us;17325us;48us;17325us;49us;17325us;51us;17325us;52us;17325us;53us;17325us;55us;17325us;59us;17325us;60us;17325us;61us;17325us;62us;17325us;63us;17325us;64us;17325us;65us;17325us;66us;17325us;68us;17325us;70us;17325us;74us;17325us;78us;17325us;79us;17325us;80us;17325us;81us;17325us;82us;17325us;83us;17325us;84us;17325us;85us;17325us;88us;17325us;89us;17325us;90us;17325us;91us;17325us;94us;17325us;95us;17325us;96us;17325us;97us;17325us;98us;17325us;99us;17325us;102us;17325us;103us;17325us;105us;17325us;106us;17325us;109us;17325us;110us;17325us;112us;17325us;120us;17325us;122us;17325us;128us;17325us;129us;17325us;130us;17325us;132us;17325us;138us;17325us;139us;17325us;140us;17325us;141us;17325us;142us;17325us;143us;17325us;144us;17325us;146us;17325us;151us;17325us;152us;17325us;157us;17325us;159us;17325us;161us;17325us;162us;17325us;163us;17325us;185us;17325us;186us;17325us;187us;17325us;189us;17325us;190us;17325us;191us;17325us;192us;17325us;197us;17325us;198us;17325us;199us;17325us;1us;16983us;78us;1063us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;16981us;0us;16982us;1us;32768us;10us;1067us;0us;16984us;30us;16987us;21us;2021us;28us;1073us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;84us;2022us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;105us;1071us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;79us;16986us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16985us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;16988us;1us;32768us;22us;1074us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;0us;16989us;82us;16990us;13us;1206us;21us;1113us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1112us;0us;16991us;2us;16991us;19us;2041us;139us;2040us;2us;16991us;19us;2041us;139us;2040us;2us;16991us;30us;2039us;138us;2038us;2us;16991us;19us;2041us;139us;2040us;2us;16991us;19us;2041us;139us;2040us;0us;16991us;2us;16991us;41us;899us;59us;896us;1us;16991us;60us;1456us;1us;16991us;60us;1477us;1us;16991us;157us;1502us;1us;16991us;65us;1508us;3us;16991us;94us;2083us;95us;2080us;96us;2082us;3us;16991us;94us;2083us;95us;2080us;96us;2082us;3us;16991us;61us;2075us;62us;2077us;197us;2078us;1us;16991us;66us;2079us;0us;16992us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;32768us;128us;1098us;2us;16995us;31us;1100us;166us;1095us;0us;16993us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;10us;1094us;19us;788us;204us;1078us;1us;17564us;21us;2033us;2us;16995us;31us;1100us;166us;1095us;0us;16994us;1us;32768us;128us;1107us;80us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1109us;0us;16996us;0us;16997us;82us;32768us;13us;1206us;21us;1113us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1112us;0us;16998us;0us;16999us;81us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1115us;0us;17000us;0us;17001us;0us;17002us;0us;17003us;0us;17004us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;4us;32768us;10us;1094us;26us;1324us;88us;1322us;204us;1078us;0us;17005us;0us;17006us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;4us;32768us;10us;1094us;26us;1324us;88us;1322us;204us;1078us;0us;17007us;0us;17008us;82us;32768us;10us;1094us;13us;1206us;18us;1131us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;5us;32768us;10us;1094us;26us;1324us;88us;1322us;130us;1133us;204us;1078us;0us;17009us;0us;17010us;2us;17011us;26us;1324us;88us;1322us;0us;17012us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17013us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;30us;32768us;10us;1094us;28us;1355us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;105us;1353us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;204us;1078us;0us;17014us;0us;17015us;0us;17016us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17017us;68us;17019us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;160us;1183us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17018us;80us;32768us;13us;1206us;22us;1053us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17020us;69us;17022us;13us;1206us;22us;1053us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;160us;1183us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17021us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1083us;0us;17023us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1083us;0us;17024us;45us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;61us;2095us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;95us;2096us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1081us;10us;17564us;10us;1094us;15us;2097us;21us;2033us;30us;2039us;37us;2093us;39us;2094us;61us;2095us;95us;2096us;138us;2038us;204us;1078us;87us;32768us;10us;1094us;13us;1206us;15us;2097us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1079us;9us;32768us;10us;1094us;15us;2097us;19us;2041us;37us;2093us;39us;2094us;61us;2095us;95us;2096us;139us;2040us;204us;1078us;0us;17025us;0us;17026us;0us;17027us;0us;17028us;0us;17029us;1us;32768us;99us;1553us;0us;17030us;4us;32768us;10us;1094us;30us;2039us;138us;2038us;204us;1078us;82us;32768us;10us;1094us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1080us;4us;32768us;10us;1094us;19us;2041us;139us;2040us;204us;1078us;0us;17031us;0us;17032us;0us;17033us;0us;17034us;0us;17035us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;2us;32768us;19us;2041us;139us;2040us;0us;17036us;0us;17037us;0us;17038us;0us;17039us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;26us;17040us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;26us;17041us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;0us;17042us;0us;17043us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;32768us;128us;1186us;1us;17564us;21us;2033us;2us;16995us;31us;1100us;166us;1095us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17044us;37us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;82us;952us;93us;986us;98us;924us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;10us;1094us;19us;788us;204us;1078us;1us;17564us;21us;2033us;3us;16995us;31us;1100us;166us;1095us;204us;1197us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17045us;0us;17046us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;32768us;128us;1200us;1us;17564us;21us;2033us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17047us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;10us;1094us;19us;788us;204us;1078us;0us;17048us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;26us;17049us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17050us;26us;17057us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;20us;17060us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;20us;17062us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;9us;17064us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;20us;17066us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;18us;17068us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;97us;1297us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;18us;17070us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;97us;1297us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;9us;17072us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;9us;17074us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;9us;17076us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;9us;17078us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;9us;17080us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;9us;17082us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;9us;17084us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;190us;1287us;192us;1301us;1us;17086us;192us;1301us;8us;17088us;63us;1295us;79us;1291us;82us;1248us;97us;1297us;159us;1289us;185us;1293us;187us;1299us;192us;1301us;4us;17090us;97us;1297us;159us;1289us;187us;1299us;192us;1301us;4us;17092us;97us;1297us;159us;1289us;187us;1299us;192us;1301us;1us;17094us;192us;1301us;1us;17096us;192us;1301us;1us;17098us;192us;1301us;23us;17100us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;103us;1269us;129us;1263us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;24us;17102us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;30us;32768us;10us;1094us;30us;2039us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;138us;2038us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;204us;1078us;26us;17130us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;26us;17134us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;26us;17139us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;30us;32768us;10us;1094us;28us;1355us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;105us;1353us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;204us;1078us;24us;17143us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;24us;17145us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;24us;17148us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;26us;32768us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;24us;17150us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;90us;1271us;91us;1273us;97us;1297us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;29us;32768us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;94us;2083us;95us;2080us;96us;2082us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;26us;17255us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;28us;32768us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;106us;1560us;129us;1263us;140us;1561us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;26us;17258us;63us;1295us;64us;1281us;70us;1277us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;27us;17585us;63us;1295us;64us;1281us;70us;1277us;78us;2050us;79us;1291us;80us;1251us;81us;1254us;82us;1248us;83us;1257us;90us;1271us;91us;1273us;97us;1297us;98us;1368us;103us;1269us;129us;1263us;144us;1303us;146us;1265us;159us;1289us;161us;1283us;162us;1285us;185us;1293us;186us;1275us;187us;1299us;189us;1267us;190us;1287us;191us;1279us;192us;1301us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17051us;0us;17052us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17053us;0us;17054us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17055us;0us;17056us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;17104us;69us;1259us;80us;32768us;13us;1206us;22us;1053us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17058us;1us;17059us;98us;1364us;6us;17059us;10us;1094us;94us;2083us;95us;2080us;96us;2082us;98us;1364us;204us;1078us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17061us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17063us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17065us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17067us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17069us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17071us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17073us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17075us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17077us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17079us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17081us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17083us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17085us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17087us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17089us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17091us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17093us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17095us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17097us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17099us;76us;17101us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;79us;17526us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1306us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;79us;17527us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17103us;0us;17103us;81us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1313us;4us;32768us;10us;1094us;19us;2041us;139us;2040us;204us;1078us;0us;17105us;0us;17106us;2us;32768us;19us;2041us;139us;2040us;0us;17107us;0us;17108us;0us;17109us;0us;17110us;0us;17111us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17112us;41us;32768us;41us;899us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;59us;897us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1335us;0us;17113us;42us;32768us;10us;1094us;41us;899us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;59us;897us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1084us;3us;32768us;10us;1094us;20us;1326us;204us;1078us;0us;17114us;0us;17115us;0us;17116us;0us;17117us;39us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1334us;0us;17118us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;17119us;0us;17120us;0us;17121us;0us;17122us;3us;32768us;10us;1094us;99us;1349us;204us;1085us;4us;17123us;10us;1094us;41us;899us;59us;898us;204us;1078us;40us;32768us;10us;1094us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1078us;0us;17124us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;17125us;38us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;0us;17126us;0us;17127us;0us;17128us;0us;17129us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17132us;3us;17138us;27us;1359us;141us;1358us;142us;1361us;0us;17133us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17135us;82us;32768us;10us;1094us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17136us;0us;17137us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;80us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17140us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17141us;0us;17142us;87us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;98us;1366us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17144us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17146us;87us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;98us;1370us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17147us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17149us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17506us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17506us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17151us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17513us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17152us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17509us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17153us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17512us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17154us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17525us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17155us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17520us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17156us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;50us;17521us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17157us;31us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1866us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1406us;31us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1866us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1406us;2us;17595us;35us;2063us;36us;2062us;37us;17299us;14us;17302us;21us;17302us;26us;17302us;35us;2063us;36us;2062us;57us;17595us;72us;17595us;73us;17595us;88us;17302us;93us;17595us;107us;17595us;112us;17302us;123us;17595us;137us;17595us;149us;17595us;156us;17595us;167us;17595us;168us;17595us;169us;17595us;170us;17595us;171us;17595us;172us;17595us;173us;17595us;174us;17595us;175us;17595us;176us;17595us;177us;17595us;178us;17595us;179us;17595us;181us;17595us;182us;17595us;195us;17595us;196us;17595us;200us;17595us;201us;17595us;202us;17595us;203us;17595us;31us;32768us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1405us;31us;32768us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1405us;1us;17159us;77us;1403us;6us;17159us;14us;17301us;26us;17301us;77us;1403us;88us;17301us;112us;17301us;133us;540us;7us;17193us;10us;1094us;47us;1464us;71us;1473us;93us;1466us;101us;1966us;194us;1955us;204us;1078us;0us;17158us;0us;17160us;0us;17161us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17162us;50us;32768us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;120us;1395us;123us;1485us;137us;1490us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17163us;41us;17164us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1416us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;44us;17164us;26us;1598us;47us;1450us;57us;1458us;67us;1419us;70us;1585us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;88us;1594us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1416us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;44us;17275us;26us;1598us;47us;1450us;57us;1458us;67us;1419us;70us;1585us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;88us;1594us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1416us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17165us;5us;17166us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;40us;32768us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;5us;17167us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;5us;17168us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;3us;32768us;10us;1094us;77us;1421us;204us;1078us;4us;17276us;10us;1094us;70us;1590us;77us;1421us;204us;1078us;42us;32768us;10us;1094us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;5us;17169us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;0us;17170us;0us;17171us;2us;17172us;34us;1431us;35us;1430us;1us;17173us;34us;1431us;5us;17175us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;5us;17454us;34us;1431us;35us;1430us;36us;1429us;75us;1448us;77us;1440us;40us;32768us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;40us;32768us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;32768us;161us;1909us;0us;17174us;40us;32768us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;40us;17503us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;32768us;194us;1955us;1us;32768us;194us;1955us;0us;17176us;0us;17176us;0us;17177us;7us;17193us;10us;1094us;47us;1464us;71us;1473us;93us;1466us;101us;1966us;194us;1955us;204us;1078us;0us;17178us;1us;32768us;77us;1443us;7us;17193us;10us;1094us;47us;1464us;71us;1473us;93us;1466us;101us;1966us;194us;1955us;204us;1078us;0us;17179us;3us;32768us;93us;1961us;101us;1966us;194us;1955us;3us;17519us;93us;1961us;101us;1966us;194us;1955us;0us;17180us;2us;32768us;93us;1319us;194us;1318us;0us;17181us;0us;17182us;0us;17183us;81us;17250us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1086us;3us;32768us;10us;1094us;60us;1454us;204us;1078us;0us;17184us;0us;17185us;0us;17186us;0us;17187us;2us;32768us;73us;1648us;93us;1459us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17188us;0us;17189us;0us;17190us;0us;17191us;0us;17192us;0us;17194us;95us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;59us;2001us;63us;1378us;64us;1981us;67us;1419us;70us;1985us;71us;1452us;72us;1504us;73us;1648us;75us;1446us;79us;1467us;83us;1993us;86us;1148us;87us;1150us;90us;1390us;91us;1393us;92us;1435us;93us;1512us;97us;1308us;99us;1208us;101us;1966us;103us;1986us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1305us;146us;1992us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1498us;159us;1387us;160us;1183us;161us;1987us;162us;1988us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;183us;1994us;184us;1384us;185us;1381us;186us;1978us;187us;1980us;188us;1434us;189us;1977us;190us;1375us;191us;1975us;192us;1974us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1964us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;1us;32768us;77us;1469us;1us;32768us;179us;1470us;0us;17195us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17196us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1087us;3us;32768us;10us;1094us;60us;1475us;204us;1078us;0us;17197us;0us;17198us;0us;17199us;0us;17200us;0us;17201us;0us;17202us;0us;17203us;0us;17204us;0us;17205us;0us;17206us;0us;17207us;0us;17208us;0us;17209us;0us;17210us;0us;17211us;81us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;143us;1496us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1494us;3us;32768us;10us;1094us;143us;1492us;204us;1078us;0us;17212us;0us;17213us;1us;32768us;143us;1495us;0us;17214us;0us;17215us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1088us;82us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;157us;1999us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1088us;3us;32768us;10us;1094us;157us;1500us;204us;1078us;0us;17216us;0us;17217us;0us;17218us;0us;17219us;81us;17252us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1089us;3us;32768us;10us;1094us;65us;1506us;204us;1078us;0us;17220us;0us;17221us;0us;17222us;0us;17223us;90us;32768us;10us;1094us;13us;1206us;15us;1522us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;1519us;39us;1520us;42us;790us;47us;1450us;57us;1458us;61us;1521us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;89us;1562us;90us;1389us;91us;1392us;92us;1436us;93us;1511us;94us;2083us;95us;2080us;96us;2082us;97us;1307us;98us;1524us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1373us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1090us;104us;32768us;10us;1094us;13us;1206us;15us;1522us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;1519us;39us;1520us;42us;790us;47us;1450us;57us;1458us;59us;2001us;61us;1521us;63us;1378us;64us;1981us;67us;1419us;70us;1985us;71us;1452us;72us;1504us;73us;1648us;75us;1446us;83us;1993us;86us;1148us;87us;1150us;89us;1562us;90us;1390us;91us;1393us;92us;1436us;93us;1511us;94us;2083us;95us;2080us;96us;2082us;97us;1308us;98us;1524us;99us;1208us;101us;1966us;103us;1986us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1305us;146us;1992us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1498us;159us;1387us;160us;1183us;161us;1987us;162us;1988us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;183us;1994us;184us;1384us;185us;1381us;186us;1978us;187us;1980us;188us;1434us;189us;1977us;190us;1374us;191us;1975us;192us;1974us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1091us;104us;32768us;10us;1094us;13us;1206us;15us;1522us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;1519us;39us;1520us;42us;790us;47us;1450us;57us;1458us;59us;2001us;61us;1521us;63us;1378us;64us;1981us;67us;1419us;70us;1985us;71us;1452us;72us;1504us;73us;1648us;75us;1446us;83us;1993us;86us;1148us;87us;1150us;89us;1562us;90us;1390us;91us;1393us;92us;1436us;93us;1511us;94us;2083us;95us;2080us;96us;2082us;97us;1308us;98us;1524us;99us;1208us;101us;1966us;103us;1986us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1305us;146us;1992us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1498us;159us;1387us;160us;1183us;161us;1987us;162us;1988us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;183us;1994us;184us;1384us;185us;1381us;186us;1978us;187us;1980us;188us;1434us;189us;1977us;190us;1374us;191us;1975us;192us;1974us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1091us;0us;17224us;9us;32768us;10us;1094us;15us;2091us;37us;2088us;39us;2089us;61us;2090us;94us;2083us;95us;2080us;96us;2082us;204us;1078us;0us;17225us;0us;17226us;0us;17227us;0us;17227us;0us;17228us;0us;17229us;0us;17230us;0us;17231us;0us;17232us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17233us;1us;32768us;78us;1527us;1us;32768us;93us;1528us;1us;16556us;74us;322us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17234us;0us;17235us;0us;17236us;0us;17237us;4us;17237us;94us;17240us;95us;17240us;96us;17240us;103us;17240us;4us;32768us;94us;2083us;95us;2080us;96us;2082us;103us;1538us;0us;17238us;31us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17239us;85us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;55us;1578us;57us;1458us;61us;2075us;62us;2077us;63us;1377us;67us;1420us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1396us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;197us;2078us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1092us;5us;32768us;10us;1094us;61us;2075us;62us;2077us;197us;2078us;204us;1078us;0us;17241us;0us;17242us;0us;17243us;0us;17244us;0us;17245us;0us;17246us;0us;17247us;0us;17248us;0us;17249us;0us;17251us;0us;17253us;81us;32768us;10us;1094us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17254us;86us;32768us;10us;1094us;13us;1206us;15us;2097us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17256us;0us;17257us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;79us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17259us;0us;17260us;1us;32768us;202us;2048us;3us;17266us;37us;2065us;38us;2068us;109us;2069us;0us;17263us;42us;17268us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;78us;1574us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1416us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;1us;32768us;89us;1567us;0us;17261us;0us;17262us;0us;17265us;1us;32768us;93us;1571us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17267us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1576us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17269us;37us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;94us;2083us;95us;2080us;96us;2082us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1896us;0us;17270us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1866us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;2us;17595us;35us;2063us;36us;2062us;30us;17264us;57us;1645us;72us;1504us;73us;1648us;93us;1510us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17291us;2us;17283us;21us;1607us;84us;1608us;0us;17271us;0us;17272us;82us;32768us;10us;1094us;13us;1206us;22us;1053us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17291us;2us;17283us;21us;1607us;84us;1608us;0us;17273us;0us;17274us;80us;17277us;13us;1206us;22us;1053us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17291us;2us;17283us;21us;1607us;84us;1608us;0us;17278us;3us;32768us;47us;1956us;67us;1612us;194us;1955us;0us;17291us;2us;17283us;21us;1607us;84us;1608us;0us;17279us;5us;17283us;21us;1607us;47us;1956us;67us;1612us;84us;1608us;194us;1955us;1us;32768us;20us;1600us;0us;17280us;0us;17291us;2us;17283us;21us;1607us;84us;1608us;1us;32768us;20us;1604us;0us;17281us;0us;17282us;3us;17282us;47us;1956us;67us;1612us;194us;1955us;1us;17284us;84us;1610us;1us;17285us;21us;1609us;0us;17286us;0us;17287us;1us;17288us;77us;1958us;0us;17289us;0us;17290us;8us;17295us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;61us;2095us;70us;1615us;95us;2096us;204us;1078us;87us;17293us;10us;1094us;13us;1206us;15us;2097us;22us;1053us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;37us;2093us;39us;2094us;42us;790us;47us;1450us;57us;1458us;61us;2095us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;95us;2096us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;0us;17292us;0us;17294us;0us;17296us;3us;17564us;21us;2033us;26us;1629us;88us;1627us;1us;17564us;21us;2033us;3us;17309us;14us;600us;112us;599us;204us;1638us;0us;17297us;2us;32768us;14us;600us;112us;599us;0us;17298us;0us;17300us;0us;17303us;3us;16556us;22us;543us;74us;322us;204us;827us;0us;17305us;2us;16556us;74us;322us;204us;827us;1us;32768us;20us;1631us;0us;17306us;3us;17558us;19us;2028us;20us;2029us;143us;2030us;0us;17307us;3us;17309us;14us;600us;112us;599us;204us;1638us;0us;17308us;3us;17309us;14us;600us;112us;599us;204us;1638us;0us;17310us;3us;17309us;14us;600us;112us;599us;204us;1638us;0us;17311us;31us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;8us;17304us;26us;1629us;36us;1777us;47us;1956us;71us;1791us;88us;1627us;92us;1949us;190us;1951us;194us;1955us;3us;17558us;19us;2028us;20us;2029us;143us;2030us;1us;17564us;21us;2033us;0us;17312us;1us;32768us;73us;1648us;0us;17313us;0us;17314us;43us;32768us;10us;1094us;47us;1450us;57us;1458us;66us;2079us;67us;1420us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1093us;3us;32768us;10us;1094us;66us;2079us;204us;1078us;0us;17315us;0us;17316us;0us;17317us;0us;17318us;0us;17319us;35us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;1us;32768us;99us;1657us;81us;32768us;13us;1206us;22us;1047us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1659us;0us;17320us;0us;17321us;36us;32768us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;67us;506us;71us;972us;72us;975us;75us;978us;93us;986us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1670us;2us;32768us;99us;1662us;204us;1668us;82us;32768us;10us;1094us;13us;1206us;18us;1666us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;204us;1078us;3us;32768us;10us;1094us;20us;1664us;204us;1078us;0us;17322us;0us;17323us;1us;32768us;20us;1667us;0us;17324us;1us;32768us;20us;1669us;0us;17326us;1us;32768us;20us;1671us;0us;17327us;41us;32768us;41us;899us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;59us;897us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1335us;0us;17328us;41us;32768us;41us;899us;44us;520us;45us;519us;46us;521us;47us;509us;57us;993us;59us;897us;67us;506us;71us;972us;72us;975us;74us;322us;75us;978us;82us;952us;93us;986us;98us;1032us;101us;1966us;107us;984us;123us;983us;149us;985us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;194us;1955us;195us;2049us;196us;967us;202us;2048us;203us;872us;204us;1335us;1us;32768us;20us;1676us;0us;17329us;1us;17330us;85us;1678us;32us;32768us;47us;1956us;53us;648us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;664us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;17332us;85us;1680us;32us;32768us;47us;1956us;53us;648us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;664us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;36us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17335us;0us;17336us;1us;17339us;99us;1685us;36us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1692us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17337us;0us;17338us;1us;17343us;97us;1689us;36us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1698us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17340us;0us;17341us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1698us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17342us;1us;17347us;97us;1695us;36us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1698us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17344us;0us;17345us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;74us;322us;75us;1714us;89us;632us;92us;1949us;93us;1780us;97us;1698us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17346us;32us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;75us;1705us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;17352us;78us;1702us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17348us;0us;17349us;1us;32768us;194us;1955us;1us;32768us;78us;1707us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17350us;0us;17351us;1us;17357us;78us;1711us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17353us;0us;17354us;1us;32768us;194us;1955us;1us;32768us;78us;1716us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17355us;0us;17356us;7us;17361us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;99us;1722us;190us;1951us;194us;1955us;7us;17390us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;99us;1722us;190us;1951us;194us;1955us;7us;32768us;36us;1777us;47us;1956us;71us;1791us;92us;1949us;99us;1722us;190us;1951us;194us;1955us;34us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;99us;1725us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17358us;0us;17359us;31us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17360us;1us;17365us;99us;1728us;36us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;99us;1731us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17362us;0us;17363us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17364us;1us;32768us;10us;1734us;0us;17366us;2us;17374us;97us;1737us;187us;1747us;2us;17374us;97us;1737us;187us;1747us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17367us;0us;17368us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;33us;17514us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17369us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;35us;17510us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17370us;0us;17371us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17372us;0us;17373us;2us;17381us;97us;1751us;187us;1756us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17375us;0us;17376us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17377us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17378us;0us;17379us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17380us;2us;17385us;80us;1786us;90us;1762us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;17442us;90us;1764us;30us;32768us;47us;1956us;57us;1881us;67us;1875us;89us;632us;92us;1949us;93us;1876us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;1us;17384us;77us;1958us;0us;17385us;1us;17387us;190us;1769us;4us;17387us;34us;1907us;77us;1904us;161us;1909us;190us;1769us;3us;32768us;63us;885us;93us;881us;179us;880us;0us;17386us;7us;17389us;36us;1777us;41us;1772us;47us;1956us;71us;1791us;92us;1949us;190us;1951us;194us;1955us;1us;32768us;149us;1773us;0us;17388us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1896us;0us;17391us;0us;17392us;1us;32768us;71us;1791us;0us;17393us;0us;17394us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1896us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;4us;32768us;47us;1956us;92us;1949us;190us;1951us;194us;1955us;0us;17395us;0us;17396us;0us;17397us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17398us;1us;17444us;80us;1789us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17399us;2us;32768us;60us;1792us;98us;1793us;0us;17400us;2us;32768us;60us;1794us;98us;1795us;0us;17401us;2us;32768us;60us;1796us;98us;1797us;0us;17402us;2us;32768us;60us;1798us;98us;1799us;0us;17403us;2us;32768us;60us;1800us;98us;1801us;0us;17404us;2us;32768us;60us;1802us;98us;1803us;0us;17405us;2us;32768us;60us;1804us;98us;1805us;0us;17406us;2us;32768us;60us;1806us;98us;1807us;0us;17407us;2us;32768us;60us;1808us;98us;1809us;0us;17408us;2us;32768us;60us;1810us;98us;1811us;0us;17409us;2us;32768us;60us;1812us;98us;1813us;0us;17410us;2us;32768us;60us;1814us;98us;1815us;0us;17411us;2us;32768us;60us;1816us;98us;1817us;0us;17412us;2us;32768us;60us;1818us;98us;1819us;0us;17413us;2us;32768us;60us;1820us;98us;1821us;0us;17414us;2us;32768us;60us;1822us;98us;1823us;0us;17415us;2us;32768us;60us;1824us;98us;1825us;0us;17416us;2us;32768us;60us;1826us;98us;1827us;0us;17417us;2us;32768us;60us;1828us;98us;1829us;0us;17418us;2us;32768us;60us;1830us;98us;1831us;0us;17419us;2us;32768us;60us;1832us;98us;1833us;0us;17420us;2us;32768us;60us;1834us;98us;1835us;0us;17421us;2us;32768us;60us;1836us;98us;1837us;0us;17422us;2us;32768us;60us;1838us;98us;1839us;0us;17423us;2us;32768us;60us;1840us;98us;1841us;0us;17424us;2us;32768us;60us;1842us;98us;1843us;0us;17425us;2us;32768us;60us;1844us;98us;1845us;0us;17426us;2us;32768us;60us;1846us;98us;1847us;0us;17427us;2us;32768us;60us;1848us;98us;1849us;0us;17428us;2us;32768us;60us;1850us;98us;1851us;0us;17429us;2us;32768us;60us;1852us;98us;1853us;0us;17430us;1us;32768us;60us;1854us;0us;17431us;1us;32768us;98us;1856us;33us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17435us;1us;17432us;98us;1860us;4us;32768us;10us;1094us;98us;1860us;162us;1913us;204us;1078us;33us;17476us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17433us;0us;17434us;1us;17436us;190us;1864us;3us;32768us;63us;885us;93us;881us;179us;880us;0us;17437us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1896us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;4us;32768us;47us;1956us;92us;1949us;190us;1951us;194us;1955us;0us;17438us;1us;17439us;77us;1901us;1us;17440us;77us;1901us;0us;17441us;0us;17442us;0us;17443us;0us;17444us;34us;32768us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1896us;5us;32768us;10us;1094us;94us;2083us;95us;2080us;96us;2082us;204us;1078us;6us;17471us;10us;1094us;70us;1922us;94us;2083us;95us;2080us;96us;2082us;204us;1078us;0us;17445us;0us;17446us;1us;32768us;93us;1882us;33us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;3us;32768us;10us;1094us;97us;1884us;204us;1078us;35us;32768us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1754us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1759us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;5us;32768us;10us;1094us;94us;2083us;95us;2080us;96us;2082us;204us;1078us;0us;17447us;0us;17448us;0us;17449us;0us;17450us;0us;17451us;0us;17452us;0us;17453us;40us;32768us;47us;1450us;57us;1458us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;92us;1435us;93us;1512us;101us;1966us;107us;1486us;123us;1485us;137us;1490us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;188us;1433us;194us;1955us;195us;2049us;196us;1540us;200us;2057us;201us;2060us;202us;2048us;203us;872us;0us;17455us;0us;17456us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17457us;1us;17457us;78us;17499us;0us;17458us;2us;32768us;47us;1956us;194us;1955us;3us;17459us;34us;1907us;77us;1958us;161us;1909us;0us;17460us;7us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;61us;2095us;95us;2096us;204us;1078us;0us;17461us;0us;17462us;1us;32768us;161us;1909us;0us;17463us;36us;17476us;10us;1094us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;162us;1919us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;1us;32768us;98us;1911us;40us;17476us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;47us;1956us;57us;587us;61us;2095us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;95us;2096us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;204us;1078us;0us;17435us;0us;17464us;0us;17465us;0us;17466us;8us;17474us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;61us;2095us;95us;2096us;162us;1917us;204us;1078us;0us;17467us;0us;17468us;0us;17469us;0us;17470us;1us;17471us;70us;1922us;33us;17473us;47us;1956us;57us;587us;67us;1788us;73us;590us;89us;632us;92us;1949us;93us;1780us;97us;1740us;107us;1895us;114us;1893us;123us;1894us;149us;1892us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;187us;1743us;190us;1951us;194us;1955us;195us;2049us;202us;2048us;203us;872us;0us;17472us;0us;17474us;0us;17475us;8us;32768us;47us;1956us;67us;1929us;92us;1949us;93us;1933us;179us;1939us;187us;1948us;190us;1951us;194us;1955us;3us;32768us;97us;1946us;162us;1928us;187us;1947us;0us;17477us;1us;32768us;162us;1930us;0us;17478us;1us;17479us;77us;1958us;0us;17480us;7us;32768us;47us;1956us;92us;1949us;93us;1933us;179us;1939us;187us;1948us;190us;1951us;194us;1955us;5us;32768us;94us;2083us;95us;2080us;96us;2082us;97us;1946us;187us;1947us;0us;17481us;1us;17482us;190us;1937us;3us;32768us;63us;885us;93us;881us;179us;880us;0us;17483us;0us;17484us;6us;17485us;47us;1956us;92us;1949us;93us;1933us;179us;1939us;190us;1951us;194us;1955us;0us;17486us;0us;17487us;0us;17488us;0us;17489us;0us;17490us;7us;32768us;47us;1956us;92us;1949us;93us;1933us;179us;1939us;187us;1948us;190us;1951us;194us;1955us;7us;32768us;47us;1956us;92us;1949us;93us;1933us;179us;1939us;187us;1948us;190us;1951us;194us;1955us;7us;32768us;47us;1956us;92us;1949us;93us;1933us;179us;1939us;187us;1948us;190us;1951us;194us;1955us;1us;32768us;194us;1955us;0us;17491us;1us;32768us;194us;1955us;1us;17506us;194us;1955us;0us;17492us;81us;17492us;10us;17539us;15us;17539us;21us;17539us;28us;17539us;34us;17539us;35us;17539us;36us;17539us;37us;17539us;39us;17539us;47us;17539us;57us;17539us;61us;17539us;63us;17539us;64us;17539us;67us;17539us;69us;17539us;70us;17539us;71us;17539us;72us;17539us;73us;17539us;75us;17539us;77us;17539us;79us;17539us;80us;17539us;81us;17539us;82us;17539us;83us;17539us;84us;17539us;90us;17539us;91us;17539us;92us;17539us;93us;17539us;97us;17539us;98us;17539us;101us;17539us;105us;17539us;107us;17539us;123us;17539us;129us;17539us;137us;17539us;144us;17539us;146us;17539us;149us;17539us;150us;17539us;155us;17539us;156us;17539us;159us;17539us;161us;17539us;162us;17539us;167us;17539us;168us;17539us;169us;17539us;170us;17539us;171us;17539us;172us;17539us;173us;17539us;174us;17539us;175us;17539us;176us;17539us;177us;17539us;178us;17539us;179us;17539us;181us;17539us;182us;17539us;184us;17539us;185us;17539us;186us;17539us;187us;17539us;188us;17539us;189us;17539us;190us;17539us;191us;17539us;192us;17539us;194us;17539us;195us;17539us;196us;17539us;200us;17539us;201us;17539us;202us;17539us;203us;17539us;204us;17539us;0us;17493us;0us;17494us;0us;17495us;8us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;61us;2095us;95us;2096us;194us;1955us;204us;1078us;0us;17496us;0us;17497us;27us;32768us;59us;2001us;63us;1983us;64us;1981us;70us;1985us;75us;1989us;83us;1993us;90us;1990us;91us;1991us;97us;1984us;103us;1986us;144us;1996us;146us;1992us;156us;1998us;159us;1995us;161us;1987us;162us;1988us;183us;1994us;184us;1982us;185us;1979us;186us;1978us;187us;1980us;188us;1973us;189us;1977us;190us;1976us;191us;1975us;192us;1974us;204us;1964us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17498us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17499us;0us;17500us;1us;32768us;59us;1968us;5us;32768us;67us;1970us;94us;2083us;95us;2080us;96us;2082us;194us;2000us;0us;17501us;1us;32768us;59us;1971us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17502us;0us;17503us;0us;17504us;0us;17505us;0us;17506us;0us;17507us;0us;17508us;0us;17509us;0us;17510us;0us;17511us;0us;17512us;0us;17513us;0us;17514us;0us;17515us;0us;17516us;0us;17517us;0us;17518us;0us;17519us;0us;17520us;0us;17521us;0us;17522us;0us;17523us;0us;17524us;0us;17525us;1us;17526us;144us;1997us;0us;17527us;1us;32768us;157us;1999us;0us;17528us;0us;17529us;1us;32768us;194us;2000us;0us;17530us;0us;17531us;0us;17532us;0us;17533us;1us;17534us;77us;2008us;0us;17535us;10us;32768us;10us;1094us;15us;2097us;37us;2093us;39us;2094us;61us;2095us;93us;1961us;95us;2096us;101us;1966us;194us;1955us;204us;1078us;0us;17536us;0us;17537us;0us;17538us;0us;17539us;0us;17540us;0us;17541us;0us;17542us;0us;17543us;3us;17544us;21us;2016us;68us;2015us;84us;2014us;0us;17545us;3us;17547us;21us;2016us;68us;2015us;84us;2014us;0us;17546us;1us;17548us;84us;2023us;1us;17549us;21us;2024us;0us;17550us;0us;17551us;0us;17552us;0us;17553us;0us;17554us;0us;17555us;0us;17556us;0us;17557us;0us;17559us;0us;17561us;0us;17563us;0us;17565us;0us;17567us;0us;17569us;0us;17571us;0us;17573us;0us;17574us;0us;17575us;0us;17576us;0us;17577us;0us;17578us;0us;17579us;0us;17580us;0us;17581us;0us;17582us;0us;17583us;0us;17584us;1us;32768us;194us;1955us;0us;17586us;0us;17587us;81us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;198us;2052us;199us;2053us;200us;2057us;201us;2060us;202us;2048us;203us;872us;2us;32768us;198us;2052us;199us;2053us;0us;17588us;0us;17589us;81us;32768us;13us;1206us;24us;1660us;25us;1674us;29us;1203us;30us;780us;32us;1190us;33us;776us;42us;790us;47us;1450us;57us;1458us;63us;1377us;67us;1419us;71us;1452us;72us;1504us;73us;1648us;75us;1445us;86us;1148us;87us;1150us;90us;1389us;91us;1392us;92us;1435us;93us;1512us;97us;1307us;99us;1208us;101us;1966us;107us;1486us;108us;1127us;115us;1140us;116us;1144us;117us;1119us;118us;1123us;120us;1395us;123us;1485us;124us;1152us;125us;1655us;126us;1672us;127us;1135us;131us;1198us;134us;1142us;135us;1146us;137us;1490us;144us;1304us;147us;1407us;148us;1409us;149us;1484us;150us;1439us;155us;1442us;156us;1497us;159us;1386us;160us;1183us;163us;770us;164us;1177us;165us;1179us;167us;869us;168us;868us;169us;867us;170us;866us;171us;865us;172us;864us;173us;862us;174us;860us;175us;858us;176us;856us;177us;863us;178us;861us;179us;859us;181us;857us;182us;855us;184us;1383us;185us;1380us;188us;1433us;190us;1372us;194us;1955us;195us;2049us;196us;1540us;198us;2052us;199us;2053us;200us;2057us;201us;2060us;202us;2048us;203us;872us;2us;32768us;198us;2052us;199us;2053us;0us;17590us;0us;17591us;0us;17592us;0us;17593us;0us;17594us;0us;17596us;3us;32768us;37us;2065us;38us;2068us;109us;2069us;3us;17619us;37us;2065us;38us;2068us;109us;2069us;0us;17598us;0us;17599us;0us;17600us;3us;32768us;39us;2070us;40us;2073us;151us;2074us;3us;17620us;39us;2070us;40us;2073us;151us;2074us;0us;17601us;0us;17602us;0us;17603us;3us;32768us;61us;2075us;62us;2077us;197us;2078us;0us;17604us;0us;17605us;0us;17606us;0us;17607us;3us;32768us;94us;2083us;95us;2080us;96us;2082us;0us;17608us;0us;17609us;0us;17610us;3us;32768us;15us;2084us;16us;2086us;17us;2087us;0us;17611us;0us;17612us;0us;17613us;0us;17614us;0us;17615us;0us;17616us;0us;17617us;0us;17618us;0us;17619us;0us;17620us;0us;17621us;0us;17622us;0us;17623us;0us;17624us;|]
+let _fsyacc_actionTableRowOffsets = [|0us;17us;18us;114us;115us;123us;124us;204us;205us;239us;240us;241us;242us;243us;244us;245us;246us;251us;252us;257us;258us;263us;264us;270us;271us;277us;278us;284us;285us;302us;303us;307us;395us;422us;423us;426us;427us;428us;429us;431us;432us;439us;440us;441us;442us;444us;445us;446us;449us;450us;452us;453us;458us;459us;461us;465us;467us;473us;475us;476us;477us;479us;484us;486us;487us;489us;490us;492us;493us;495us;512us;513us;517us;526us;545us;546us;547us;548us;564us;570us;572us;573us;574us;581us;582us;583us;587us;605us;609us;625us;626us;630us;635us;636us;637us;638us;642us;651us;655us;661us;662us;663us;664us;666us;668us;669us;670us;671us;673us;675us;677us;681us;685us;688us;690us;725us;727us;728us;809us;836us;916us;946us;948us;949us;958us;962us;963us;979us;981us;985us;986us;1002us;1004us;1005us;1007us;1009us;1010us;1013us;1021us;1022us;1023us;1079us;1081us;1096us;1098us;1102us;1104us;1105us;1107us;1108us;1109us;1110us;1112us;1147us;1148us;1149us;1166us;1170us;1171us;1172us;1174us;1175us;1190us;1196us;1197us;1198us;1214us;1218us;1219us;1220us;1235us;1241us;1242us;1243us;1244us;1245us;1248us;1263us;1264us;1268us;1272us;1283us;1331us;1333us;1337us;1341us;1344us;1346us;1381us;1384us;1386us;1387us;1419us;1426us;1460us;1467us;1468us;1470us;1471us;1478us;1480us;1481us;1483us;1484us;1486us;1521us;1522us;1527us;1528us;1533us;1536us;1537us;1538us;1542us;1544us;1550us;1554us;1555us;1556us;1560us;1562us;1563us;1564us;1565us;1567us;1568us;1584us;1588us;1589us;1592us;1593us;1595us;1596us;1601us;1602us;1604us;1605us;1607us;1608us;1610us;1706us;1707us;1712us;1800us;1897us;1898us;1899us;1994us;2000us;2002us;2003us;2004us;2011us;2012us;2013us;2014us;2019us;2107us;2137us;2232us;2233us;2234us;2235us;2257us;2258us;2353us;2354us;2358us;2362us;2369us;2374us;2379us;2380us;2381us;2382us;2386us;2398us;2399us;2401us;2402us;2483us;2484us;2486us;2488us;2489us;2490us;2493us;2499us;2500us;2501us;2504us;2505us;2506us;2514us;2516us;2517us;2551us;2558us;2559us;2564us;2565us;2567us;2574us;2580us;2581us;2582us;2588us;2589us;2590us;2591us;2592us;2594us;2689us;2693us;2694us;2695us;2696us;2703us;2707us;2708us;2709us;2711us;2712us;2727us;2730us;2739us;2741us;2742us;2744us;2746us;2747us;2748us;2749us;2750us;2760us;2761us;2765us;2796us;2797us;2801us;2805us;2836us;2837us;2840us;2845us;2848us;2879us;2880us;2882us;2883us;2885us;2886us;2888us;2889us;2891us;2892us;2904us;2905us;2906us;2907us;2908us;2912us;2914us;2915us;2917us;2919us;2920us;2960us;2961us;2965us;2968us;2970us;2972us;2976us;2983us;2984us;2985us;2995us;2997us;3005us;3007us;3013us;3015us;3016us;3017us;3018us;3020us;3021us;3022us;3023us;3025us;3060us;3061us;3062us;3073us;3082us;3083us;3084us;3094us;3095us;3097us;3103us;3104us;3105us;3112us;3118us;3119us;3120us;3121us;3122us;3137us;3138us;3141us;3156us;3157us;3159us;3160us;3162us;3165us;3166us;3167us;3169us;3171us;3172us;3174us;3212us;3214us;3216us;3297us;3298us;3336us;3338us;3350us;3431us;3432us;3433us;3434us;3435us;3437us;3438us;3440us;3441us;3445us;3449us;3465us;3518us;3519us;3520us;3525us;3527us;3528us;3529us;3563us;3571us;3572us;3573us;3577us;3579us;3583us;3586us;3588us;3623us;3626us;3628us;3629us;3630us;3632us;3633us;3635us;3636us;3638us;3639us;3677us;3679us;3689us;3770us;3772us;3773us;3774us;3775us;3777us;3778us;3780us;3781us;3783us;3787us;3791us;3795us;3831us;3832us;3833us;3834us;3835us;3837us;3841us;3845us;3847us;3857us;3938us;3941us;3942us;3943us;3944us;3945us;3981us;3982us;3983us;3985us;3989us;3990us;3992us;3996us;3997us;3998us;4003us;4005us;4009us;4010us;4011us;4012us;4013us;4014us;4015us;4047us;4051us;4052us;4059us;4063us;4064us;4102us;4136us;4137us;4168us;4170us;4171us;4172us;4173us;4177us;4178us;4179us;4180us;4183us;4184us;4185us;4187us;4193us;4194us;4195us;4196us;4199us;4214us;4215us;4220us;4226us;4231us;4233us;4234us;4236us;4237us;4238us;4240us;4242us;4243us;4245us;4246us;4247us;4248us;4252us;4290us;4293us;4295us;4298us;4299us;4300us;4301us;4302us;4362us;4393us;4395us;4399us;4400us;4406us;4412us;4413us;4414us;4418us;4419us;4420us;4423us;4424us;4425us;4428us;4432us;4433us;4434us;4436us;4437us;4438us;4439us;4440us;4441us;4442us;4450us;4454us;4457us;4459us;4460us;4461us;4462us;4464us;4469us;4470us;4473us;4475us;4477us;4480us;4481us;4482us;4485us;4487us;4518us;4520us;4522us;4524us;4526us;4527us;4528us;4530us;4534us;4536us;4538us;4539us;4540us;4571us;4573us;4606us;4608us;4610us;4612us;4645us;4646us;4647us;4649us;4651us;4682us;4684us;4686us;4688us;4690us;4693us;4695us;4729us;4730us;4734us;4768us;4773us;4779us;4780us;4785us;4786us;4787us;4788us;4790us;4794us;4795us;4830us;4835us;4837us;4839us;4841us;4845us;4846us;4849us;4850us;4851us;4858us;4890us;4897us;4912us;4914us;4915us;4917us;4919us;4920us;4923us;4924us;4926us;4928us;4929us;4933us;4940us;4977us;4978us;5014us;5015us;5016us;5052us;5053us;5054us;5055us;5090us;5091us;5134us;5140us;5141us;5142us;5172us;5176us;5177us;5179us;5183us;5184us;5190us;5191us;5234us;5241us;5288us;5290us;5337us;5338us;5374us;5375us;5377us;5412us;5413us;5414us;5448us;5449us;5451us;5486us;5487us;5488us;5521us;5522us;5524us;5558us;5559us;5560us;5561us;5562us;5563us;5564us;5565us;5568us;5574us;5575us;5576us;5578us;5579us;5583us;5587us;5591us;5627us;5628us;5629us;5630us;5631us;5633us;5634us;5636us;5640us;5644us;5646us;5647us;5648us;5650us;5686us;5687us;5688us;5691us;5693us;5695us;5698us;5699us;5700us;5781us;5782us;5784us;5787us;5791us;5792us;5874us;5878us;5879us;5880us;5881us;5882us;5883us;5884us;5885us;5886us;5888us;5892us;5894us;5897us;5899us;5904us;5908us;5909us;5911us;5913us;5915us;5916us;5918us;5919us;5923us;5931us;5932us;5934us;5941us;5943us;5945us;5946us;5947us;5949us;5950us;5951us;5953us;5955us;5956us;5960us;5962us;5963us;5966us;5968us;5969us;5971us;5972us;5973us;5975us;6013us;6015us;6019us;6101us;6102us;6103us;6104us;6184us;6190us;6191us;6192us;6193us;6194us;6196us;6197us;6200us;6203us;6284us;6285us;6288us;6289us;6290us;6293us;6327us;6328us;6329us;6330us;6331us;6332us;6333us;6334us;6335us;6336us;6337us;6338us;6339us;6340us;6341us;6342us;6343us;6344us;6345us;6346us;6347us;6349us;6351us;6352us;6354us;6356us;6358us;6359us;6360us;6363us;6367us;6368us;6369us;6372us;6373us;6375us;6377us;6378us;6385us;6386us;6428us;6439us;6440us;6441us;6442us;6445us;6448us;6449us;6453us;6455us;6458us;6461us;6464us;6466us;6468us;6476us;6484us;6492us;6500us;6539us;6540us;6541us;6579us;6622us;6623us;6625us;6626us;6627us;6672us;6717us;6718us;6719us;6764us;6765us;6803us;6841us;6844us;6845us;6849us;6850us;6852us;6853us;6857us;6862us;6903us;6911us;6912us;6913us;6953us;6991us;6992us;7028us;7029us;7065us;7066us;7067us;7103us;7104us;7140us;7141us;7175us;7176us;7177us;7178us;7243us;7247us;7248us;7249us;7287us;7288us;7324us;7325us;7361us;7362us;7363us;7367us;7371us;7372us;7376us;7377us;7416us;7418us;7419us;7458us;7460us;7461us;7463us;7465us;7466us;7467us;7468us;7469us;7470us;7471us;7536us;7542us;7543us;7544us;7548us;7551us;7552us;7554us;7595us;7602us;7603us;7604us;7608us;7609us;7610us;7618us;7623us;7627us;7630us;7634us;7638us;7642us;7645us;7653us;7656us;7664us;7674us;7691us;7700us;7739us;7740us;7741us;7780us;7782us;7784us;7820us;7821us;7822us;7861us;7901us;7902us;7903us;7949us;7995us;7996us;7997us;8043us;8044us;8083us;8122us;8125us;8126us;8129us;8130us;8135us;8176us;8177us;8178us;8179us;8218us;8219us;8302us;8308us;8309us;8310us;8311us;8312us;8395us;8399us;8400us;8401us;8428us;8430us;8431us;8432us;8527us;8529us;8565us;8566us;8567us;8569us;8570us;8601us;8681us;8682us;8762us;8763us;8765us;8845us;8849us;8850us;8933us;8934us;8937us;8940us;8943us;8946us;8949us;8950us;8953us;8955us;8957us;8959us;8961us;8965us;8969us;8973us;8975us;8976us;9014us;9095us;9097us;9100us;9101us;9139us;9220us;9224us;9226us;9229us;9230us;9232us;9313us;9314us;9315us;9398us;9399us;9400us;9482us;9483us;9484us;9485us;9486us;9487us;9567us;9572us;9573us;9574us;9654us;9659us;9660us;9661us;9744us;9750us;9751us;9752us;9755us;9756us;9837us;9838us;9920us;9951us;9952us;9953us;9954us;10034us;10035us;10104us;10105us;10186us;10187us;10257us;10258us;10340us;10341us;10423us;10424us;10470us;10481us;10569us;10579us;10580us;10581us;10582us;10583us;10584us;10586us;10587us;10592us;10675us;10680us;10681us;10682us;10683us;10684us;10685us;10766us;10769us;10770us;10771us;10772us;10773us;10855us;10882us;10964us;10991us;10992us;10993us;11031us;11112us;11114us;11116us;11119us;11200us;11201us;11239us;11320us;11324us;11326us;11330us;11411us;11412us;11413us;11493us;11495us;11497us;11578us;11579us;11660us;11664us;11665us;11745us;11772us;11854us;11855us;11882us;11903us;11924us;11934us;11955us;11974us;11993us;12003us;12013us;12023us;12033us;12043us;12053us;12063us;12065us;12074us;12079us;12084us;12086us;12088us;12090us;12114us;12139us;12170us;12197us;12224us;12251us;12282us;12307us;12332us;12357us;12384us;12409us;12439us;12466us;12495us;12522us;12550us;12586us;12587us;12588us;12624us;12625us;12626us;12662us;12663us;12664us;12744us;12746us;12827us;12828us;12830us;12837us;12924us;12925us;13012us;13013us;13100us;13101us;13188us;13189us;13276us;13277us;13364us;13365us;13452us;13453us;13540us;13541us;13628us;13629us;13716us;13717us;13804us;13805us;13892us;13893us;13980us;13981us;14068us;14069us;14156us;14157us;14244us;14245us;14332us;14333us;14420us;14421us;14508us;14509us;14596us;14597us;14674us;14754us;14834us;14914us;14915us;14916us;14998us;15003us;15004us;15005us;15008us;15009us;15010us;15011us;15012us;15013us;15093us;15097us;15098us;15140us;15141us;15184us;15188us;15189us;15190us;15191us;15192us;15232us;15233us;15272us;15273us;15274us;15275us;15276us;15280us;15285us;15326us;15327us;15366us;15367us;15406us;15407us;15408us;15409us;15410us;15490us;15572us;15573us;15577us;15578us;15660us;15661us;15744us;15745us;15746us;15826us;15907us;15908us;15988us;15989us;15990us;16078us;16079us;16166us;16167us;16255us;16256us;16343us;16344us;16395us;16446us;16497us;16548us;16549us;16600us;16651us;16652us;16703us;16754us;16755us;16806us;16857us;16858us;16909us;16960us;16961us;17012us;17063us;17064us;17115us;17166us;17167us;17199us;17231us;17234us;17272us;17304us;17336us;17338us;17345us;17353us;17354us;17355us;17356us;17407us;17408us;17459us;17460us;17502us;17547us;17592us;17593us;17599us;17640us;17646us;17652us;17656us;17661us;17704us;17710us;17711us;17712us;17715us;17717us;17723us;17729us;17770us;17811us;17813us;17814us;17855us;17896us;17898us;17900us;17901us;17902us;17903us;17911us;17912us;17914us;17922us;17923us;17927us;17931us;17932us;17935us;17936us;17937us;17938us;18020us;18024us;18025us;18026us;18027us;18028us;18031us;18111us;18112us;18113us;18114us;18115us;18116us;18117us;18213us;18217us;18219us;18221us;18222us;18226us;18227us;18309us;18313us;18314us;18315us;18316us;18317us;18318us;18319us;18320us;18321us;18322us;18323us;18324us;18325us;18326us;18327us;18328us;18410us;18414us;18415us;18416us;18418us;18419us;18420us;18502us;18585us;18589us;18590us;18591us;18592us;18593us;18675us;18679us;18680us;18681us;18682us;18683us;18774us;18879us;18984us;18985us;18995us;18996us;18997us;18998us;18999us;19000us;19001us;19002us;19003us;19004us;19084us;19085us;19087us;19089us;19091us;19095us;19175us;19176us;19177us;19178us;19179us;19184us;19189us;19190us;19222us;19223us;19309us;19315us;19316us;19317us;19318us;19319us;19320us;19321us;19322us;19323us;19324us;19325us;19326us;19408us;19409us;19496us;19497us;19498us;19578us;19658us;19659us;19660us;19662us;19666us;19667us;19710us;19712us;19713us;19714us;19715us;19717us;19751us;19755us;19756us;19790us;19791us;19829us;19830us;19861us;19864us;19895us;19896us;19899us;19900us;19901us;19984us;19985us;19988us;19989us;19990us;20071us;20072us;20075us;20076us;20080us;20081us;20084us;20085us;20091us;20093us;20094us;20095us;20098us;20100us;20101us;20102us;20106us;20108us;20110us;20111us;20112us;20114us;20115us;20116us;20125us;20213us;20214us;20215us;20216us;20220us;20222us;20226us;20227us;20230us;20231us;20232us;20233us;20237us;20238us;20241us;20243us;20244us;20248us;20249us;20253us;20254us;20258us;20259us;20263us;20264us;20296us;20305us;20309us;20311us;20312us;20314us;20315us;20316us;20360us;20364us;20365us;20366us;20367us;20368us;20369us;20405us;20407us;20489us;20490us;20491us;20528us;20531us;20614us;20618us;20619us;20620us;20622us;20623us;20625us;20626us;20628us;20629us;20671us;20672us;20714us;20716us;20717us;20719us;20752us;20754us;20787us;20824us;20825us;20826us;20828us;20865us;20866us;20867us;20869us;20906us;20907us;20908us;20943us;20944us;20946us;20983us;20984us;20985us;21020us;21021us;21054us;21056us;21090us;21091us;21092us;21094us;21096us;21130us;21131us;21132us;21134us;21168us;21169us;21170us;21172us;21174us;21208us;21209us;21210us;21218us;21226us;21234us;21269us;21270us;21271us;21303us;21304us;21306us;21343us;21344us;21345us;21379us;21380us;21382us;21383us;21386us;21389us;21425us;21426us;21427us;21461us;21495us;21496us;21532us;21568us;21569us;21570us;21606us;21607us;21608us;21611us;21647us;21648us;21649us;21683us;21684us;21720us;21721us;21722us;21756us;21757us;21760us;21791us;21793us;21824us;21826us;21827us;21829us;21834us;21838us;21839us;21847us;21849us;21850us;21885us;21886us;21887us;21889us;21890us;21891us;21926us;21930us;21935us;21936us;21937us;21938us;21972us;21973us;21975us;22009us;22010us;22013us;22014us;22017us;22018us;22021us;22022us;22025us;22026us;22029us;22030us;22033us;22034us;22037us;22038us;22041us;22042us;22045us;22046us;22049us;22050us;22053us;22054us;22057us;22058us;22061us;22062us;22065us;22066us;22069us;22070us;22073us;22074us;22077us;22078us;22081us;22082us;22085us;22086us;22089us;22090us;22093us;22094us;22097us;22098us;22101us;22102us;22105us;22106us;22109us;22110us;22113us;22114us;22117us;22118us;22121us;22122us;22125us;22126us;22129us;22130us;22133us;22134us;22136us;22137us;22139us;22173us;22174us;22176us;22181us;22215us;22216us;22217us;22219us;22223us;22224us;22259us;22263us;22268us;22269us;22271us;22273us;22274us;22275us;22276us;22277us;22312us;22318us;22325us;22326us;22327us;22329us;22363us;22367us;22403us;22409us;22410us;22411us;22412us;22413us;22414us;22415us;22416us;22457us;22458us;22459us;22463us;22467us;22468us;22470us;22471us;22474us;22478us;22479us;22487us;22488us;22489us;22491us;22492us;22529us;22531us;22572us;22573us;22574us;22575us;22576us;22585us;22586us;22587us;22588us;22589us;22591us;22625us;22626us;22627us;22628us;22637us;22641us;22642us;22644us;22645us;22647us;22648us;22656us;22662us;22663us;22665us;22669us;22670us;22671us;22678us;22679us;22680us;22681us;22682us;22683us;22691us;22699us;22707us;22709us;22710us;22712us;22714us;22715us;22797us;22798us;22799us;22800us;22809us;22810us;22811us;22839us;22843us;22844us;22848us;22849us;22850us;22852us;22858us;22859us;22861us;22865us;22866us;22867us;22868us;22869us;22870us;22871us;22872us;22873us;22874us;22875us;22876us;22877us;22878us;22879us;22880us;22881us;22882us;22883us;22884us;22885us;22886us;22887us;22888us;22889us;22891us;22892us;22894us;22895us;22896us;22898us;22899us;22900us;22901us;22902us;22904us;22905us;22916us;22917us;22918us;22919us;22920us;22921us;22922us;22923us;22924us;22928us;22929us;22933us;22934us;22936us;22938us;22939us;22940us;22941us;22942us;22943us;22944us;22945us;22946us;22947us;22948us;22949us;22950us;22951us;22952us;22953us;22954us;22955us;22956us;22957us;22958us;22959us;22960us;22961us;22962us;22963us;22964us;22965us;22967us;22968us;22969us;23051us;23054us;23055us;23056us;23138us;23141us;23142us;23143us;23144us;23145us;23146us;23147us;23151us;23155us;23156us;23157us;23158us;23162us;23166us;23167us;23168us;23169us;23173us;23174us;23175us;23176us;23177us;23181us;23182us;23183us;23184us;23188us;23189us;23190us;23191us;23192us;23193us;23194us;23195us;23196us;23197us;23198us;23199us;23200us;23201us;|]
+let _fsyacc_reductionSymbolCounts = [|1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;2us;3us;3us;3us;1us;2us;3us;1us;1us;2us;1us;1us;3us;0us;2us;1us;1us;1us;1us;1us;2us;3us;2us;5us;5us;5us;3us;3us;1us;2us;2us;1us;3us;4us;1us;1us;4us;3us;3us;1us;1us;0us;3us;3us;2us;1us;1us;5us;5us;4us;5us;3us;1us;12us;0us;2us;5us;3us;5us;3us;3us;0us;3us;2us;7us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;1us;1us;0us;3us;11us;4us;4us;4us;4us;5us;5us;5us;0us;2us;3us;3us;2us;5us;4us;3us;1us;1us;2us;3us;0us;2us;3us;2us;1us;2us;2us;1us;3us;4us;1us;4us;3us;3us;1us;1us;0us;5us;4us;3us;1us;2us;2us;3us;1us;2us;3us;1us;1us;3us;3us;3us;5us;3us;5us;4us;2us;1us;2us;2us;3us;3us;3us;1us;3us;3us;3us;3us;3us;1us;1us;3us;3us;3us;3us;1us;0us;1us;2us;5us;4us;4us;2us;1us;3us;3us;4us;6us;2us;2us;2us;2us;2us;1us;1us;1us;1us;3us;3us;0us;1us;2us;8us;7us;7us;6us;2us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;1us;1us;2us;0us;3us;2us;3us;3us;1us;3us;6us;5us;4us;4us;4us;1us;2us;2us;3us;3us;4us;5us;4us;5us;4us;11us;3us;4us;5us;5us;8us;6us;6us;5us;5us;6us;6us;5us;4us;8us;6us;6us;4us;0us;2us;2us;3us;3us;1us;4us;2us;0us;1us;1us;1us;1us;3us;1us;0us;3us;0us;3us;5us;2us;1us;0us;2us;2us;1us;0us;2us;2us;3us;3us;1us;3us;2us;4us;4us;3us;4us;2us;1us;1us;6us;3us;3us;3us;7us;3us;3us;3us;2us;2us;1us;3us;3us;3us;1us;1us;1us;1us;1us;2us;3us;3us;2us;1us;3us;3us;1us;2us;4us;5us;3us;1us;0us;5us;1us;0us;2us;0us;2us;3us;1us;3us;3us;1us;1us;4us;3us;3us;4us;3us;4us;5us;7us;4us;4us;3us;1us;3us;1us;2us;3us;1us;1us;3us;1us;3us;3us;5us;4us;4us;4us;5us;5us;5us;5us;1us;3us;4us;2us;4us;4us;2us;3us;3us;3us;2us;4us;4us;3us;3us;2us;1us;3us;3us;1us;3us;1us;1us;1us;3us;2us;2us;5us;5us;4us;3us;2us;5us;4us;1us;3us;3us;0us;2us;3us;1us;2us;4us;3us;2us;1us;1us;1us;1us;1us;1us;8us;1us;1us;0us;3us;3us;2us;3us;1us;4us;2us;3us;2us;2us;2us;2us;2us;3us;0us;2us;1us;6us;6us;5us;3us;3us;1us;2us;2us;0us;4us;3us;1us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;4us;1us;2us;1us;3us;1us;2us;1us;3us;1us;1us;0us;3us;2us;1us;1us;3us;3us;2us;3us;3us;3us;2us;1us;1us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;4us;3us;3us;2us;2us;3us;4us;4us;2us;3us;3us;2us;2us;1us;1us;3us;1us;2us;3us;3us;1us;1us;3us;3us;3us;3us;1us;2us;1us;1us;1us;1us;1us;3us;3us;3us;2us;4us;4us;4us;3us;1us;0us;3us;3us;2us;3us;1us;1us;3us;3us;2us;3us;3us;2us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;3us;3us;2us;0us;2us;3us;3us;3us;2us;1us;3us;2us;1us;2us;1us;1us;3us;3us;1us;2us;3us;2us;1us;3us;5us;1us;1us;1us;6us;7us;0us;3us;3us;2us;2us;3us;3us;1us;1us;1us;3us;3us;3us;3us;3us;3us;2us;3us;4us;3us;3us;2us;2us;2us;1us;2us;2us;1us;2us;2us;5us;5us;5us;4us;3us;4us;5us;5us;5us;4us;3us;5us;2us;4us;3us;2us;2us;2us;2us;8us;8us;7us;5us;3us;2us;2us;3us;3us;3us;3us;3us;3us;3us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;2us;2us;1us;1us;4us;4us;4us;2us;1us;2us;1us;3us;2us;3us;3us;2us;1us;2us;3us;2us;1us;2us;2us;4us;5us;4us;4us;3us;2us;2us;0us;2us;2us;2us;2us;2us;2us;0us;2us;2us;3us;3us;3us;3us;4us;4us;3us;3us;4us;4us;2us;2us;2us;2us;2us;2us;2us;6us;4us;4us;2us;2us;2us;1us;2us;1us;2us;1us;3us;3us;2us;3us;3us;3us;2us;2us;1us;3us;3us;2us;3us;1us;1us;3us;3us;3us;2us;4us;4us;1us;1us;1us;0us;1us;5us;3us;3us;3us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;3us;3us;2us;3us;3us;3us;2us;3us;3us;3us;2us;2us;3us;3us;3us;2us;2us;2us;2us;2us;4us;6us;1us;1us;1us;3us;3us;1us;3us;3us;3us;2us;2us;1us;1us;1us;1us;0us;1us;0us;1us;2us;3us;3us;2us;5us;1us;1us;6us;2us;0us;0us;1us;0us;4us;0us;2us;3us;6us;1us;5us;3us;1us;1us;2us;5us;5us;4us;6us;1us;0us;1us;1us;2us;2us;1us;1us;3us;0us;3us;2us;3us;1us;2us;4us;3us;2us;5us;4us;2us;1us;0us;2us;3us;3us;2us;0us;2us;2us;5us;2us;1us;3us;3us;3us;2us;2us;4us;4us;5us;5us;5us;4us;4us;3us;2us;3us;1us;3us;1us;3us;0us;2us;2us;3us;3us;1us;3us;3us;2us;1us;3us;3us;2us;1us;4us;4us;5us;5us;2us;3us;3us;4us;4us;1us;3us;3us;4us;3us;3us;3us;4us;1us;2us;3us;3us;2us;2us;2us;3us;3us;1us;3us;3us;2us;3us;3us;2us;1us;3us;3us;1us;1us;3us;1us;3us;1us;1us;3us;2us;3us;2us;4us;1us;1us;3us;3us;2us;3us;4us;5us;6us;7us;8us;9us;10us;11us;12us;13us;14us;15us;16us;17us;18us;19us;20us;21us;22us;23us;24us;25us;26us;27us;28us;29us;30us;31us;32us;33us;4us;3us;3us;0us;1us;3us;4us;1us;1us;1us;1us;1us;1us;3us;3us;6us;6us;5us;4us;3us;1us;1us;2us;1us;1us;3us;2us;3us;4us;3us;1us;2us;6us;6us;4us;3us;3us;2us;2us;1us;3us;2us;1us;1us;0us;3us;3us;1us;1us;3us;1us;3us;1us;1us;2us;1us;3us;3us;2us;2us;2us;1us;1us;1us;3us;3us;3us;3us;1us;4us;6us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;1us;2us;3us;1us;1us;1us;1us;3us;3us;1us;1us;1us;1us;1us;1us;1us;2us;2us;0us;1us;1us;2us;2us;1us;1us;1us;1us;1us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;1us;3us;2us;3us;1us;2us;1us;1us;0us;1us;0us;2us;1us;1us;2us;1us;1us;2us;1us;1us;1us;2us;1us;1us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;|]
+let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;4us;5us;5us;5us;6us;6us;7us;7us;7us;7us;7us;7us;7us;8us;8us;9us;10us;11us;11us;12us;12us;13us;14us;14us;15us;15us;15us;15us;15us;16us;16us;16us;17us;17us;17us;18us;18us;19us;19us;20us;20us;21us;22us;22us;23us;23us;23us;23us;24us;24us;24us;25us;25us;25us;26us;26us;26us;26us;26us;26us;26us;26us;27us;28us;28us;28us;29us;29us;29us;30us;30us;31us;31us;32us;32us;33us;33us;33us;34us;34us;34us;34us;35us;35us;35us;35us;36us;36us;36us;37us;37us;38us;39us;39us;39us;39us;39us;39us;39us;39us;40us;40us;40us;40us;41us;41us;41us;41us;42us;42us;43us;44us;44us;45us;45us;45us;46us;46us;47us;47us;48us;49us;49us;50us;50us;50us;50us;51us;51us;52us;52us;52us;52us;52us;53us;53us;53us;53us;53us;54us;54us;55us;55us;55us;55us;55us;55us;55us;55us;55us;56us;56us;56us;56us;57us;57us;58us;58us;58us;58us;58us;58us;58us;59us;59us;59us;60us;61us;61us;62us;62us;63us;63us;63us;63us;64us;64us;65us;65us;65us;66us;66us;66us;66us;67us;67us;67us;67us;67us;68us;69us;69us;70us;70us;70us;70us;71us;71us;71us;71us;72us;72us;72us;73us;73us;73us;73us;74us;74us;75us;75us;75us;76us;76us;76us;77us;78us;78us;78us;79us;79us;80us;81us;81us;81us;81us;82us;82us;82us;82us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;84us;84us;84us;84us;85us;85us;85us;85us;86us;86us;86us;87us;87us;87us;87us;87us;88us;88us;89us;89us;89us;90us;90us;90us;91us;91us;92us;92us;92us;93us;93us;94us;94us;95us;95us;96us;96us;97us;97us;97us;98us;98us;99us;99us;99us;99us;100us;100us;100us;101us;101us;101us;101us;101us;102us;102us;102us;102us;103us;103us;104us;104us;104us;105us;105us;105us;106us;106us;107us;107us;107us;107us;108us;108us;109us;109us;110us;110us;111us;112us;112us;112us;113us;114us;114us;115us;116us;116us;117us;117us;118us;118us;118us;118us;119us;119us;119us;119us;119us;119us;119us;119us;119us;119us;119us;119us;120us;120us;121us;121us;121us;122us;123us;123us;124us;124us;124us;124us;124us;124us;124us;124us;124us;124us;125us;125us;125us;126us;126us;126us;126us;127us;127us;127us;127us;127us;127us;128us;128us;128us;128us;129us;129us;129us;129us;129us;130us;130us;131us;131us;132us;133us;133us;133us;133us;134us;135us;135us;136us;136us;136us;137us;137us;138us;138us;139us;140us;141us;141us;142us;142us;142us;142us;143us;143us;144us;145us;145us;145us;146us;146us;147us;147us;148us;148us;148us;148us;148us;148us;149us;149us;150us;151us;151us;152us;152us;153us;153us;153us;154us;154us;154us;155us;156us;156us;157us;158us;158us;159us;159us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;160us;161us;161us;161us;161us;162us;162us;163us;163us;164us;164us;165us;166us;166us;167us;167us;168us;168us;169us;169us;169us;169us;169us;169us;169us;169us;169us;169us;170us;170us;170us;170us;170us;170us;171us;171us;172us;172us;172us;173us;173us;173us;174us;174us;174us;174us;174us;174us;174us;174us;174us;174us;174us;175us;175us;176us;176us;176us;176us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;178us;178us;179us;179us;179us;179us;179us;179us;179us;179us;179us;179us;179us;179us;179us;180us;180us;180us;180us;180us;180us;181us;181us;182us;182us;183us;183us;183us;184us;184us;184us;185us;185us;185us;185us;186us;186us;186us;187us;187us;187us;188us;188us;188us;189us;190us;190us;190us;190us;190us;190us;191us;191us;192us;192us;192us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;194us;194us;194us;194us;194us;194us;195us;195us;196us;196us;196us;196us;197us;197us;197us;197us;197us;198us;199us;199us;199us;199us;199us;199us;199us;200us;200us;201us;202us;203us;203us;203us;203us;204us;204us;204us;204us;204us;205us;205us;205us;205us;205us;205us;205us;205us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;207us;207us;208us;208us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;211us;211us;211us;211us;211us;211us;211us;211us;211us;211us;211us;212us;212us;212us;212us;213us;213us;213us;213us;214us;214us;214us;214us;215us;215us;215us;215us;215us;215us;215us;215us;215us;215us;216us;216us;216us;217us;217us;218us;218us;219us;219us;219us;219us;219us;220us;220us;220us;221us;221us;222us;222us;223us;224us;225us;225us;225us;226us;227us;227us;228us;229us;229us;230us;230us;231us;231us;232us;232us;232us;233us;233us;234us;234us;234us;234us;234us;234us;234us;234us;234us;235us;235us;236us;236us;236us;236us;237us;237us;238us;238us;239us;239us;239us;239us;239us;240us;240us;240us;241us;241us;241us;242us;242us;243us;243us;243us;244us;245us;245us;245us;246us;247us;247us;248us;248us;248us;248us;248us;249us;249us;249us;249us;249us;249us;249us;249us;250us;250us;251us;251us;252us;252us;253us;253us;253us;254us;254us;254us;255us;255us;255us;255us;256us;256us;256us;256us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;258us;258us;258us;258us;259us;259us;259us;259us;260us;261us;261us;261us;261us;261us;261us;261us;261us;262us;262us;262us;262us;262us;262us;262us;263us;263us;264us;264us;265us;265us;266us;266us;267us;267us;268us;268us;268us;268us;268us;268us;268us;268us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;269us;270us;271us;271us;271us;272us;272us;273us;273us;274us;274us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;276us;276us;277us;277us;277us;277us;277us;277us;277us;278us;278us;278us;279us;279us;280us;281us;281us;282us;282us;282us;283us;283us;283us;284us;284us;285us;285us;285us;285us;286us;286us;287us;288us;288us;288us;288us;289us;289us;289us;289us;289us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;291us;292us;292us;293us;293us;294us;294us;294us;294us;295us;296us;296us;297us;297us;297us;298us;298us;299us;299us;300us;300us;300us;300us;301us;301us;301us;302us;302us;302us;302us;303us;303us;304us;304us;305us;305us;306us;306us;307us;307us;308us;308us;309us;309us;310us;310us;311us;311us;312us;312us;313us;313us;314us;314us;315us;316us;317us;317us;318us;318us;318us;319us;319us;319us;320us;320us;320us;321us;321us;322us;322us;322us;323us;323us;323us;324us;324us;324us;325us;326us;326us;326us;327us;327us;327us;328us;328us;328us;328us;328us;329us;329us;329us;329us;329us;329us;|]
+let _fsyacc_immediateActions = [|65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;16389us;16390us;16391us;16392us;16393us;16394us;65535us;16395us;65535us;16396us;65535us;16397us;65535us;16398us;65535us;16399us;65535us;16400us;65535us;16402us;65535us;65535us;65535us;16404us;65535us;16406us;16407us;16408us;65535us;65535us;65535us;16411us;16412us;16413us;65535us;16415us;16416us;65535us;16417us;65535us;16418us;65535us;16419us;65535us;65535us;65535us;65535us;65535us;16421us;16422us;65535us;65535us;65535us;16424us;65535us;16426us;65535us;16427us;65535us;65535us;16429us;65535us;65535us;65535us;16430us;16431us;16432us;65535us;65535us;65535us;16433us;16434us;65535us;16435us;16436us;65535us;65535us;65535us;65535us;16439us;65535us;65535us;16440us;16442us;16443us;65535us;65535us;65535us;65535us;16444us;16445us;16446us;65535us;65535us;16447us;16448us;16449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16450us;65535us;65535us;65535us;65535us;65535us;16453us;65535us;65535us;16454us;65535us;65535us;65535us;16455us;65535us;65535us;16456us;65535us;65535us;16457us;65535us;65535us;16459us;16460us;65535us;65535us;65535us;65535us;65535us;65535us;16461us;65535us;16462us;16463us;16464us;65535us;65535us;16465us;16466us;65535us;65535us;16467us;16468us;65535us;16469us;65535us;65535us;16470us;16471us;65535us;65535us;16472us;16473us;65535us;65535us;16474us;16475us;16476us;16477us;65535us;65535us;16479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16480us;65535us;65535us;65535us;65535us;16483us;65535us;16484us;65535us;65535us;16485us;65535us;16486us;65535us;65535us;16487us;65535us;16489us;65535us;65535us;16490us;16491us;65535us;65535us;65535us;65535us;16493us;16494us;65535us;65535us;16495us;16496us;16497us;65535us;16498us;65535us;65535us;16499us;65535us;16501us;65535us;16502us;65535us;16503us;65535us;16505us;65535us;16506us;65535us;65535us;16508us;65535us;65535us;65535us;16509us;16510us;65535us;65535us;65535us;16511us;16512us;65535us;16513us;16514us;16515us;65535us;65535us;65535us;65535us;16517us;16520us;16521us;65535us;16522us;65535us;16523us;65535us;65535us;65535us;65535us;65535us;16526us;16527us;16528us;65535us;65535us;16529us;65535us;16530us;65535us;16531us;65535us;65535us;16532us;16533us;65535us;65535us;16534us;16535us;65535us;16536us;16537us;65535us;65535us;16539us;65535us;65535us;16541us;65535us;16542us;65535us;65535us;65535us;16544us;16545us;65535us;16546us;16547us;16548us;16549us;65535us;65535us;65535us;16551us;16552us;16553us;65535us;65535us;16554us;16555us;65535us;16558us;65535us;65535us;65535us;65535us;16559us;65535us;65535us;16560us;16561us;16562us;16563us;65535us;16564us;65535us;65535us;16565us;65535us;65535us;65535us;16566us;65535us;65535us;65535us;65535us;16567us;65535us;16568us;65535us;16569us;65535us;16570us;65535us;16571us;65535us;16572us;16574us;16575us;16576us;65535us;65535us;16577us;65535us;65535us;16578us;65535us;16581us;65535us;65535us;65535us;65535us;65535us;65535us;16582us;16583us;65535us;65535us;65535us;65535us;65535us;65535us;16584us;16585us;16586us;65535us;16587us;16588us;16589us;65535us;65535us;16590us;16591us;65535us;65535us;16592us;16593us;65535us;16594us;65535us;65535us;16595us;16596us;65535us;65535us;16597us;16598us;16599us;16600us;65535us;16601us;65535us;65535us;16603us;65535us;16604us;65535us;65535us;16605us;16606us;65535us;65535us;16608us;65535us;65535us;65535us;65535us;65535us;16609us;65535us;65535us;65535us;65535us;16610us;16611us;16612us;16613us;65535us;16615us;65535us;16617us;65535us;65535us;65535us;65535us;16618us;16619us;65535us;65535us;16620us;16621us;65535us;65535us;16622us;16623us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16624us;16625us;65535us;16626us;65535us;16627us;65535us;16628us;65535us;65535us;65535us;65535us;65535us;16629us;16630us;16631us;65535us;16632us;65535us;16633us;65535us;65535us;65535us;65535us;65535us;16634us;16635us;16636us;16637us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16638us;16639us;16640us;16641us;65535us;16643us;16644us;65535us;65535us;16645us;65535us;65535us;16646us;16647us;65535us;65535us;65535us;16648us;16649us;16651us;16652us;16653us;16654us;65535us;65535us;16655us;65535us;65535us;16658us;65535us;65535us;16660us;65535us;65535us;16661us;16662us;16663us;65535us;16665us;16666us;16667us;65535us;16669us;16670us;65535us;65535us;16671us;16672us;16673us;65535us;65535us;16674us;65535us;65535us;65535us;65535us;16676us;65535us;16677us;16678us;65535us;65535us;16679us;65535us;16680us;16681us;16682us;65535us;65535us;65535us;65535us;65535us;16683us;16684us;16685us;16686us;65535us;65535us;65535us;65535us;16687us;65535us;65535us;16688us;16689us;65535us;16690us;16691us;65535us;16692us;16693us;65535us;65535us;16694us;16695us;65535us;16696us;16697us;16698us;16699us;16700us;16701us;65535us;65535us;65535us;65535us;16704us;16705us;16706us;65535us;65535us;16707us;65535us;65535us;65535us;65535us;16708us;16709us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16712us;16713us;65535us;65535us;65535us;65535us;16716us;16717us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16722us;16723us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16728us;65535us;65535us;65535us;65535us;16730us;65535us;16731us;16732us;16733us;65535us;65535us;16734us;65535us;65535us;65535us;65535us;65535us;65535us;16735us;65535us;16736us;16737us;65535us;65535us;65535us;65535us;65535us;16742us;65535us;65535us;16743us;65535us;16745us;65535us;65535us;16746us;65535us;65535us;65535us;16749us;65535us;16750us;16751us;65535us;16752us;16753us;16754us;65535us;16755us;65535us;65535us;16757us;16758us;65535us;65535us;16759us;65535us;65535us;16760us;65535us;16761us;65535us;65535us;65535us;65535us;65535us;16764us;65535us;16765us;65535us;65535us;16766us;16767us;65535us;16768us;65535us;65535us;16771us;16772us;65535us;16773us;65535us;65535us;16775us;16776us;16777us;16778us;16779us;16780us;16781us;65535us;65535us;16782us;16783us;65535us;16784us;65535us;65535us;65535us;65535us;16785us;16786us;16787us;16788us;65535us;16789us;65535us;65535us;65535us;65535us;16790us;16791us;65535us;65535us;16793us;16794us;65535us;65535us;65535us;65535us;16797us;16798us;65535us;16799us;65535us;65535us;65535us;16800us;65535us;65535us;16801us;16802us;16803us;16804us;16805us;16806us;16807us;16808us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16809us;65535us;65535us;65535us;16813us;65535us;16814us;65535us;65535us;16816us;65535us;65535us;65535us;65535us;16818us;16819us;65535us;16820us;16821us;65535us;65535us;16822us;65535us;65535us;16825us;65535us;65535us;16826us;65535us;16828us;16829us;65535us;65535us;65535us;65535us;65535us;16830us;16831us;16832us;65535us;65535us;16833us;16834us;16835us;65535us;65535us;16837us;65535us;65535us;65535us;16839us;65535us;16840us;16841us;65535us;65535us;16842us;16843us;16844us;16845us;16846us;16847us;16848us;16849us;16850us;16851us;16852us;16853us;16854us;16855us;16856us;16857us;16858us;16859us;16860us;16861us;65535us;65535us;16862us;65535us;65535us;65535us;16863us;16866us;65535us;65535us;16867us;16868us;65535us;16869us;65535us;65535us;16871us;65535us;16873us;65535us;65535us;16875us;16876us;16877us;65535us;65535us;16878us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16879us;16880us;65535us;65535us;16884us;65535us;65535us;16888us;65535us;65535us;16891us;16892us;65535us;16894us;65535us;65535us;65535us;16897us;65535us;16898us;65535us;16899us;65535us;65535us;65535us;65535us;16901us;16902us;65535us;65535us;16904us;65535us;16905us;65535us;16906us;16907us;65535us;16908us;65535us;16909us;65535us;16910us;16911us;16913us;65535us;65535us;16914us;16915us;65535us;16916us;65535us;16917us;65535us;16918us;16920us;65535us;65535us;16921us;65535us;16922us;65535us;65535us;16923us;65535us;65535us;16924us;65535us;65535us;16926us;16927us;16928us;16929us;16930us;16931us;65535us;65535us;16932us;16933us;65535us;65535us;16935us;65535us;65535us;65535us;16936us;16937us;65535us;16938us;16939us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16942us;16943us;65535us;65535us;65535us;65535us;16948us;16949us;65535us;65535us;16952us;16954us;65535us;65535us;16957us;16958us;65535us;16960us;65535us;65535us;65535us;16963us;65535us;16964us;65535us;65535us;16966us;16967us;16969us;65535us;16970us;65535us;65535us;16971us;16972us;16973us;16974us;65535us;65535us;16975us;16976us;65535us;65535us;16978us;16980us;65535us;65535us;65535us;16981us;16982us;65535us;16984us;65535us;65535us;16985us;65535us;16988us;65535us;65535us;65535us;16989us;65535us;16991us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16992us;65535us;65535us;65535us;65535us;16993us;65535us;65535us;65535us;65535us;65535us;16994us;65535us;65535us;16996us;16997us;65535us;16998us;16999us;65535us;17000us;17001us;17002us;17003us;17004us;65535us;65535us;17005us;17006us;65535us;65535us;17007us;17008us;65535us;65535us;17009us;17010us;65535us;17012us;65535us;17013us;65535us;65535us;17014us;17015us;17016us;65535us;65535us;65535us;65535us;65535us;17020us;65535us;17021us;65535us;17023us;65535us;17024us;65535us;65535us;65535us;65535us;17025us;17026us;17027us;17028us;17029us;65535us;17030us;65535us;65535us;65535us;17031us;17032us;17033us;17034us;17035us;65535us;65535us;17036us;17037us;17038us;65535us;65535us;65535us;65535us;65535us;17042us;17043us;65535us;65535us;65535us;65535us;65535us;65535us;17044us;65535us;65535us;65535us;65535us;65535us;65535us;17045us;17046us;65535us;65535us;65535us;65535us;17047us;65535us;65535us;17048us;65535us;65535us;65535us;17050us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17051us;17052us;65535us;17053us;17054us;65535us;17055us;17056us;65535us;65535us;65535us;17058us;65535us;65535us;65535us;17061us;65535us;17063us;65535us;17065us;65535us;17067us;65535us;17069us;65535us;17071us;65535us;17073us;65535us;17075us;65535us;17077us;65535us;17079us;65535us;17081us;65535us;17083us;65535us;17085us;65535us;17087us;65535us;17089us;65535us;17091us;65535us;17093us;65535us;17095us;65535us;17097us;65535us;17099us;65535us;65535us;65535us;65535us;17103us;65535us;65535us;65535us;17105us;17106us;65535us;17107us;17108us;17109us;17110us;17111us;65535us;65535us;17112us;65535us;17113us;65535us;65535us;17114us;17115us;17116us;17117us;65535us;17118us;65535us;17119us;17120us;17121us;17122us;65535us;65535us;65535us;17124us;65535us;17125us;65535us;17126us;17127us;17128us;17129us;65535us;65535us;17132us;65535us;17133us;65535us;17135us;65535us;17136us;17137us;65535us;65535us;17140us;65535us;17141us;17142us;65535us;17144us;65535us;17146us;65535us;17147us;65535us;17149us;65535us;65535us;65535us;65535us;17151us;65535us;65535us;17152us;65535us;65535us;17153us;65535us;65535us;17154us;65535us;65535us;17155us;65535us;65535us;17156us;65535us;65535us;17157us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17158us;17160us;17161us;65535us;17162us;65535us;17163us;65535us;65535us;65535us;17165us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17170us;17171us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17174us;65535us;65535us;65535us;65535us;17176us;65535us;17177us;65535us;17178us;65535us;65535us;17179us;65535us;65535us;17180us;65535us;17181us;17182us;17183us;65535us;65535us;17184us;17185us;17186us;17187us;65535us;65535us;17188us;17189us;17190us;17191us;17192us;17194us;65535us;65535us;65535us;65535us;17195us;65535us;17196us;65535us;65535us;17197us;17198us;17199us;17200us;17201us;17202us;17203us;17204us;17205us;17206us;17207us;17208us;17209us;17210us;17211us;65535us;65535us;17212us;17213us;65535us;17214us;17215us;65535us;65535us;65535us;17216us;17217us;17218us;17219us;65535us;65535us;17220us;17221us;17222us;17223us;65535us;65535us;65535us;17224us;65535us;17225us;17226us;17227us;65535us;17228us;17229us;17230us;17231us;17232us;65535us;17233us;65535us;65535us;65535us;65535us;65535us;17234us;17235us;17236us;17237us;65535us;65535us;17238us;65535us;17239us;65535us;65535us;17241us;17242us;17243us;17244us;17245us;17246us;17247us;17248us;17249us;17251us;17253us;65535us;17254us;65535us;17256us;17257us;65535us;65535us;17259us;17260us;65535us;65535us;65535us;65535us;65535us;17261us;17262us;17265us;65535us;65535us;65535us;17267us;65535us;17269us;65535us;17270us;65535us;65535us;65535us;65535us;65535us;17271us;17272us;65535us;65535us;65535us;17273us;17274us;65535us;65535us;65535us;17278us;65535us;65535us;65535us;17279us;65535us;65535us;17280us;65535us;65535us;65535us;17281us;17282us;65535us;65535us;65535us;17286us;17287us;65535us;17289us;17290us;65535us;65535us;17292us;17294us;17296us;65535us;65535us;65535us;17297us;65535us;17298us;17300us;17303us;65535us;17305us;65535us;65535us;17306us;65535us;17307us;65535us;17308us;65535us;17310us;65535us;17311us;65535us;65535us;65535us;65535us;17312us;65535us;17313us;17314us;65535us;65535us;17315us;17316us;17317us;17318us;17319us;65535us;65535us;65535us;17320us;17321us;65535us;65535us;65535us;65535us;17322us;17323us;65535us;17324us;65535us;17326us;65535us;17327us;65535us;17328us;65535us;65535us;17329us;65535us;65535us;65535us;65535us;65535us;17335us;17336us;65535us;65535us;17337us;17338us;65535us;65535us;17340us;17341us;65535us;17342us;65535us;65535us;17344us;17345us;65535us;17346us;65535us;65535us;65535us;17348us;17349us;65535us;65535us;65535us;17350us;17351us;65535us;65535us;17353us;17354us;65535us;65535us;65535us;17355us;17356us;65535us;65535us;65535us;65535us;17358us;17359us;65535us;17360us;65535us;65535us;17362us;17363us;65535us;17364us;65535us;17366us;65535us;65535us;65535us;17367us;17368us;65535us;65535us;17369us;65535us;65535us;17370us;17371us;65535us;17372us;17373us;65535us;65535us;17375us;17376us;65535us;17377us;65535us;17378us;17379us;65535us;17380us;65535us;65535us;65535us;65535us;65535us;17385us;65535us;65535us;65535us;17386us;65535us;65535us;17388us;65535us;17391us;17392us;65535us;17393us;17394us;65535us;65535us;65535us;17395us;17396us;17397us;65535us;17398us;65535us;65535us;17399us;65535us;17400us;65535us;17401us;65535us;17402us;65535us;17403us;65535us;17404us;65535us;17405us;65535us;17406us;65535us;17407us;65535us;17408us;65535us;17409us;65535us;17410us;65535us;17411us;65535us;17412us;65535us;17413us;65535us;17414us;65535us;17415us;65535us;17416us;65535us;17417us;65535us;17418us;65535us;17419us;65535us;17420us;65535us;17421us;65535us;17422us;65535us;17423us;65535us;17424us;65535us;17425us;65535us;17426us;65535us;17427us;65535us;17428us;65535us;17429us;65535us;17430us;65535us;17431us;65535us;65535us;65535us;65535us;65535us;65535us;17433us;17434us;65535us;65535us;17437us;65535us;65535us;65535us;17438us;65535us;65535us;17441us;17442us;17443us;17444us;65535us;65535us;65535us;17445us;17446us;65535us;65535us;65535us;65535us;65535us;17447us;17448us;17449us;17450us;17451us;17452us;17453us;65535us;17455us;17456us;65535us;65535us;17457us;65535us;17458us;65535us;65535us;17460us;65535us;17461us;17462us;65535us;17463us;65535us;65535us;65535us;65535us;17464us;17465us;17466us;65535us;17467us;17468us;17469us;17470us;65535us;65535us;17472us;17474us;17475us;65535us;65535us;17477us;65535us;17478us;65535us;17480us;65535us;65535us;17481us;65535us;65535us;17483us;17484us;65535us;17486us;17487us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17491us;65535us;65535us;17492us;65535us;17493us;17494us;17495us;65535us;17496us;17497us;65535us;65535us;17498us;65535us;17499us;17500us;65535us;65535us;17501us;65535us;65535us;17502us;17503us;17504us;17505us;17506us;17507us;17508us;17509us;17510us;17511us;17512us;17513us;17514us;17515us;17516us;17517us;17518us;17519us;17520us;17521us;17522us;17523us;17524us;17525us;65535us;17527us;65535us;17528us;17529us;65535us;17530us;17531us;17532us;17533us;65535us;17535us;65535us;17536us;17537us;17538us;17539us;17540us;17541us;17542us;17543us;65535us;17545us;65535us;17546us;65535us;65535us;17550us;17551us;17552us;17553us;17554us;17555us;17556us;17557us;17559us;17561us;17563us;17565us;17567us;17569us;17571us;17573us;17574us;17575us;17576us;17577us;17578us;17579us;17580us;17581us;17582us;17583us;17584us;65535us;17586us;17587us;65535us;65535us;17588us;17589us;65535us;65535us;17590us;17591us;17592us;17593us;17594us;17596us;65535us;65535us;17598us;17599us;17600us;65535us;65535us;17601us;17602us;17603us;65535us;17604us;17605us;17606us;17607us;65535us;17608us;17609us;17610us;65535us;17611us;17612us;17613us;17614us;17615us;17616us;17617us;17618us;17619us;17620us;17621us;17622us;17623us;17624us;|]
let _fsyacc_reductions = lazy [|
-//# 2858 "pars.fs"
+//# 2886 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParsedSigFile in
Microsoft.FSharp.Core.Operators.box
@@ -2864,7 +2892,7 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__startsignatureFile));
-//# 2867 "pars.fs"
+//# 2895 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParsedImplFile in
Microsoft.FSharp.Core.Operators.box
@@ -2873,7 +2901,7 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__startimplementationFile));
-//# 2876 "pars.fs"
+//# 2904 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParsedScriptInteraction in
Microsoft.FSharp.Core.Operators.box
@@ -2882,7 +2910,7 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__startinteraction));
-//# 2885 "pars.fs"
+//# 2913 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
@@ -2891,7 +2919,7 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__starttypedSequentialExprEOF));
-//# 2894 "pars.fs"
+//# 2922 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
Microsoft.FSharp.Core.Operators.box
@@ -2900,107 +2928,107 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__starttypEOF));
-//# 2903 "pars.fs"
+//# 2931 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveItemsTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 388 "src/Compiler/pars.fsy"
+//# 395 "src/Compiler/pars.fsy"
ParsedScriptInteraction.Definitions(_1, lhs parseState)
)
-//# 388 "src/Compiler/pars.fsy"
+//# 395 "src/Compiler/pars.fsy"
: ParsedScriptInteraction));
-//# 2914 "pars.fs"
+//# 2942 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 391 "src/Compiler/pars.fsy"
+//# 398 "src/Compiler/pars.fsy"
warning(Error(FSComp.SR.parsUnexpectedSemicolon(), rhs parseState 1))
ParsedScriptInteraction.Definitions([], lhs parseState)
)
-//# 391 "src/Compiler/pars.fsy"
+//# 398 "src/Compiler/pars.fsy"
: ParsedScriptInteraction));
-//# 2925 "pars.fs"
+//# 2953 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 395 "src/Compiler/pars.fsy"
+//# 402 "src/Compiler/pars.fsy"
ParsedScriptInteraction.Definitions([], lhs parseState)
)
-//# 395 "src/Compiler/pars.fsy"
+//# 402 "src/Compiler/pars.fsy"
: ParsedScriptInteraction));
-//# 2935 "pars.fs"
+//# 2963 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 399 "src/Compiler/pars.fsy"
+//# 406 "src/Compiler/pars.fsy"
)
-//# 399 "src/Compiler/pars.fsy"
+//# 406 "src/Compiler/pars.fsy"
: 'gentype_interactiveTerminator));
-//# 2945 "pars.fs"
+//# 2973 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 400 "src/Compiler/pars.fsy"
+//# 407 "src/Compiler/pars.fsy"
checkEndOfFileError _1
)
-//# 400 "src/Compiler/pars.fsy"
+//# 407 "src/Compiler/pars.fsy"
: 'gentype_interactiveTerminator));
-//# 2956 "pars.fs"
+//# 2984 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 414 "src/Compiler/pars.fsy"
+//# 421 "src/Compiler/pars.fsy"
[]
)
-//# 414 "src/Compiler/pars.fsy"
+//# 421 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 2967 "pars.fs"
+//# 2995 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveDefns in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 417 "src/Compiler/pars.fsy"
+//# 424 "src/Compiler/pars.fsy"
_1
)
-//# 417 "src/Compiler/pars.fsy"
+//# 424 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 2979 "pars.fs"
+//# 3007 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 420 "src/Compiler/pars.fsy"
+//# 427 "src/Compiler/pars.fsy"
_1
)
-//# 420 "src/Compiler/pars.fsy"
+//# 427 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 2991 "pars.fs"
+//# 3019 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveHash in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 423 "src/Compiler/pars.fsy"
+//# 430 "src/Compiler/pars.fsy"
_1
)
-//# 423 "src/Compiler/pars.fsy"
+//# 430 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 3003 "pars.fs"
+//# 3031 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveDefns in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in
@@ -3008,12 +3036,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 426 "src/Compiler/pars.fsy"
+//# 433 "src/Compiler/pars.fsy"
_1 @ _3
)
-//# 426 "src/Compiler/pars.fsy"
+//# 433 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 3016 "pars.fs"
+//# 3044 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in
@@ -3021,12 +3049,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 429 "src/Compiler/pars.fsy"
+//# 436 "src/Compiler/pars.fsy"
_1 @ _3
)
-//# 429 "src/Compiler/pars.fsy"
+//# 436 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 3029 "pars.fs"
+//# 3057 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveHash in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in
@@ -3034,35 +3062,35 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 432 "src/Compiler/pars.fsy"
+//# 439 "src/Compiler/pars.fsy"
_1 @ _3
)
-//# 432 "src/Compiler/pars.fsy"
+//# 439 "src/Compiler/pars.fsy"
: 'gentype_interactiveItemsTerminator));
-//# 3042 "pars.fs"
+//# 3070 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 438 "src/Compiler/pars.fsy"
+//# 445 "src/Compiler/pars.fsy"
_1
)
-//# 438 "src/Compiler/pars.fsy"
+//# 445 "src/Compiler/pars.fsy"
: 'gentype_interactiveDefns));
-//# 3053 "pars.fs"
+//# 3081 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveDefns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 441 "src/Compiler/pars.fsy"
+//# 448 "src/Compiler/pars.fsy"
_1 @ _2
)
-//# 441 "src/Compiler/pars.fsy"
+//# 448 "src/Compiler/pars.fsy"
: 'gentype_interactiveDefns));
-//# 3065 "pars.fs"
+//# 3093 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3070,165 +3098,201 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 447 "src/Compiler/pars.fsy"
+//# 454 "src/Compiler/pars.fsy"
match _2 with
| Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3))
| _ -> ()
let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else []
attrDecls @ [ mkSynExprDecl _3 ]
)
-//# 447 "src/Compiler/pars.fsy"
+//# 454 "src/Compiler/pars.fsy"
: 'gentype_interactiveExpr));
-//# 3082 "pars.fs"
+//# 3110 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 456 "src/Compiler/pars.fsy"
+//# 463 "src/Compiler/pars.fsy"
[SynModuleDecl.HashDirective(_1, rhs parseState 1)]
)
-//# 456 "src/Compiler/pars.fsy"
+//# 463 "src/Compiler/pars.fsy"
: 'gentype_interactiveHash));
-//# 3093 "pars.fs"
+//# 3121 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveSeparator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 460 "src/Compiler/pars.fsy"
+//# 467 "src/Compiler/pars.fsy"
)
-//# 460 "src/Compiler/pars.fsy"
+//# 467 "src/Compiler/pars.fsy"
: 'gentype_interactiveSeparators));
-//# 3104 "pars.fs"
+//# 3132 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interactiveSeparator in
let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 462 "src/Compiler/pars.fsy"
+//# 469 "src/Compiler/pars.fsy"
)
-//# 462 "src/Compiler/pars.fsy"
+//# 469 "src/Compiler/pars.fsy"
: 'gentype_interactiveSeparators));
-//# 3116 "pars.fs"
+//# 3144 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 466 "src/Compiler/pars.fsy"
+//# 473 "src/Compiler/pars.fsy"
)
-//# 466 "src/Compiler/pars.fsy"
+//# 473 "src/Compiler/pars.fsy"
: 'gentype_interactiveSeparator));
-//# 3126 "pars.fs"
+//# 3154 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 467 "src/Compiler/pars.fsy"
+//# 474 "src/Compiler/pars.fsy"
)
-//# 467 "src/Compiler/pars.fsy"
+//# 474 "src/Compiler/pars.fsy"
: 'gentype_interactiveSeparator));
-//# 3136 "pars.fs"
+//# 3164 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_hashDirectiveArgs in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 476 "src/Compiler/pars.fsy"
+//# 483 "src/Compiler/pars.fsy"
let m = match _3 with [] -> rhs2 parseState 1 2 | _ -> rhs2 parseState 1 3
ParsedHashDirective(_2, _3, m)
)
-//# 476 "src/Compiler/pars.fsy"
+//# 483 "src/Compiler/pars.fsy"
: 'gentype_hashDirective));
-//# 3149 "pars.fs"
+//# 3177 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 483 "src/Compiler/pars.fsy"
+//# 490 "src/Compiler/pars.fsy"
[]
)
-//# 483 "src/Compiler/pars.fsy"
+//# 490 "src/Compiler/pars.fsy"
: 'gentype_hashDirectiveArgs));
-//# 3159 "pars.fs"
+//# 3187 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hashDirectiveArgs in
let _2 = parseState.GetInput(2) :?> 'gentype_hashDirectiveArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 486 "src/Compiler/pars.fsy"
+//# 493 "src/Compiler/pars.fsy"
_1 @ [_2]
)
-//# 486 "src/Compiler/pars.fsy"
+//# 493 "src/Compiler/pars.fsy"
: 'gentype_hashDirectiveArgs));
-//# 3171 "pars.fs"
+//# 3199 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 492 "src/Compiler/pars.fsy"
+//# 499 "src/Compiler/pars.fsy"
let s, kind = _1
ParsedHashDirectiveArgument.String(s, kind, lhs parseState)
)
-//# 492 "src/Compiler/pars.fsy"
+//# 499 "src/Compiler/pars.fsy"
+ : 'gentype_hashDirectiveArg));
+//# 3211 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> int32 * bool in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 502 "src/Compiler/pars.fsy"
+ let n, _ = _1
+ ParsedHashDirectiveArgument.Int32(n, lhs parseState)
+ )
+//# 502 "src/Compiler/pars.fsy"
+ : 'gentype_hashDirectiveArg));
+//# 3223 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> string in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 505 "src/Compiler/pars.fsy"
+ let m = rhs parseState 1
+ ParsedHashDirectiveArgument.Ident(Ident(_1, m), lhs parseState)
+ )
+//# 505 "src/Compiler/pars.fsy"
+ : 'gentype_hashDirectiveArg));
+//# 3235 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> SynLongIdent in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 508 "src/Compiler/pars.fsy"
+ let path = _1
+ ParsedHashDirectiveArgument.LongIdent(path, lhs parseState)
+ )
+//# 508 "src/Compiler/pars.fsy"
: 'gentype_hashDirectiveArg));
-//# 3183 "pars.fs"
+//# 3247 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sourceIdentifier in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 495 "src/Compiler/pars.fsy"
+//# 511 "src/Compiler/pars.fsy"
let c, v = _1
ParsedHashDirectiveArgument.SourceIdentifier(c, v, lhs parseState)
)
-//# 495 "src/Compiler/pars.fsy"
+//# 511 "src/Compiler/pars.fsy"
: 'gentype_hashDirectiveArg));
-//# 3195 "pars.fs"
+//# 3259 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpecs in
let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 505 "src/Compiler/pars.fsy"
+//# 521 "src/Compiler/pars.fsy"
checkEndOfFileError _2; _1
)
-//# 505 "src/Compiler/pars.fsy"
+//# 521 "src/Compiler/pars.fsy"
: ParsedSigFile));
-//# 3207 "pars.fs"
+//# 3271 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpecs in
let _3 = parseState.GetInput(3) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 508 "src/Compiler/pars.fsy"
+//# 524 "src/Compiler/pars.fsy"
_1
)
-//# 508 "src/Compiler/pars.fsy"
+//# 524 "src/Compiler/pars.fsy"
: ParsedSigFile));
-//# 3219 "pars.fs"
+//# 3283 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 514 "src/Compiler/pars.fsy"
+//# 530 "src/Compiler/pars.fsy"
let emptySigFileFrag = ParsedSigFileFragment.AnonModule([], rhs parseState 1)
ParsedSigFile([], [emptySigFileFrag])
)
-//# 514 "src/Compiler/pars.fsy"
+//# 530 "src/Compiler/pars.fsy"
: ParsedSigFile));
-//# 3231 "pars.fs"
+//# 3295 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
@@ -3238,15 +3302,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 521 "src/Compiler/pars.fsy"
+//# 537 "src/Compiler/pars.fsy"
if not (isNil _2) then
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4)
let mModule = rhs parseState 1
mModule, _4, _5.LongIdent, _3, _2
)
-//# 521 "src/Compiler/pars.fsy"
+//# 537 "src/Compiler/pars.fsy"
: 'gentype_moduleIntro));
-//# 3249 "pars.fs"
+//# 3313 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
@@ -3255,15 +3319,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 527 "src/Compiler/pars.fsy"
+//# 543 "src/Compiler/pars.fsy"
if not (isNil _2) then
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4)
let mModule = rhs parseState 1
mModule, _4, [], _3, _2
)
-//# 527 "src/Compiler/pars.fsy"
+//# 543 "src/Compiler/pars.fsy"
: 'gentype_moduleIntro));
-//# 3266 "pars.fs"
+//# 3330 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
@@ -3273,59 +3337,59 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 533 "src/Compiler/pars.fsy"
+//# 549 "src/Compiler/pars.fsy"
if not (isNil _2) then
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4)
let mModule = rhs parseState 1
mModule, _4, [], _3, _2
)
-//# 533 "src/Compiler/pars.fsy"
+//# 549 "src/Compiler/pars.fsy"
: 'gentype_moduleIntro));
-//# 3284 "pars.fs"
+//# 3348 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in
let _3 = parseState.GetInput(3) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 541 "src/Compiler/pars.fsy"
+//# 557 "src/Compiler/pars.fsy"
let mNamespace = rhs parseState 1
mNamespace, _2, _3.LongIdent, grabXmlDoc(parseState, [], 1)
)
-//# 541 "src/Compiler/pars.fsy"
+//# 557 "src/Compiler/pars.fsy"
: 'gentype_namespaceIntro));
-//# 3297 "pars.fs"
+//# 3361 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 545 "src/Compiler/pars.fsy"
+//# 561 "src/Compiler/pars.fsy"
let mNamespace = rhs parseState 1
mNamespace, _2, [], grabXmlDoc(parseState, [], 1)
)
-//# 545 "src/Compiler/pars.fsy"
+//# 561 "src/Compiler/pars.fsy"
: 'gentype_namespaceIntro));
-//# 3310 "pars.fs"
+//# 3374 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 552 "src/Compiler/pars.fsy"
+//# 568 "src/Compiler/pars.fsy"
ParsedSigFile([], [ (_1 (None, false, [], PreXmlDoc.Empty)) ])
)
-//# 552 "src/Compiler/pars.fsy"
+//# 568 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceSpecs));
-//# 3321 "pars.fs"
+//# 3385 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleSpec in
let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceSpecList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 555 "src/Compiler/pars.fsy"
+//# 571 "src/Compiler/pars.fsy"
// If there are namespaces, the first fileModuleImpl may only contain # directives
let decls =
match (_1 (None, false, [], PreXmlDoc.Empty)) with
@@ -3341,32 +3405,32 @@ let _fsyacc_reductions = lazy [|
[])
ParsedSigFile(decls, _2)
)
-//# 555 "src/Compiler/pars.fsy"
+//# 571 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceSpecs));
-//# 3346 "pars.fs"
+//# 3410 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpec in
let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceSpecList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 573 "src/Compiler/pars.fsy"
+//# 589 "src/Compiler/pars.fsy"
_1 :: _2
)
-//# 573 "src/Compiler/pars.fsy"
+//# 589 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceSpecList));
-//# 3358 "pars.fs"
+//# 3422 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 576 "src/Compiler/pars.fsy"
+//# 592 "src/Compiler/pars.fsy"
[_1]
)
-//# 576 "src/Compiler/pars.fsy"
+//# 592 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceSpecList));
-//# 3369 "pars.fs"
+//# 3433 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_namespaceIntro in
let _2 = parseState.GetInput(2) :?> 'gentype_deprecated_opt_equals in
@@ -3374,13 +3438,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 580 "src/Compiler/pars.fsy"
+//# 596 "src/Compiler/pars.fsy"
let mNamespace, isRec, path, xml = _1
_3 (Some mNamespace, isRec, path, xml)
)
-//# 580 "src/Compiler/pars.fsy"
+//# 596 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceSpec));
-//# 3383 "pars.fs"
+//# 3447 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3389,7 +3453,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 587 "src/Compiler/pars.fsy"
+//# 603 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let m2 = rhs parseState 3
let mDeclsAndAttrs = (List.map (fun (a: SynAttributeList) -> a.Range) _1) @ (List.map (fun (d: SynModuleSigDecl) -> d.Range) _4)
@@ -3402,15 +3466,15 @@ let _fsyacc_reductions = lazy [|
let trivia: SynModuleOrNamespaceSigTrivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Module mModule }
ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid, (isRec || isRec2), SynModuleOrNamespaceKind.NamedModule, _4, xmlDoc, _1 @ attribs2, vis, m, trivia)))
)
-//# 587 "src/Compiler/pars.fsy"
+//# 603 "src/Compiler/pars.fsy"
: 'gentype_fileModuleSpec));
-//# 3407 "pars.fs"
+//# 3471 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfnsPossiblyEmptyBlock in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 600 "src/Compiler/pars.fsy"
+//# 616 "src/Compiler/pars.fsy"
let m = (rhs parseState 1)
(fun (mNamespaceOpt, isRec, path, xml) ->
match path with
@@ -3425,20 +3489,20 @@ let _fsyacc_reductions = lazy [|
| Some mNamespace -> { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace }
ParsedSigFileFragment.NamespaceFragment(path, isRec, SynModuleOrNamespaceKind.DeclaredNamespace, _1, PreXmlDoc.Empty, [], m, trivia))
)
-//# 600 "src/Compiler/pars.fsy"
+//# 616 "src/Compiler/pars.fsy"
: 'gentype_fileModuleSpec));
-//# 3430 "pars.fs"
+//# 3494 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfnsPossiblyEmpty in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 617 "src/Compiler/pars.fsy"
+//# 633 "src/Compiler/pars.fsy"
_1
)
-//# 617 "src/Compiler/pars.fsy"
+//# 633 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmptyBlock));
-//# 3441 "pars.fs"
+//# 3505 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfnsPossiblyEmpty in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
@@ -3446,69 +3510,69 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 620 "src/Compiler/pars.fsy"
+//# 636 "src/Compiler/pars.fsy"
_2
)
-//# 620 "src/Compiler/pars.fsy"
+//# 636 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmptyBlock));
-//# 3454 "pars.fs"
+//# 3518 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfnsPossiblyEmpty in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 623 "src/Compiler/pars.fsy"
+//# 639 "src/Compiler/pars.fsy"
// The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
// reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight())
_2
)
-//# 623 "src/Compiler/pars.fsy"
+//# 639 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmptyBlock));
-//# 3469 "pars.fs"
+//# 3533 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 629 "src/Compiler/pars.fsy"
+//# 645 "src/Compiler/pars.fsy"
[]
)
-//# 629 "src/Compiler/pars.fsy"
+//# 645 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmptyBlock));
-//# 3480 "pars.fs"
+//# 3544 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 634 "src/Compiler/pars.fsy"
+//# 650 "src/Compiler/pars.fsy"
_1
)
-//# 634 "src/Compiler/pars.fsy"
+//# 650 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmpty));
-//# 3491 "pars.fs"
+//# 3555 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 637 "src/Compiler/pars.fsy"
+//# 653 "src/Compiler/pars.fsy"
[]
)
-//# 637 "src/Compiler/pars.fsy"
+//# 653 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmpty));
-//# 3501 "pars.fs"
+//# 3565 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 640 "src/Compiler/pars.fsy"
+//# 656 "src/Compiler/pars.fsy"
[]
)
-//# 640 "src/Compiler/pars.fsy"
+//# 656 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfnsPossiblyEmpty));
-//# 3511 "pars.fs"
+//# 3575 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfn in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_topSeparators in
@@ -3516,58 +3580,58 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 645 "src/Compiler/pars.fsy"
+//# 661 "src/Compiler/pars.fsy"
_1 :: _3
)
-//# 645 "src/Compiler/pars.fsy"
+//# 661 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfns));
-//# 3524 "pars.fs"
+//# 3588 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in
let _3 = parseState.GetInput(3) :?> 'gentype_moduleSpfns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 648 "src/Compiler/pars.fsy"
+//# 664 "src/Compiler/pars.fsy"
(* silent recovery *) _3
)
-//# 648 "src/Compiler/pars.fsy"
+//# 664 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfns));
-//# 3536 "pars.fs"
+//# 3600 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfn in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_topSeparators in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 651 "src/Compiler/pars.fsy"
+//# 667 "src/Compiler/pars.fsy"
[_1]
)
-//# 651 "src/Compiler/pars.fsy"
+//# 667 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfns));
-//# 3548 "pars.fs"
+//# 3612 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 656 "src/Compiler/pars.fsy"
+//# 672 "src/Compiler/pars.fsy"
SynModuleSigDecl.HashDirective(_1, rhs2 parseState 1 1)
)
-//# 656 "src/Compiler/pars.fsy"
+//# 672 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3559 "pars.fs"
+//# 3623 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_valSpfn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 659 "src/Compiler/pars.fsy"
+//# 675 "src/Compiler/pars.fsy"
_1
)
-//# 659 "src/Compiler/pars.fsy"
+//# 675 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3570 "pars.fs"
+//# 3634 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3577,7 +3641,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 662 "src/Compiler/pars.fsy"
+//# 678 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let mModule, isRec, path, vis, attribs2 = _3
if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec())
@@ -3591,9 +3655,9 @@ let _fsyacc_reductions = lazy [|
let m = unionRanges mModule lid.Range
SynModuleSigDecl.ModuleAbbrev(List.head path, lid.LongIdent, m)
)
-//# 662 "src/Compiler/pars.fsy"
+//# 678 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3596 "pars.fs"
+//# 3660 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3603,7 +3667,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 676 "src/Compiler/pars.fsy"
+//# 692 "src/Compiler/pars.fsy"
let mModule, isRec, path, vis, attribs2 = _3
let xmlDoc = grabXmlDoc(parseState, _1, 1)
if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleDefnMustBeSimpleName())
@@ -3618,9 +3682,9 @@ let _fsyacc_reductions = lazy [|
let trivia: SynModuleSigDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = _4 }
SynModuleSigDecl.NestedModule(info, isRec, decls, m, trivia)
)
-//# 676 "src/Compiler/pars.fsy"
+//# 692 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3623 "pars.fs"
+//# 3687 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3628,7 +3692,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 691 "src/Compiler/pars.fsy"
+//# 707 "src/Compiler/pars.fsy"
let mModule, isRec, path, vis, attribs2 = _3
let xmlDoc = grabXmlDoc(parseState, _1, 1)
if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleDefnMustBeSimpleName())
@@ -3639,9 +3703,9 @@ let _fsyacc_reductions = lazy [|
let trivia: SynModuleSigDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = None }
SynModuleSigDecl.NestedModule(info, isRec, [], mWhole, trivia)
)
-//# 691 "src/Compiler/pars.fsy"
+//# 707 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3644 "pars.fs"
+//# 3708 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3651,7 +3715,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 702 "src/Compiler/pars.fsy"
+//# 718 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
let leadingKeyword = SynTypeDefnLeadingKeyword.Type(rhs parseState 3)
let (SynTypeDefnSig (SynComponentInfo (cas, a, cs, b, _xmlDoc, d, d2, d3), typeRepr, members, range, trivia)) = _4 leadingKeyword
@@ -3666,9 +3730,9 @@ let _fsyacc_reductions = lazy [|
let m = (mDefn, _5) ||> unionRangeWithListBy (fun (a: SynTypeDefnSig) -> a.Range) |> unionRanges (rhs parseState 3)
SynModuleSigDecl.Types(tc :: _5, m)
)
-//# 702 "src/Compiler/pars.fsy"
+//# 718 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3671 "pars.fs"
+//# 3735 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3676,7 +3740,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 717 "src/Compiler/pars.fsy"
+//# 733 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let (SynExceptionSig(SynExceptionDefnRepr(cas, a, b, c, d, d2), withKeyword, members, range)) = _3
let xmlDoc = grabXmlDoc(parseState, _1, 1)
@@ -3685,20 +3749,20 @@ let _fsyacc_reductions = lazy [|
let synExnDefn = SynExceptionSig(SynExceptionDefnRepr(_1@cas, a, b, xmlDoc, d, mDefnReprWithAttributes), withKeyword, members, mWhole)
SynModuleSigDecl.Exception(synExnDefn, mWhole)
)
-//# 717 "src/Compiler/pars.fsy"
+//# 733 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3690 "pars.fs"
+//# 3754 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_openDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 726 "src/Compiler/pars.fsy"
+//# 742 "src/Compiler/pars.fsy"
SynModuleSigDecl.Open _1
)
-//# 726 "src/Compiler/pars.fsy"
+//# 742 "src/Compiler/pars.fsy"
: 'gentype_moduleSpfn));
-//# 3701 "pars.fs"
+//# 3765 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -3713,9 +3777,10 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 730 "src/Compiler/pars.fsy"
+//# 746 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let attr1, attr2, isInline, isMutable, vis2, id, doc, explicitValTyparDecls, (ty, arity), (mEquals, konst: SynExpr option) = (_1), (_4), (Option.isSome _5), (Option.isSome _6), (_7), (_8), grabXmlDoc(parseState, _1, 1), (_9), (_11), (_12)
+ let vis2 = SynValSigAccess.Single(vis2)
if not (isNil attr2) then errorR(Deprecated(FSComp.SR.parsAttributesMustComeBeforeVal(), rhs parseState 4))
let m =
rhs2 parseState 1 11
@@ -3730,31 +3795,31 @@ let _fsyacc_reductions = lazy [|
SynModuleSigDecl.Val(valSpfn, m)
)
-//# 730 "src/Compiler/pars.fsy"
+//# 746 "src/Compiler/pars.fsy"
: 'gentype_valSpfn));
-//# 3735 "pars.fs"
+//# 3800 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 749 "src/Compiler/pars.fsy"
+//# 766 "src/Compiler/pars.fsy"
None, None
)
-//# 749 "src/Compiler/pars.fsy"
+//# 766 "src/Compiler/pars.fsy"
: 'gentype_optLiteralValueSpfn));
-//# 3745 "pars.fs"
+//# 3810 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 752 "src/Compiler/pars.fsy"
+//# 769 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 1
Some(mEquals), Some(_2)
)
-//# 752 "src/Compiler/pars.fsy"
+//# 769 "src/Compiler/pars.fsy"
: 'gentype_optLiteralValueSpfn));
-//# 3757 "pars.fs"
+//# 3822 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynExpr in
let _4 = parseState.GetInput(4) :?> 'gentype_oblockend in
@@ -3762,25 +3827,25 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 756 "src/Compiler/pars.fsy"
+//# 773 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 1
Some(mEquals), Some(_3)
)
-//# 756 "src/Compiler/pars.fsy"
+//# 773 "src/Compiler/pars.fsy"
: 'gentype_optLiteralValueSpfn));
-//# 3771 "pars.fs"
+//# 3836 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfns in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 765 "src/Compiler/pars.fsy"
+//# 782 "src/Compiler/pars.fsy"
_2, None
)
-//# 765 "src/Compiler/pars.fsy"
+//# 782 "src/Compiler/pars.fsy"
: 'gentype_moduleSpecBlock));
-//# 3783 "pars.fs"
+//# 3848 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_sigOrBegin in
let _3 = parseState.GetInput(3) :?> 'gentype_moduleSpfnsPossiblyEmpty in
@@ -3788,33 +3853,33 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 769 "src/Compiler/pars.fsy"
+//# 786 "src/Compiler/pars.fsy"
let mEnd = rhs parseState 4
_3, Some mEnd
)
-//# 769 "src/Compiler/pars.fsy"
+//# 786 "src/Compiler/pars.fsy"
: 'gentype_moduleSpecBlock));
-//# 3797 "pars.fs"
+//# 3862 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sigOrBegin in
let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfnsPossiblyEmpty in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 774 "src/Compiler/pars.fsy"
+//# 791 "src/Compiler/pars.fsy"
let mEnd = rhs parseState 3
_2, Some mEnd
)
-//# 774 "src/Compiler/pars.fsy"
+//# 791 "src/Compiler/pars.fsy"
: 'gentype_moduleSpecBlock));
-//# 3810 "pars.fs"
+//# 3875 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tyconSpfn in
let _3 = parseState.GetInput(3) :?> SynTypeDefnSig list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 780 "src/Compiler/pars.fsy"
+//# 797 "src/Compiler/pars.fsy"
let xmlDoc = grabXmlDoc(parseState, [], 1)
let tyconSpfn =
let leadingKeyword = SynTypeDefnLeadingKeyword.And(rhs parseState 1)
@@ -3831,40 +3896,40 @@ let _fsyacc_reductions = lazy [|
SynTypeDefnSig(componentInfo, typeRepr, members, range, trivia)
tyconSpfn :: _3
)
-//# 780 "src/Compiler/pars.fsy"
+//# 797 "src/Compiler/pars.fsy"
: SynTypeDefnSig list));
-//# 3836 "pars.fs"
+//# 3901 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 798 "src/Compiler/pars.fsy"
+//# 815 "src/Compiler/pars.fsy"
[]
)
-//# 798 "src/Compiler/pars.fsy"
+//# 815 "src/Compiler/pars.fsy"
: SynTypeDefnSig list));
-//# 3846 "pars.fs"
+//# 3911 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in
let _3 = parseState.GetInput(3) :?> 'gentype_tyconSpfnRhsBlock in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 804 "src/Compiler/pars.fsy"
+//# 821 "src/Compiler/pars.fsy"
let mLhs = rhs parseState 1
let mEquals = rhs parseState 2
fun leadingKeyword -> _3 leadingKeyword mLhs _1 (Some mEquals)
)
-//# 804 "src/Compiler/pars.fsy"
+//# 821 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfn));
-//# 3860 "pars.fs"
+//# 3925 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_classSpfn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 808 "src/Compiler/pars.fsy"
+//# 825 "src/Compiler/pars.fsy"
let mWithKwd, members = _2
let (SynComponentInfo(range = range)) = _1
let m =
@@ -3879,9 +3944,9 @@ let _fsyacc_reductions = lazy [|
let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = mWithKwd }
SynTypeDefnSig(_1, SynTypeDefnSigRepr.Simple(SynTypeDefnSimpleRepr.None m, m), members, m, trivia)
)
-//# 808 "src/Compiler/pars.fsy"
+//# 825 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfn));
-//# 3884 "pars.fs"
+//# 3949 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tyconSpfnRhs in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in
@@ -3892,51 +3957,51 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 834 "src/Compiler/pars.fsy"
+//# 851 "src/Compiler/pars.fsy"
let m = lhs parseState
(fun leadingKeyword mLhs nameInfo mEquals ->
let members = _4 @ (snd _5)
_2 leadingKeyword mLhs nameInfo mEquals (checkForMultipleAugmentations m members (snd _7)))
)
-//# 834 "src/Compiler/pars.fsy"
+//# 851 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfnRhsBlock));
-//# 3903 "pars.fs"
+//# 3968 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tyconSpfnRhs in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_classSpfn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 840 "src/Compiler/pars.fsy"
+//# 857 "src/Compiler/pars.fsy"
let m = lhs parseState
(fun leadingKeyword mLhs nameInfo mEquals ->
let _, members = _2
_1 leadingKeyword mLhs nameInfo mEquals members)
)
-//# 840 "src/Compiler/pars.fsy"
+//# 857 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfnRhsBlock));
-//# 3918 "pars.fs"
+//# 3983 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypeDefnSimpleRepr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 849 "src/Compiler/pars.fsy"
+//# 866 "src/Compiler/pars.fsy"
(fun leadingKeyword mLhs nameInfo mEquals augmentation ->
let declRange = unionRanges mLhs _1.Range
let mWhole = (declRange, augmentation) ||> unionRangeWithListBy (fun (mem: SynMemberSig) -> mem.Range)
let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; WithKeyword = None; EqualsRange = mEquals }
SynTypeDefnSig(nameInfo, SynTypeDefnSigRepr.Simple(_1, _1.Range), augmentation, mWhole, trivia))
)
-//# 849 "src/Compiler/pars.fsy"
+//# 866 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfnRhs));
-//# 3933 "pars.fs"
+//# 3998 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tyconClassSpfn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 856 "src/Compiler/pars.fsy"
+//# 873 "src/Compiler/pars.fsy"
let needsCheck, (kind, decls) = _1
let objectModelRange =
match decls with
@@ -3952,19 +4017,20 @@ let _fsyacc_reductions = lazy [|
let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; WithKeyword = None; EqualsRange = mEquals }
SynTypeDefnSig(nameInfo, SynTypeDefnSigRepr.ObjectModel(kind, decls, objectModelRange), augmentation, mWhole, trivia))
)
-//# 856 "src/Compiler/pars.fsy"
+//# 873 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfnRhs));
-//# 3957 "pars.fs"
+//# 4022 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_topType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 874 "src/Compiler/pars.fsy"
+//# 891 "src/Compiler/pars.fsy"
let m = lhs parseState
let ty, arity = _3
let flags = AbstractMemberFlags true SynMemberKind.Member
- let valSig = SynValSig([], (SynIdent(mkSynId m "Invoke", None)), inferredTyparDecls, ty, arity, false, false, PreXmlDoc.Empty, None, None, m, SynValSigTrivia.Zero)
+ let vis2 = SynValSigAccess.Single(None)
+ let valSig = SynValSig([], (SynIdent(mkSynId m "Invoke", None)), inferredTyparDecls, ty, arity, false, false, PreXmlDoc.Empty, vis2, None, m, SynValSigTrivia.Zero)
let invoke = SynMemberSig.Member(valSig, flags, m, SynMemberSigMemberTrivia.Zero)
(fun leadingKeyword nameRange nameInfo mEquals augmentation ->
if not (isNil augmentation) then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType())
@@ -3972,33 +4038,33 @@ let _fsyacc_reductions = lazy [|
let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; WithKeyword = None; EqualsRange = mEquals }
SynTypeDefnSig(nameInfo, SynTypeDefnSigRepr.ObjectModel(SynTypeDefnKind.Delegate(ty, arity), [invoke], m), [], mWhole, trivia))
)
-//# 874 "src/Compiler/pars.fsy"
+//# 891 "src/Compiler/pars.fsy"
: 'gentype_tyconSpfnRhs));
-//# 3977 "pars.fs"
+//# 4043 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnBlockKindUnspecified in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 889 "src/Compiler/pars.fsy"
+//# 908 "src/Compiler/pars.fsy"
let needsCheck, decls = _1
needsCheck, (SynTypeDefnKind.Unspecified, decls)
)
-//# 889 "src/Compiler/pars.fsy"
+//# 908 "src/Compiler/pars.fsy"
: 'gentype_tyconClassSpfn));
-//# 3989 "pars.fs"
+//# 4055 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 893 "src/Compiler/pars.fsy"
+//# 912 "src/Compiler/pars.fsy"
false, (_1, _2)
)
-//# 893 "src/Compiler/pars.fsy"
+//# 912 "src/Compiler/pars.fsy"
: 'gentype_tyconClassSpfn));
-//# 4001 "pars.fs"
+//# 4067 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in
@@ -4006,130 +4072,130 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 896 "src/Compiler/pars.fsy"
+//# 915 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct())
false, (_1, _2)
)
-//# 896 "src/Compiler/pars.fsy"
+//# 915 "src/Compiler/pars.fsy"
: 'gentype_tyconClassSpfn));
-//# 4015 "pars.fs"
+//# 4081 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 900 "src/Compiler/pars.fsy"
+//# 919 "src/Compiler/pars.fsy"
// silent recovery
false, (_1, [])
)
-//# 900 "src/Compiler/pars.fsy"
+//# 919 "src/Compiler/pars.fsy"
: 'gentype_tyconClassSpfn));
-//# 4027 "pars.fs"
+//# 4093 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 907 "src/Compiler/pars.fsy"
+//# 926 "src/Compiler/pars.fsy"
true, _2
)
-//# 907 "src/Compiler/pars.fsy"
+//# 926 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlockKindUnspecified));
-//# 4039 "pars.fs"
+//# 4105 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 910 "src/Compiler/pars.fsy"
+//# 929 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature())
false, _2
)
-//# 910 "src/Compiler/pars.fsy"
+//# 929 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlockKindUnspecified));
-//# 4052 "pars.fs"
+//# 4118 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 915 "src/Compiler/pars.fsy"
+//# 934 "src/Compiler/pars.fsy"
false, _2
)
-//# 915 "src/Compiler/pars.fsy"
+//# 934 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlockKindUnspecified));
-//# 4063 "pars.fs"
+//# 4129 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 918 "src/Compiler/pars.fsy"
+//# 937 "src/Compiler/pars.fsy"
false, _2
)
-//# 918 "src/Compiler/pars.fsy"
+//# 937 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlockKindUnspecified));
-//# 4075 "pars.fs"
+//# 4141 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 924 "src/Compiler/pars.fsy"
+//# 943 "src/Compiler/pars.fsy"
_2
)
-//# 924 "src/Compiler/pars.fsy"
+//# 943 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlock));
-//# 4087 "pars.fs"
+//# 4153 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 927 "src/Compiler/pars.fsy"
+//# 946 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature())
_2
)
-//# 927 "src/Compiler/pars.fsy"
+//# 946 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlock));
-//# 4100 "pars.fs"
+//# 4166 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnMembers in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 930 "src/Compiler/pars.fsy"
+//# 949 "src/Compiler/pars.fsy"
_1
)
-//# 930 "src/Compiler/pars.fsy"
+//# 949 "src/Compiler/pars.fsy"
: 'gentype_classSpfnBlock));
-//# 4111 "pars.fs"
+//# 4177 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnMembersAtLeastOne in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 935 "src/Compiler/pars.fsy"
+//# 954 "src/Compiler/pars.fsy"
_1
)
-//# 935 "src/Compiler/pars.fsy"
+//# 954 "src/Compiler/pars.fsy"
: 'gentype_classSpfnMembers));
-//# 4122 "pars.fs"
+//# 4188 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 938 "src/Compiler/pars.fsy"
+//# 957 "src/Compiler/pars.fsy"
[]
)
-//# 938 "src/Compiler/pars.fsy"
+//# 957 "src/Compiler/pars.fsy"
: 'gentype_classSpfnMembers));
-//# 4132 "pars.fs"
+//# 4198 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classMemberSpfn in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
@@ -4137,12 +4203,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 944 "src/Compiler/pars.fsy"
+//# 963 "src/Compiler/pars.fsy"
_1 :: _3
)
-//# 944 "src/Compiler/pars.fsy"
+//# 963 "src/Compiler/pars.fsy"
: 'gentype_classSpfnMembersAtLeastOne));
-//# 4145 "pars.fs"
+//# 4211 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4157,10 +4223,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 950 "src/Compiler/pars.fsy"
+//# 969 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let isInline, doc, vis2, id, explicitValTyparDecls, (ty, arity), (mEquals, optLiteralValue) = (Option.isSome _4), grabXmlDoc(parseState, _1, 1), _5, _6, _7, _9, _11
- let mWith, (getSet, getSetRangeOpt) = _10
+ let mWith, (getSet, getSetRangeOpt, getterAccess, setterAccess) = _10
+ let vis2 =
+ match getterAccess, setterAccess with
+ | None, None -> SynValSigAccess.Single(vis2)
+ | _ -> SynValSigAccess.GetSet(vis2, getterAccess, setterAccess)
let getSetAdjuster arity = match arity, getSet with SynValInfo([], _), SynMemberKind.Member -> SynMemberKind.PropertyGet | _ -> getSet
let mWhole =
let m = rhs parseState 3
@@ -4173,45 +4243,49 @@ let _fsyacc_reductions = lazy [|
match optLiteralValue with
| None -> m
| Some e -> unionRanges m e.Range
+
let flags, leadingKeyword = _3
+ if leadingKeywordIsAbstract leadingKeyword then
+ [ _2; _5; getterAccess; setterAccess ]
+ |> List.iter (function None -> () | Some access -> errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(), access.Range)))
let flags = flags (getSetAdjuster arity)
let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _4; WithKeyword = mWith; EqualsRange = mEquals }
let valSpfn = SynValSig(_1, id, explicitValTyparDecls, ty, arity, isInline, false, doc, vis2, optLiteralValue, mWhole, trivia)
let trivia: SynMemberSigMemberTrivia = { GetSetKeywords = getSetRangeOpt }
SynMemberSig.Member(valSpfn, flags, mWhole, trivia)
)
-//# 950 "src/Compiler/pars.fsy"
+//# 969 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4185 "pars.fs"
+//# 4259 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
let _3 = parseState.GetInput(3) :?> 'gentype_interfaceMember in
- let _4 = parseState.GetInput(4) :?> 'gentype_appType in
+ let _4 = parseState.GetInput(4) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 974 "src/Compiler/pars.fsy"
+//# 1002 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
SynMemberSig.Interface(_4, unionRanges (rhs parseState 3) (_4).Range)
)
-//# 974 "src/Compiler/pars.fsy"
+//# 1002 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4200 "pars.fs"
+//# 4274 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
- let _4 = parseState.GetInput(4) :?> 'gentype_appType in
+ let _4 = parseState.GetInput(4) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 978 "src/Compiler/pars.fsy"
+//# 1006 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
SynMemberSig.Inherit(_4, unionRanges (rhs parseState 1) _4.Range)
)
-//# 978 "src/Compiler/pars.fsy"
+//# 1006 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4214 "pars.fs"
+//# 4288 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4219,15 +4293,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 982 "src/Compiler/pars.fsy"
+//# 1010 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
let mInherit = rhs parseState 3
let ty = SynType.FromParseError(mInherit.EndRange)
SynMemberSig.Inherit(ty, unionRanges (rhs parseState 1) mInherit)
)
-//# 982 "src/Compiler/pars.fsy"
+//# 1010 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4230 "pars.fs"
+//# 4304 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4235,7 +4309,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 988 "src/Compiler/pars.fsy"
+//# 1016 "src/Compiler/pars.fsy"
if Option.isSome _2 then
errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
let mStart = rhs parseState 1
@@ -4244,9 +4318,9 @@ let _fsyacc_reductions = lazy [|
let (SynField(xmlDoc = xmlDoc; range = range)) as field = _4 _1 None mStart leadingKeyword
SynMemberSig.ValField(field, range)
)
-//# 988 "src/Compiler/pars.fsy"
+//# 1016 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4249 "pars.fs"
+//# 4323 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4254,7 +4328,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 997 "src/Compiler/pars.fsy"
+//# 1025 "src/Compiler/pars.fsy"
if Option.isSome _2 then
errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
let mStart = rhs parseState 1
@@ -4264,9 +4338,9 @@ let _fsyacc_reductions = lazy [|
let (SynField(xmlDoc = xmlDoc; range = range)) as field = _5 _1 (Some mStatic) mStart leadingKeyword
SynMemberSig.ValField(field, range)
)
-//# 997 "src/Compiler/pars.fsy"
+//# 1025 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4269 "pars.fs"
+//# 4343 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4275,14 +4349,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1007 "src/Compiler/pars.fsy"
+//# 1035 "src/Compiler/pars.fsy"
let leadingKeyword = SynTypeDefnLeadingKeyword.StaticType(rhs parseState 3, rhs parseState 4)
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
SynMemberSig.NestedType(_5 leadingKeyword, rhs2 parseState 1 5)
)
-//# 1007 "src/Compiler/pars.fsy"
+//# 1035 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4285 "pars.fs"
+//# 4359 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4290,245 +4364,250 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1012 "src/Compiler/pars.fsy"
+//# 1040 "src/Compiler/pars.fsy"
let vis, doc, (ty, valSynInfo) = _2, grabXmlDoc(parseState, _1, 1), _5
+ let vis2 = SynValSigAccess.Single(vis)
let mNew = rhs parseState 3
let m = unionRanges (rhs parseState 1) ty.Range |> unionRangeWithXmlDoc doc
let isInline = false
let trivia: SynValSigTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; WithKeyword = None; EqualsRange = None }
- let valSpfn = SynValSig (_1, (SynIdent(mkSynId (rhs parseState 3) "new", None)), noInferredTypars, ty, valSynInfo, isInline, false, doc, vis, None, m, trivia)
+ let valSpfn = SynValSig (_1, (SynIdent(mkSynId (rhs parseState 3) "new", None)), noInferredTypars, ty, valSynInfo, isInline, false, doc, vis2, None, m, trivia)
SynMemberSig.Member(valSpfn, CtorMemberFlags, m, SynMemberSigMemberTrivia.Zero)
)
-//# 1012 "src/Compiler/pars.fsy"
+//# 1040 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfn));
-//# 4304 "pars.fs"
+//# 4379 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1024 "src/Compiler/pars.fsy"
- None, (SynMemberKind.Member, None)
+//# 1053 "src/Compiler/pars.fsy"
+ None, (SynMemberKind.Member, None, None, None)
)
-//# 1024 "src/Compiler/pars.fsy"
+//# 1053 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSet));
-//# 4314 "pars.fs"
+//# 4389 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1027 "src/Compiler/pars.fsy"
+//# 1056 "src/Compiler/pars.fsy"
let mWith = rhs parseState 1
Some mWith, _2
)
-//# 1027 "src/Compiler/pars.fsy"
+//# 1056 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSet));
-//# 4326 "pars.fs"
+//# 4401 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1031 "src/Compiler/pars.fsy"
+//# 1060 "src/Compiler/pars.fsy"
let mWith = rhs parseState 1
Some mWith, _2
)
-//# 1031 "src/Compiler/pars.fsy"
+//# 1060 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSet));
-//# 4338 "pars.fs"
+//# 4413 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1035 "src/Compiler/pars.fsy"
+//# 1064 "src/Compiler/pars.fsy"
let mWith = rhs parseState 1
reportParseErrorAt mWith (FSComp.SR.parsUnmatchedWith())
Some mWith, _2
)
-//# 1035 "src/Compiler/pars.fsy"
+//# 1064 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSet));
-//# 4351 "pars.fs"
+//# 4426 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_nameop in
+ let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
+ let _2 = parseState.GetInput(2) :?> 'gentype_nameop in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1043 "src/Compiler/pars.fsy"
- (let (SynIdent(id:Ident, _)) = _1
+//# 1072 "src/Compiler/pars.fsy"
+ (let (SynIdent(id:Ident, _)) = _2
if id.idText = "get" then
- SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange)
+ SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange), _1, None
else if id.idText = "set" then
- SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange)
+ SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange), None, _1
else
raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired()))
)
-//# 1043 "src/Compiler/pars.fsy"
+//# 1072 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSetElements));
-//# 4368 "pars.fs"
+//# 4444 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_nameop in
- let _3 = parseState.GetInput(3) :?> 'gentype_nameop in
+ let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
+ let _2 = parseState.GetInput(2) :?> 'gentype_nameop in
+ let _4 = parseState.GetInput(4) :?> 'gentype_opt_access in
+ let _5 = parseState.GetInput(5) :?> 'gentype_nameop in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1052 "src/Compiler/pars.fsy"
- let (SynIdent(id, _)) = _1
- let (SynIdent(id2, _)) = _3
+//# 1081 "src/Compiler/pars.fsy"
+ let (SynIdent(id, _)) = _2
+ let (SynIdent(id2, _)) = _5
if not ((id.idText = "get" && id2.idText = "set") ||
(id.idText = "set" && id2.idText = "get")) then
raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired())
if id.idText = "get" then
- SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, id2.idRange))
+ SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, id2.idRange)), _1, _4
else
- SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange))
+ SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange)), _4, _1
)
-//# 1052 "src/Compiler/pars.fsy"
+//# 1081 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSetElements));
-//# 4388 "pars.fs"
+//# 4466 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_nameop in
- let _3 = parseState.GetInput(3) :?> 'gentype_recover in
+ let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
+ let _2 = parseState.GetInput(2) :?> 'gentype_nameop in
+ let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1064 "src/Compiler/pars.fsy"
- (let (SynIdent(id:Ident, _)) = _1
+//# 1093 "src/Compiler/pars.fsy"
+ (let (SynIdent(id:Ident, _)) = _2
if id.idText = "get" then
- SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange)
+ SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange), _1, None
else if id.idText = "set" then
- SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange)
+ SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange), None, _1
else
- raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired()))
+ raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsGetOrSetRequired()))
)
-//# 1064 "src/Compiler/pars.fsy"
+//# 1093 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSetElements));
-//# 4406 "pars.fs"
+//# 4485 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in
let _3 = parseState.GetInput(3) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1073 "src/Compiler/pars.fsy"
+//# 1102 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIdentifierExpected())
- SynMemberKind.Member, None
+ SynMemberKind.Member, None, None, None
)
-//# 1073 "src/Compiler/pars.fsy"
+//# 1102 "src/Compiler/pars.fsy"
: 'gentype_classMemberSpfnGetSetElements));
-//# 4419 "pars.fs"
+//# 4498 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_memberFlags in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1077 "src/Compiler/pars.fsy"
+//# 1106 "src/Compiler/pars.fsy"
_1
)
-//# 1077 "src/Compiler/pars.fsy"
+//# 1106 "src/Compiler/pars.fsy"
: 'gentype_memberSpecFlags));
-//# 4430 "pars.fs"
+//# 4509 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_abstractMemberFlags in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1078 "src/Compiler/pars.fsy"
+//# 1107 "src/Compiler/pars.fsy"
_1
)
-//# 1078 "src/Compiler/pars.fsy"
+//# 1107 "src/Compiler/pars.fsy"
: 'gentype_memberSpecFlags));
-//# 4441 "pars.fs"
+//# 4520 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExceptionDefnRepr in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_classSpfn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1084 "src/Compiler/pars.fsy"
+//# 1113 "src/Compiler/pars.fsy"
let mWithKwd, members = _2
SynExceptionSig(_1, mWithKwd, members, lhs parseState)
)
-//# 1084 "src/Compiler/pars.fsy"
+//# 1113 "src/Compiler/pars.fsy"
: 'gentype_exconSpfn));
-//# 4454 "pars.fs"
+//# 4533 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in
let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1091 "src/Compiler/pars.fsy"
+//# 1120 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
(Some mWithKwd), _2
)
-//# 1091 "src/Compiler/pars.fsy"
+//# 1120 "src/Compiler/pars.fsy"
: 'gentype_opt_classSpfn));
-//# 4467 "pars.fs"
+//# 4546 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1095 "src/Compiler/pars.fsy"
+//# 1124 "src/Compiler/pars.fsy"
None, []
)
-//# 1095 "src/Compiler/pars.fsy"
+//# 1124 "src/Compiler/pars.fsy"
: 'gentype_opt_classSpfn));
-//# 4477 "pars.fs"
+//# 4556 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpls in
let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1104 "src/Compiler/pars.fsy"
+//# 1133 "src/Compiler/pars.fsy"
checkEndOfFileError _2; _1
)
-//# 1104 "src/Compiler/pars.fsy"
+//# 1133 "src/Compiler/pars.fsy"
: ParsedImplFile));
-//# 4489 "pars.fs"
+//# 4568 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpls in
let _3 = parseState.GetInput(3) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1107 "src/Compiler/pars.fsy"
+//# 1136 "src/Compiler/pars.fsy"
_1
)
-//# 1107 "src/Compiler/pars.fsy"
+//# 1136 "src/Compiler/pars.fsy"
: ParsedImplFile));
-//# 4501 "pars.fs"
+//# 4580 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1113 "src/Compiler/pars.fsy"
+//# 1142 "src/Compiler/pars.fsy"
let emptyImplFileFrag = ParsedImplFileFragment.AnonModule([], rhs parseState 1)
ParsedImplFile ([], [emptyImplFileFrag])
)
-//# 1113 "src/Compiler/pars.fsy"
+//# 1142 "src/Compiler/pars.fsy"
: ParsedImplFile));
-//# 4513 "pars.fs"
+//# 4592 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleImpl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1120 "src/Compiler/pars.fsy"
+//# 1149 "src/Compiler/pars.fsy"
ParsedImplFile ([], [ (_1 (None, false, [], PreXmlDoc.Empty)) ])
)
-//# 1120 "src/Compiler/pars.fsy"
+//# 1149 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceImpls));
-//# 4524 "pars.fs"
+//# 4603 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleImpl in
let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceImplList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1123 "src/Compiler/pars.fsy"
+//# 1152 "src/Compiler/pars.fsy"
// If there are namespaces, the first fileModuleImpl may only contain # directives
let decls =
match (_1 (None, false, [], PreXmlDoc.Empty)) with
@@ -4544,32 +4623,32 @@ let _fsyacc_reductions = lazy [|
[])
ParsedImplFile (decls, _2)
)
-//# 1123 "src/Compiler/pars.fsy"
+//# 1152 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceImpls));
-//# 4549 "pars.fs"
+//# 4628 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpl in
let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceImplList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1142 "src/Compiler/pars.fsy"
+//# 1171 "src/Compiler/pars.fsy"
_1 :: _2
)
-//# 1142 "src/Compiler/pars.fsy"
+//# 1171 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceImplList));
-//# 4561 "pars.fs"
+//# 4640 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1145 "src/Compiler/pars.fsy"
+//# 1174 "src/Compiler/pars.fsy"
[_1]
)
-//# 1145 "src/Compiler/pars.fsy"
+//# 1174 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceImplList));
-//# 4572 "pars.fs"
+//# 4651 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_namespaceIntro in
let _2 = parseState.GetInput(2) :?> 'gentype_deprecated_opt_equals in
@@ -4577,13 +4656,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1151 "src/Compiler/pars.fsy"
+//# 1180 "src/Compiler/pars.fsy"
let mNamespace, isRec, path, xml = _1
_3 (Some mNamespace, isRec, path, xml)
)
-//# 1151 "src/Compiler/pars.fsy"
+//# 1180 "src/Compiler/pars.fsy"
: 'gentype_fileNamespaceImpl));
-//# 4586 "pars.fs"
+//# 4665 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4592,7 +4671,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1158 "src/Compiler/pars.fsy"
+//# 1187 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let m2 = rhs parseState 3
let mDeclsAndAttrs = (List.map (fun (a: SynAttributeList) -> a.Range) _1) @ (List.map (fun (d: SynModuleDecl) -> d.Range) _4)
@@ -4605,15 +4684,15 @@ let _fsyacc_reductions = lazy [|
let trivia: SynModuleOrNamespaceTrivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Module mModule }
ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid, (isRec || isRec2), SynModuleOrNamespaceKind.NamedModule, _4, xmlDoc, _1@attribs2, vis, m, trivia)))
)
-//# 1158 "src/Compiler/pars.fsy"
+//# 1187 "src/Compiler/pars.fsy"
: 'gentype_fileModuleImpl));
-//# 4610 "pars.fs"
+//# 4689 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynModuleDecl list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1171 "src/Compiler/pars.fsy"
+//# 1200 "src/Compiler/pars.fsy"
let m = (rhs parseState 1)
(fun (mNamespaceOpt, isRec, path, xml) ->
match path, mNamespaceOpt with
@@ -4628,9 +4707,9 @@ let _fsyacc_reductions = lazy [|
| Some mNamespace -> { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace }
ParsedImplFileFragment.NamespaceFragment(path, isRec, SynModuleOrNamespaceKind.DeclaredNamespace, _1, PreXmlDoc.Empty, [], m, trivia))
)
-//# 1171 "src/Compiler/pars.fsy"
+//# 1200 "src/Compiler/pars.fsy"
: 'gentype_fileModuleImpl));
-//# 4633 "pars.fs"
+//# 4712 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
@@ -4638,69 +4717,69 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1189 "src/Compiler/pars.fsy"
+//# 1218 "src/Compiler/pars.fsy"
_2
)
-//# 1189 "src/Compiler/pars.fsy"
+//# 1218 "src/Compiler/pars.fsy"
: SynModuleDecl list));
-//# 4646 "pars.fs"
+//# 4725 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1192 "src/Compiler/pars.fsy"
+//# 1221 "src/Compiler/pars.fsy"
// The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
// reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight())
_2
)
-//# 1192 "src/Compiler/pars.fsy"
+//# 1221 "src/Compiler/pars.fsy"
: SynModuleDecl list));
-//# 4660 "pars.fs"
+//# 4739 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1197 "src/Compiler/pars.fsy"
+//# 1226 "src/Compiler/pars.fsy"
[]
)
-//# 1197 "src/Compiler/pars.fsy"
+//# 1226 "src/Compiler/pars.fsy"
: SynModuleDecl list));
-//# 4671 "pars.fs"
+//# 4750 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1200 "src/Compiler/pars.fsy"
+//# 1229 "src/Compiler/pars.fsy"
_1
)
-//# 1200 "src/Compiler/pars.fsy"
+//# 1229 "src/Compiler/pars.fsy"
: SynModuleDecl list));
-//# 4682 "pars.fs"
+//# 4761 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnsOrExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1206 "src/Compiler/pars.fsy"
+//# 1235 "src/Compiler/pars.fsy"
_1
)
-//# 1206 "src/Compiler/pars.fsy"
+//# 1235 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExprPossiblyEmpty));
-//# 4693 "pars.fs"
+//# 4772 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1209 "src/Compiler/pars.fsy"
+//# 1238 "src/Compiler/pars.fsy"
[]
)
-//# 1209 "src/Compiler/pars.fsy"
+//# 1238 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExprPossiblyEmpty));
-//# 4703 "pars.fs"
+//# 4782 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4710,16 +4789,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1216 "src/Compiler/pars.fsy"
+//# 1245 "src/Compiler/pars.fsy"
match _2 with
| Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3))
| _ -> ()
let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else []
attrDecls @ mkSynExprDecl _3 :: _5
)
-//# 1216 "src/Compiler/pars.fsy"
+//# 1245 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExpr));
-//# 4722 "pars.fs"
+//# 4801 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4728,16 +4807,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1223 "src/Compiler/pars.fsy"
+//# 1252 "src/Compiler/pars.fsy"
match _2 with
| Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3))
| _ -> ()
let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else []
attrDecls @ [ mkSynExprDecl _3 ]
)
-//# 1223 "src/Compiler/pars.fsy"
+//# 1252 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExpr));
-//# 4740 "pars.fs"
+//# 4819 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4745,50 +4824,50 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1230 "src/Compiler/pars.fsy"
+//# 1259 "src/Compiler/pars.fsy"
match _2 with
| Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3))
| _ -> ()
let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else []
attrDecls @ [ mkSynExprDecl _3 ]
)
-//# 1230 "src/Compiler/pars.fsy"
+//# 1259 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExpr));
-//# 4757 "pars.fs"
+//# 4836 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1237 "src/Compiler/pars.fsy"
+//# 1266 "src/Compiler/pars.fsy"
_1
)
-//# 1237 "src/Compiler/pars.fsy"
+//# 1266 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExpr));
-//# 4768 "pars.fs"
+//# 4847 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1240 "src/Compiler/pars.fsy"
+//# 1269 "src/Compiler/pars.fsy"
if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else []
)
-//# 1240 "src/Compiler/pars.fsy"
+//# 1269 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnsOrExpr));
-//# 4779 "pars.fs"
+//# 4858 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1246 "src/Compiler/pars.fsy"
+//# 1275 "src/Compiler/pars.fsy"
_1 @ _2
)
-//# 1246 "src/Compiler/pars.fsy"
+//# 1275 "src/Compiler/pars.fsy"
: 'gentype_moduleDefns));
-//# 4791 "pars.fs"
+//# 4870 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in
let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in
@@ -4796,69 +4875,69 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1249 "src/Compiler/pars.fsy"
+//# 1278 "src/Compiler/pars.fsy"
_1 @ _3
)
-//# 1249 "src/Compiler/pars.fsy"
+//# 1278 "src/Compiler/pars.fsy"
: 'gentype_moduleDefns));
-//# 4804 "pars.fs"
+//# 4883 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1252 "src/Compiler/pars.fsy"
+//# 1281 "src/Compiler/pars.fsy"
_1
)
-//# 1252 "src/Compiler/pars.fsy"
+//# 1281 "src/Compiler/pars.fsy"
: 'gentype_moduleDefns));
-//# 4815 "pars.fs"
+//# 4894 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in
let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1255 "src/Compiler/pars.fsy"
+//# 1284 "src/Compiler/pars.fsy"
_1
)
-//# 1255 "src/Compiler/pars.fsy"
+//# 1284 "src/Compiler/pars.fsy"
: 'gentype_moduleDefns));
-//# 4827 "pars.fs"
+//# 4906 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in
let _3 = parseState.GetInput(3) :?> 'gentype_moduleDefnsOrExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1258 "src/Compiler/pars.fsy"
+//# 1287 "src/Compiler/pars.fsy"
_3
)
-//# 1258 "src/Compiler/pars.fsy"
+//# 1287 "src/Compiler/pars.fsy"
: 'gentype_moduleDefns));
-//# 4839 "pars.fs"
+//# 4918 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1264 "src/Compiler/pars.fsy"
+//# 1293 "src/Compiler/pars.fsy"
_1
)
-//# 1264 "src/Compiler/pars.fsy"
+//# 1293 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnOrDirective));
-//# 4850 "pars.fs"
+//# 4929 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1267 "src/Compiler/pars.fsy"
+//# 1296 "src/Compiler/pars.fsy"
[ SynModuleDecl.HashDirective(_1, rhs2 parseState 1 1) ]
)
-//# 1267 "src/Compiler/pars.fsy"
+//# 1296 "src/Compiler/pars.fsy"
: 'gentype_moduleDefnOrDirective));
-//# 4861 "pars.fs"
+//# 4940 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4866,15 +4945,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1276 "src/Compiler/pars.fsy"
+//# 1305 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
- parseState.ResetSynArgNameGenerator()
+ (getSynArgNameGenerator parseState.LexBuffer).Reset()
let (BindingSetPreAttrs(_, _, _, _, mWhole)) = _3
mkDefnBindings (mWhole, _3, _1, _2, mWhole)
)
-//# 1276 "src/Compiler/pars.fsy"
+//# 1305 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 4877 "pars.fs"
+//# 4956 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4882,15 +4961,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1283 "src/Compiler/pars.fsy"
+//# 1312 "src/Compiler/pars.fsy"
let hwlb, m, _ = _3
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
- parseState.ResetSynArgNameGenerator()
+ (getSynArgNameGenerator parseState.LexBuffer).Reset()
mkDefnBindings (m, hwlb, _1, _2, m)
)
-//# 1283 "src/Compiler/pars.fsy"
+//# 1312 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 4893 "pars.fs"
+//# 4972 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4898,14 +4977,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1290 "src/Compiler/pars.fsy"
+//# 1319 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let mWhole = rhs parseState 3
mkDefnBindings (mWhole, _3, _1, _2, mWhole)
)
-//# 1290 "src/Compiler/pars.fsy"
+//# 1319 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 4908 "pars.fs"
+//# 4987 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4915,7 +4994,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1296 "src/Compiler/pars.fsy"
+//# 1325 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let xmlDoc = grabXmlDoc(parseState, _1, 1)
let leadingKeyword = SynTypeDefnLeadingKeyword.Type(rhs parseState 3)
@@ -4927,9 +5006,9 @@ let _fsyacc_reductions = lazy [|
let types = tc :: _5
[ SynModuleDecl.Types(types, (rhs parseState 3, types) ||> unionRangeWithListBy (fun t -> t.Range)) ]
)
-//# 1296 "src/Compiler/pars.fsy"
+//# 1325 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 4932 "pars.fs"
+//# 5011 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4937,7 +5016,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1309 "src/Compiler/pars.fsy"
+//# 1338 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let (SynExceptionDefn(SynExceptionDefnRepr(cas, a, b, c, d, d2), withKeyword, e, f)) = _3
let xmlDoc = grabXmlDoc(parseState, _1, 1)
@@ -4946,9 +5025,9 @@ let _fsyacc_reductions = lazy [|
let synExnDefn = SynExceptionDefn(SynExceptionDefnRepr(_1@cas, a, b, xmlDoc, d, defnReprRange), withKeyword, e, mWhole)
[ SynModuleDecl.Exception(synExnDefn, mWhole) ]
)
-//# 1309 "src/Compiler/pars.fsy"
+//# 1338 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 4951 "pars.fs"
+//# 5030 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4957,7 +5036,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1319 "src/Compiler/pars.fsy"
+//# 1348 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let attribs, (mModule, isRec, path, vis, attribs2) = _1, _3
let xmlDoc = grabXmlDoc(parseState, _1, 1)
@@ -4984,9 +5063,9 @@ let _fsyacc_reductions = lazy [|
let m = match mEndOpt with | None -> m | Some mEnd -> unionRanges m mEnd
[ SynModuleDecl.NestedModule(info, isRec, def, false, m, trivia) ]
)
-//# 1319 "src/Compiler/pars.fsy"
+//# 1348 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 4989 "pars.fs"
+//# 5068 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -4994,7 +5073,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1347 "src/Compiler/pars.fsy"
+//# 1376 "src/Compiler/pars.fsy"
let xmlDoc = grabXmlDoc(parseState, _1, 1)
let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc
let attribs, (mModule, isRec, path, vis, attribs2) = _1, _3
@@ -5002,140 +5081,140 @@ let _fsyacc_reductions = lazy [|
let trivia: SynModuleDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = None }
[ SynModuleDecl.NestedModule(info, isRec, [], false, mWhole, trivia) ]
)
-//# 1347 "src/Compiler/pars.fsy"
+//# 1376 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 5007 "pars.fs"
+//# 5086 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1356 "src/Compiler/pars.fsy"
+//# 1385 "src/Compiler/pars.fsy"
errorR(Error(FSComp.SR.parsAttributeOnIncompleteCode(), rhs parseState 1))
[ SynModuleDecl.Attributes(_1, rhs parseState 1) ]
)
-//# 1356 "src/Compiler/pars.fsy"
+//# 1385 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 5020 "pars.fs"
+//# 5099 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_openDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1361 "src/Compiler/pars.fsy"
+//# 1390 "src/Compiler/pars.fsy"
[ SynModuleDecl.Open _1 ]
)
-//# 1361 "src/Compiler/pars.fsy"
+//# 1390 "src/Compiler/pars.fsy"
: 'gentype_moduleDefn));
-//# 5031 "pars.fs"
+//# 5110 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1365 "src/Compiler/pars.fsy"
+//# 1394 "src/Compiler/pars.fsy"
let mOpen = rhs parseState 1
let mPath = _2.Range
SynOpenDeclTarget.ModuleOrNamespace(_2, mPath), unionRanges mOpen mPath
)
-//# 1365 "src/Compiler/pars.fsy"
+//# 1394 "src/Compiler/pars.fsy"
: 'gentype_openDecl));
-//# 5044 "pars.fs"
+//# 5123 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1370 "src/Compiler/pars.fsy"
+//# 1399 "src/Compiler/pars.fsy"
let mOpen = rhs parseState 1
SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), mOpen.EndRange), mOpen
)
-//# 1370 "src/Compiler/pars.fsy"
+//# 1399 "src/Compiler/pars.fsy"
: 'gentype_openDecl));
-//# 5056 "pars.fs"
+//# 5135 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1374 "src/Compiler/pars.fsy"
+//# 1403 "src/Compiler/pars.fsy"
let mOpen = rhs parseState 1
let mPath = _3.Range
SynOpenDeclTarget.Type(_3, mPath), unionRanges mOpen mPath
)
-//# 1374 "src/Compiler/pars.fsy"
+//# 1403 "src/Compiler/pars.fsy"
: 'gentype_openDecl));
-//# 5070 "pars.fs"
+//# 5149 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1379 "src/Compiler/pars.fsy"
+//# 1408 "src/Compiler/pars.fsy"
let m = rhs2 parseState 1 2
SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), m.EndRange), m
)
-//# 1379 "src/Compiler/pars.fsy"
+//# 1408 "src/Compiler/pars.fsy"
: 'gentype_openDecl));
-//# 5083 "pars.fs"
+//# 5162 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynLongIdent in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1387 "src/Compiler/pars.fsy"
+//# 1416 "src/Compiler/pars.fsy"
_2
)
-//# 1387 "src/Compiler/pars.fsy"
+//# 1416 "src/Compiler/pars.fsy"
: 'gentype_namedModuleAbbrevBlock));
-//# 5095 "pars.fs"
+//# 5174 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1390 "src/Compiler/pars.fsy"
+//# 1419 "src/Compiler/pars.fsy"
_1
)
-//# 1390 "src/Compiler/pars.fsy"
+//# 1419 "src/Compiler/pars.fsy"
: 'gentype_namedModuleAbbrevBlock));
-//# 5106 "pars.fs"
+//# 5185 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_wrappedNamedModuleDefn in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1396 "src/Compiler/pars.fsy"
+//# 1425 "src/Compiler/pars.fsy"
Choice2Of2 _2
)
-//# 1396 "src/Compiler/pars.fsy"
+//# 1425 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5118 "pars.fs"
+//# 5197 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_wrappedNamedModuleDefn in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1399 "src/Compiler/pars.fsy"
+//# 1428 "src/Compiler/pars.fsy"
// The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
Choice2Of2 _2
)
-//# 1399 "src/Compiler/pars.fsy"
+//# 1428 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5131 "pars.fs"
+//# 5210 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1403 "src/Compiler/pars.fsy"
+//# 1432 "src/Compiler/pars.fsy"
// There is an ambiguity here
// In particular, consider the following two:
//
@@ -5146,9 +5225,9 @@ let _fsyacc_reductions = lazy [|
// The second is a module abbreviation, the first a module containing a single expression.
// The resolution is in favour of the module abbreviation, i.e. anything of the form
// module M2 = ID.ID.ID.ID
- // will be taken as a module abbreviation, regardles of the identifiers themselves.
+ // will be taken as a module abbreviation, regardless of the identifiers themselves.
//
- // This is similar to the ambiguitty between
+ // This is similar to the ambiguity between
// type X = int
// and
// type X = OneValue
@@ -5160,70 +5239,70 @@ let _fsyacc_reductions = lazy [|
Choice2Of2 (_2, None)
)
-//# 1403 "src/Compiler/pars.fsy"
+//# 1432 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5165 "pars.fs"
+//# 5244 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1429 "src/Compiler/pars.fsy"
+//# 1458 "src/Compiler/pars.fsy"
// The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
// reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight())
Choice2Of2 (_2, None)
)
-//# 1429 "src/Compiler/pars.fsy"
+//# 1458 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5179 "pars.fs"
+//# 5258 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1434 "src/Compiler/pars.fsy"
+//# 1463 "src/Compiler/pars.fsy"
let mEnd = rhs parseState 3
Choice2Of2 ([], Some mEnd)
)
-//# 1434 "src/Compiler/pars.fsy"
+//# 1463 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5191 "pars.fs"
+//# 5270 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_wrappedNamedModuleDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1438 "src/Compiler/pars.fsy"
+//# 1467 "src/Compiler/pars.fsy"
Choice2Of2 _1
)
-//# 1438 "src/Compiler/pars.fsy"
+//# 1467 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5202 "pars.fs"
+//# 5281 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1441 "src/Compiler/pars.fsy"
+//# 1470 "src/Compiler/pars.fsy"
Choice1Of2 _1.LongIdent
)
-//# 1441 "src/Compiler/pars.fsy"
+//# 1470 "src/Compiler/pars.fsy"
: 'gentype_namedModuleDefnBlock));
-//# 5213 "pars.fs"
+//# 5292 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1447 "src/Compiler/pars.fsy"
+//# 1476 "src/Compiler/pars.fsy"
let mEnd = rhs parseState 3
_2, Some mEnd
)
-//# 1447 "src/Compiler/pars.fsy"
+//# 1476 "src/Compiler/pars.fsy"
: 'gentype_wrappedNamedModuleDefn));
-//# 5226 "pars.fs"
+//# 5305 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in
let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in
@@ -5231,82 +5310,82 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1451 "src/Compiler/pars.fsy"
+//# 1480 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBeginOrStruct())
_2, None
)
-//# 1451 "src/Compiler/pars.fsy"
+//# 1480 "src/Compiler/pars.fsy"
: 'gentype_wrappedNamedModuleDefn));
-//# 5240 "pars.fs"
+//# 5319 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1455 "src/Compiler/pars.fsy"
+//# 1484 "src/Compiler/pars.fsy"
let mEnd = rhs parseState 3
[], Some mEnd
)
-//# 1455 "src/Compiler/pars.fsy"
+//# 1484 "src/Compiler/pars.fsy"
: 'gentype_wrappedNamedModuleDefn));
-//# 5252 "pars.fs"
+//# 5331 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in
let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1461 "src/Compiler/pars.fsy"
+//# 1490 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
mWithKwd, _2
)
-//# 1461 "src/Compiler/pars.fsy"
+//# 1490 "src/Compiler/pars.fsy"
: range * SynMemberDefns));
-//# 5265 "pars.fs"
+//# 5344 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1468 "src/Compiler/pars.fsy"
+//# 1497 "src/Compiler/pars.fsy"
_1
)
-//# 1468 "src/Compiler/pars.fsy"
+//# 1497 "src/Compiler/pars.fsy"
: 'gentype_opt_attributes));
-//# 5276 "pars.fs"
+//# 5355 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1471 "src/Compiler/pars.fsy"
+//# 1500 "src/Compiler/pars.fsy"
[]
)
-//# 1471 "src/Compiler/pars.fsy"
+//# 1500 "src/Compiler/pars.fsy"
: 'gentype_opt_attributes));
-//# 5286 "pars.fs"
+//# 5365 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributeList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1476 "src/Compiler/pars.fsy"
+//# 1505 "src/Compiler/pars.fsy"
_1
)
-//# 1476 "src/Compiler/pars.fsy"
+//# 1505 "src/Compiler/pars.fsy"
: 'gentype_attributes));
-//# 5297 "pars.fs"
+//# 5376 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributeList in
let _2 = parseState.GetInput(2) :?> 'gentype_attributes in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1479 "src/Compiler/pars.fsy"
+//# 1508 "src/Compiler/pars.fsy"
_1 @ _2
)
-//# 1479 "src/Compiler/pars.fsy"
+//# 1508 "src/Compiler/pars.fsy"
: 'gentype_attributes));
-//# 5309 "pars.fs"
+//# 5388 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_attributeListElements in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_seps in
@@ -5314,23 +5393,23 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1485 "src/Compiler/pars.fsy"
+//# 1514 "src/Compiler/pars.fsy"
mkAttributeList _2 (rhs2 parseState 1 4)
)
-//# 1485 "src/Compiler/pars.fsy"
+//# 1514 "src/Compiler/pars.fsy"
: 'gentype_attributeList));
-//# 5322 "pars.fs"
+//# 5401 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1488 "src/Compiler/pars.fsy"
+//# 1517 "src/Compiler/pars.fsy"
mkAttributeList [] (rhs2 parseState 1 3)
)
-//# 1488 "src/Compiler/pars.fsy"
+//# 1517 "src/Compiler/pars.fsy"
: 'gentype_attributeList));
-//# 5333 "pars.fs"
+//# 5412 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_attributeListElements in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_seps in
@@ -5338,36 +5417,36 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1491 "src/Compiler/pars.fsy"
+//# 1520 "src/Compiler/pars.fsy"
if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess())
mkAttributeList _2 (rhs2 parseState 1 2)
)
-//# 1491 "src/Compiler/pars.fsy"
+//# 1520 "src/Compiler/pars.fsy"
: 'gentype_attributeList));
-//# 5347 "pars.fs"
+//# 5426 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1495 "src/Compiler/pars.fsy"
+//# 1524 "src/Compiler/pars.fsy"
if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess())
mkAttributeList [] (rhs parseState 1)
)
-//# 1495 "src/Compiler/pars.fsy"
+//# 1524 "src/Compiler/pars.fsy"
: 'gentype_attributeList));
-//# 5359 "pars.fs"
+//# 5438 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attribute in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1502 "src/Compiler/pars.fsy"
+//# 1531 "src/Compiler/pars.fsy"
[_1]
)
-//# 1502 "src/Compiler/pars.fsy"
+//# 1531 "src/Compiler/pars.fsy"
: 'gentype_attributeListElements));
-//# 5370 "pars.fs"
+//# 5449 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributeListElements in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -5375,12 +5454,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1505 "src/Compiler/pars.fsy"
+//# 1534 "src/Compiler/pars.fsy"
_1 @ [_3]
)
-//# 1505 "src/Compiler/pars.fsy"
+//# 1534 "src/Compiler/pars.fsy"
: 'gentype_attributeListElements));
-//# 5383 "pars.fs"
+//# 5462 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -5388,14 +5467,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1512 "src/Compiler/pars.fsy"
+//# 1541 "src/Compiler/pars.fsy"
let arg = match _3 with None -> mkSynUnit _1.Range | Some e -> e
let m = unionRanges _1.Range arg.Range
({ TypeName = _1; ArgExpr = arg; Target = None; AppliesToGetterAndSetter = false; Range = m }: SynAttribute)
)
-//# 1512 "src/Compiler/pars.fsy"
+//# 1541 "src/Compiler/pars.fsy"
: 'gentype_attribute));
-//# 5398 "pars.fs"
+//# 5477 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributeTarget in
let _2 = parseState.GetInput(2) :?> SynLongIdent in
@@ -5404,15 +5483,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1518 "src/Compiler/pars.fsy"
+//# 1547 "src/Compiler/pars.fsy"
let arg = match _4 with None -> mkSynUnit _2.Range | Some e -> e
let startRange = match _1 with Some(ident:Ident) -> ident.idRange | None -> _2.Range
let m = unionRanges startRange arg.Range
({ TypeName = _2; ArgExpr = arg; Target = _1; AppliesToGetterAndSetter = false; Range = m }: SynAttribute)
)
-//# 1518 "src/Compiler/pars.fsy"
+//# 1547 "src/Compiler/pars.fsy"
: 'gentype_attribute));
-//# 5415 "pars.fs"
+//# 5494 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributeTarget in
let _3 = parseState.GetInput(3) :?> SynLongIdent in
@@ -5422,117 +5501,117 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1525 "src/Compiler/pars.fsy"
+//# 1554 "src/Compiler/pars.fsy"
let arg = match _6 with None -> mkSynUnit _3.Range | Some e -> e
let startRange = match _1 with Some ident -> ident.idRange | None -> _3.Range
let m = unionRanges startRange arg.Range
({ TypeName = _3; ArgExpr = arg; Target = _1; AppliesToGetterAndSetter = false; Range = m }: SynAttribute)
)
-//# 1525 "src/Compiler/pars.fsy"
+//# 1554 "src/Compiler/pars.fsy"
: 'gentype_attribute));
-//# 5433 "pars.fs"
+//# 5512 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1534 "src/Compiler/pars.fsy"
+//# 1563 "src/Compiler/pars.fsy"
Some(ident("module", (rhs parseState 1)))
)
-//# 1534 "src/Compiler/pars.fsy"
+//# 1563 "src/Compiler/pars.fsy"
: 'gentype_attributeTarget));
-//# 5444 "pars.fs"
+//# 5523 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeKeyword in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1537 "src/Compiler/pars.fsy"
+//# 1566 "src/Compiler/pars.fsy"
Some(ident("type", (rhs parseState 1)))
)
-//# 1537 "src/Compiler/pars.fsy"
+//# 1566 "src/Compiler/pars.fsy"
: 'gentype_attributeTarget));
-//# 5455 "pars.fs"
+//# 5534 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1539 "src/Compiler/pars.fsy"
+//# 1568 "src/Compiler/pars.fsy"
Some(_1)
)
-//# 1539 "src/Compiler/pars.fsy"
+//# 1568 "src/Compiler/pars.fsy"
: 'gentype_attributeTarget));
-//# 5466 "pars.fs"
+//# 5545 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1543 "src/Compiler/pars.fsy"
+//# 1572 "src/Compiler/pars.fsy"
if _1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSyntaxError())
Some(ident("return", (rhs parseState 1)))
)
-//# 1543 "src/Compiler/pars.fsy"
+//# 1572 "src/Compiler/pars.fsy"
: 'gentype_attributeTarget));
-//# 5478 "pars.fs"
+//# 5557 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1549 "src/Compiler/pars.fsy"
+//# 1578 "src/Compiler/pars.fsy"
let mStatic = rhs parseState 1
let mMember = rhs parseState 2
StaticMemberFlags, SynLeadingKeyword.StaticMember(mStatic, mMember)
)
-//# 1549 "src/Compiler/pars.fsy"
+//# 1578 "src/Compiler/pars.fsy"
: 'gentype_memberFlags));
-//# 5490 "pars.fs"
+//# 5569 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1554 "src/Compiler/pars.fsy"
+//# 1583 "src/Compiler/pars.fsy"
let mStatic = rhs parseState 1
// todo: it should be possible to make it work better for both `abstract` and `member` in the type checker
StaticMemberFlags, SynLeadingKeyword.Static(mStatic)
)
-//# 1554 "src/Compiler/pars.fsy"
+//# 1583 "src/Compiler/pars.fsy"
: 'gentype_memberFlags));
-//# 5502 "pars.fs"
+//# 5581 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1559 "src/Compiler/pars.fsy"
+//# 1588 "src/Compiler/pars.fsy"
let mMember = rhs parseState 1
NonVirtualMemberFlags, SynLeadingKeyword.Member mMember
)
-//# 1559 "src/Compiler/pars.fsy"
+//# 1588 "src/Compiler/pars.fsy"
: 'gentype_memberFlags));
-//# 5513 "pars.fs"
+//# 5592 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1563 "src/Compiler/pars.fsy"
+//# 1592 "src/Compiler/pars.fsy"
let mOverride = rhs parseState 1
OverrideMemberFlags, SynLeadingKeyword.Override mOverride
)
-//# 1563 "src/Compiler/pars.fsy"
+//# 1592 "src/Compiler/pars.fsy"
: 'gentype_memberFlags));
-//# 5524 "pars.fs"
+//# 5603 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1567 "src/Compiler/pars.fsy"
+//# 1596 "src/Compiler/pars.fsy"
let mDefault = rhs parseState 1
OverrideMemberFlags, SynLeadingKeyword.Default mDefault
)
-//# 1567 "src/Compiler/pars.fsy"
+//# 1596 "src/Compiler/pars.fsy"
: 'gentype_memberFlags));
-//# 5535 "pars.fs"
+//# 5614 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_tyconNameAndTyparDecls in
@@ -5540,22 +5619,22 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1573 "src/Compiler/pars.fsy"
+//# 1602 "src/Compiler/pars.fsy"
let typars, lid, fixity, vis = _2
let xmlDoc = grabXmlDoc(parseState, _1, 1)
let m = match lid with [] -> rhs parseState 2 | _ -> rangeOfLid lid
SynComponentInfo (_1, typars, _3, lid, xmlDoc, fixity, vis, m)
)
-//# 1573 "src/Compiler/pars.fsy"
+//# 1602 "src/Compiler/pars.fsy"
: 'gentype_typeNameInfo));
-//# 5551 "pars.fs"
+//# 5630 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tyconDefn in
let _3 = parseState.GetInput(3) :?> 'gentype_tyconDefnList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1581 "src/Compiler/pars.fsy"
+//# 1610 "src/Compiler/pars.fsy"
let xmlDoc = grabXmlDoc(parseState, [], 1)
let tyconDefn =
let leadingKeyword = SynTypeDefnLeadingKeyword.And(rhs parseState 1)
@@ -5572,48 +5651,48 @@ let _fsyacc_reductions = lazy [|
SynTypeDefn(componentInfo, typeRepr, members, implicitConstructor, range, trivia)
tyconDefn :: _3
)
-//# 1581 "src/Compiler/pars.fsy"
+//# 1610 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnList));
-//# 5577 "pars.fs"
+//# 5656 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1598 "src/Compiler/pars.fsy"
+//# 1627 "src/Compiler/pars.fsy"
[]
)
-//# 1598 "src/Compiler/pars.fsy"
+//# 1627 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnList));
-//# 5587 "pars.fs"
+//# 5666 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1603 "src/Compiler/pars.fsy"
+//# 1632 "src/Compiler/pars.fsy"
fun leadingKeyword ->
let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = None }
SynTypeDefn(_1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(_1.Range), _1.Range), [], None, _1.Range, trivia)
)
-//# 1603 "src/Compiler/pars.fsy"
+//# 1632 "src/Compiler/pars.fsy"
: 'gentype_tyconDefn));
-//# 5600 "pars.fs"
+//# 5679 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in
let _2 = parseState.GetInput(2) :?> range * SynMemberDefns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1608 "src/Compiler/pars.fsy"
+//# 1637 "src/Compiler/pars.fsy"
let mWithKwd, classDefns = _2
let m = (rhs parseState 1, classDefns) ||> unionRangeWithListBy (fun mem -> mem.Range)
fun leadingKeyword ->
let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = None }
SynTypeDefn(_1, SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Augmentation mWithKwd, [], m), classDefns, None, m, trivia)
)
-//# 1608 "src/Compiler/pars.fsy"
+//# 1637 "src/Compiler/pars.fsy"
: 'gentype_tyconDefn));
-//# 5616 "pars.fs"
+//# 5695 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
@@ -5625,8 +5704,8 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1615 "src/Compiler/pars.fsy"
- let vis, spats, az = _3, _5, _6
+//# 1644 "src/Compiler/pars.fsy"
+ let vis, pat, az = _3, _5, _6
let nameRange = rhs parseState 1
let (tcDefRepr, mWith, members) = _8 nameRange
let (SynComponentInfo(_, _, _, lid, _, _, _, _)) = _1
@@ -5635,8 +5714,8 @@ let _fsyacc_reductions = lazy [|
let xmlDoc = grabXmlDoc (parseState, _2, 2)
let m = match lid with [] -> rhs parseState 1 | _ -> rangeOfLid lid
let memberCtorPattern =
- spats |> Option.map (fun spats ->
- SynMemberDefn.ImplicitCtor(vis, _2, spats, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az })
+ pat |> Option.map (fun pat ->
+ SynMemberDefn.ImplicitCtor(vis, _2, pat, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az })
)
let tcDefRepr =
match tcDefRepr, memberCtorPattern with
@@ -5665,9 +5744,9 @@ let _fsyacc_reductions = lazy [|
let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = Some mEquals; WithKeyword = mWith }
SynTypeDefn(_1, tcDefRepr, members, memberCtorPattern, mWhole, trivia)
)
-//# 1615 "src/Compiler/pars.fsy"
+//# 1644 "src/Compiler/pars.fsy"
: 'gentype_tyconDefn));
-//# 5670 "pars.fs"
+//# 5749 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
@@ -5679,17 +5758,17 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1666 "src/Compiler/pars.fsy"
- let vis, spats, az = _3, _5, _6
+//# 1689 "src/Compiler/pars.fsy"
+ let vis, pat, az = _3, _5, _6
let (SynComponentInfo(longId = lid)) = _1
// Gets the XML doc comments prior to the implicit constructor
let xmlDoc = grabXmlDoc (parseState, _2, 2)
let m = match lid with [] -> rhs parseState 1 | _ -> rangeOfLid lid
let mName = _1.Range
let members, mWhole =
- match spats, vis, az with
- | Some spats, _, _ ->
- let memberCtorPattern = SynMemberDefn.ImplicitCtor(vis, _2, spats, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az })
+ match pat, vis, az with
+ | Some pat, _, _ ->
+ let memberCtorPattern = SynMemberDefn.ImplicitCtor(vis, _2, pat, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az })
[memberCtorPattern], unionRanges mName memberCtorPattern.Range
| _, _, Some(mAs, asId) ->
let mAs =
@@ -5707,9 +5786,9 @@ let _fsyacc_reductions = lazy [|
let trivia = { SynTypeDefnTrivia.Zero with LeadingKeyword = leadingKeyword }
SynTypeDefn(_1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(mName), mName), members, None, mWhole, trivia)
)
-//# 1666 "src/Compiler/pars.fsy"
+//# 1689 "src/Compiler/pars.fsy"
: 'gentype_tyconDefn));
-//# 5712 "pars.fs"
+//# 5791 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tyconDefnRhs in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in
@@ -5720,7 +5799,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1710 "src/Compiler/pars.fsy"
+//# 1728 "src/Compiler/pars.fsy"
let mWith, optClassDefn = _5
let mWith2, optClassDefn2 = _7
let m = unionRanges (rhs parseState 1) (match optClassDefn2 with [] -> (match optClassDefn with [] -> (rhs parseState 4) | _ -> (rhs parseState 5)) | _ -> (rhs parseState 7))
@@ -5729,9 +5808,9 @@ let _fsyacc_reductions = lazy [|
let mWith = Option.orElse mWith2 mWith
tcDefRepr, mWith, members)
)
-//# 1710 "src/Compiler/pars.fsy"
+//# 1728 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhsBlock));
-//# 5734 "pars.fs"
+//# 5813 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tyconDefnRhs in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in
@@ -5741,7 +5820,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1719 "src/Compiler/pars.fsy"
+//# 1737 "src/Compiler/pars.fsy"
if not _6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition())
let mWith, optClassDefn = _5
let m = unionRanges (rhs parseState 1) (match optClassDefn with [] -> (rhs parseState 4) | _ -> (rhs parseState 5))
@@ -5749,55 +5828,55 @@ let _fsyacc_reductions = lazy [|
let tcDefRepr, members = _2 nameRange (checkForMultipleAugmentations m (_4 @ optClassDefn) [])
tcDefRepr, mWith, members)
)
-//# 1719 "src/Compiler/pars.fsy"
+//# 1737 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhsBlock));
-//# 5754 "pars.fs"
+//# 5833 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1727 "src/Compiler/pars.fsy"
+//# 1745 "src/Compiler/pars.fsy"
fun mName ->
SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None mName, mName), None, []
)
-//# 1727 "src/Compiler/pars.fsy"
+//# 1745 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhsBlock));
-//# 5766 "pars.fs"
+//# 5845 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tyconDefnRhs in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_classDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1731 "src/Compiler/pars.fsy"
+//# 1749 "src/Compiler/pars.fsy"
let m = rhs parseState 1
let mWith, optClassDefn = _2
(fun nameRange ->
let tcDefRepr, members = _1 nameRange optClassDefn
tcDefRepr, mWith, members)
)
-//# 1731 "src/Compiler/pars.fsy"
+//# 1749 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhsBlock));
-//# 5782 "pars.fs"
+//# 5861 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypeDefnSimpleRepr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1743 "src/Compiler/pars.fsy"
+//# 1761 "src/Compiler/pars.fsy"
let m = _1.Range
(fun nameRange augmentation -> SynTypeDefnRepr.Simple(_1, m), augmentation)
)
-//# 1743 "src/Compiler/pars.fsy"
+//# 1761 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhs));
-//# 5794 "pars.fs"
+//# 5873 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tyconClassDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1748 "src/Compiler/pars.fsy"
+//# 1766 "src/Compiler/pars.fsy"
let needsCheck, (kind, decls), mopt = _1
let m = match mopt with
| None -> (lhs parseState).StartRange // create a zero-width range
@@ -5807,51 +5886,52 @@ let _fsyacc_reductions = lazy [|
reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition())
SynTypeDefnRepr.ObjectModel(kind, decls, m), augmentation)
)
-//# 1748 "src/Compiler/pars.fsy"
+//# 1766 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhs));
-//# 5812 "pars.fs"
+//# 5891 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_topType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1759 "src/Compiler/pars.fsy"
+//# 1777 "src/Compiler/pars.fsy"
let m = lhs parseState
let ty, arity = _3
(fun nameRange augmentation ->
- let valSig = SynValSig([], (SynIdent(mkSynId m "Invoke", None)), inferredTyparDecls, ty, arity, false, false, PreXmlDoc.Empty, None, None, m, SynValSigTrivia.Zero)
+ let vis2 = SynValSigAccess.Single(None)
+ let valSig = SynValSig([], (SynIdent(mkSynId m "Invoke", None)), inferredTyparDecls, ty, arity, false, false, PreXmlDoc.Empty, vis2, None, m, SynValSigTrivia.Zero)
let flags = AbstractMemberFlags true SynMemberKind.Member
let invoke = SynMemberDefn.AbstractSlot(valSig, flags, m, SynMemberDefnAbstractSlotTrivia.Zero)
if not (isNil augmentation) then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType())
SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Delegate(ty, arity), [invoke], m), [])
)
-//# 1759 "src/Compiler/pars.fsy"
+//# 1777 "src/Compiler/pars.fsy"
: 'gentype_tyconDefnRhs));
-//# 5830 "pars.fs"
+//# 5910 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classDefnBlockKindUnspecified in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1772 "src/Compiler/pars.fsy"
+//# 1791 "src/Compiler/pars.fsy"
let needsCheck, decls, mopt = _1
needsCheck, (SynTypeDefnKind.Unspecified, decls), mopt
)
-//# 1772 "src/Compiler/pars.fsy"
+//# 1791 "src/Compiler/pars.fsy"
: 'gentype_tyconClassDefn));
-//# 5842 "pars.fs"
+//# 5922 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1776 "src/Compiler/pars.fsy"
+//# 1795 "src/Compiler/pars.fsy"
false, (_1, _2), Some(rhs2 parseState 1 3)
)
-//# 1776 "src/Compiler/pars.fsy"
+//# 1795 "src/Compiler/pars.fsy"
: 'gentype_tyconClassDefn));
-//# 5854 "pars.fs"
+//# 5934 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in
@@ -5859,33 +5939,33 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1779 "src/Compiler/pars.fsy"
+//# 1798 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct())
let m = (rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range)
false, (_1, _2), Some(m)
)
-//# 1779 "src/Compiler/pars.fsy"
+//# 1798 "src/Compiler/pars.fsy"
: 'gentype_tyconClassDefn));
-//# 5869 "pars.fs"
+//# 5949 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1784 "src/Compiler/pars.fsy"
+//# 1803 "src/Compiler/pars.fsy"
// silent recovery
false, (_1, []), Some(rhs2 parseState 1 3)
)
-//# 1784 "src/Compiler/pars.fsy"
+//# 1803 "src/Compiler/pars.fsy"
: 'gentype_tyconClassDefn));
-//# 5881 "pars.fs"
+//# 5961 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembersAtLeastOne in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1791 "src/Compiler/pars.fsy"
+//# 1810 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition())
let mopt =
match _2 with
@@ -5893,93 +5973,93 @@ let _fsyacc_reductions = lazy [|
| _ -> None
false, _2, mopt
)
-//# 1791 "src/Compiler/pars.fsy"
+//# 1810 "src/Compiler/pars.fsy"
: 'gentype_classDefnBlockKindUnspecified));
-//# 5898 "pars.fs"
+//# 5978 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembersAtLeastOne in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1799 "src/Compiler/pars.fsy"
+//# 1818 "src/Compiler/pars.fsy"
let mopt =
match _2 with
| _ :: _ -> Some((rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range))
| _ -> None
true, _2, mopt
)
-//# 1799 "src/Compiler/pars.fsy"
+//# 1818 "src/Compiler/pars.fsy"
: 'gentype_classDefnBlockKindUnspecified));
-//# 5914 "pars.fs"
+//# 5994 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1809 "src/Compiler/pars.fsy"
+//# 1828 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition())
_2
)
-//# 1809 "src/Compiler/pars.fsy"
+//# 1828 "src/Compiler/pars.fsy"
: 'gentype_classDefnBlock));
-//# 5927 "pars.fs"
+//# 6007 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1813 "src/Compiler/pars.fsy"
+//# 1832 "src/Compiler/pars.fsy"
_2
)
-//# 1813 "src/Compiler/pars.fsy"
+//# 1832 "src/Compiler/pars.fsy"
: 'gentype_classDefnBlock));
-//# 5939 "pars.fs"
+//# 6019 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMembers in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1816 "src/Compiler/pars.fsy"
+//# 1835 "src/Compiler/pars.fsy"
_1
)
-//# 1816 "src/Compiler/pars.fsy"
+//# 1835 "src/Compiler/pars.fsy"
: 'gentype_classDefnBlock));
-//# 5950 "pars.fs"
+//# 6030 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMembersAtLeastOne in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1822 "src/Compiler/pars.fsy"
+//# 1841 "src/Compiler/pars.fsy"
_1
)
-//# 1822 "src/Compiler/pars.fsy"
+//# 1841 "src/Compiler/pars.fsy"
: 'gentype_classDefnMembers));
-//# 5961 "pars.fs"
+//# 6041 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1826 "src/Compiler/pars.fsy"
+//# 1845 "src/Compiler/pars.fsy"
_2
)
-//# 1826 "src/Compiler/pars.fsy"
+//# 1845 "src/Compiler/pars.fsy"
: 'gentype_classDefnMembers));
-//# 5972 "pars.fs"
+//# 6052 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1829 "src/Compiler/pars.fsy"
+//# 1848 "src/Compiler/pars.fsy"
[]
)
-//# 1829 "src/Compiler/pars.fsy"
+//# 1848 "src/Compiler/pars.fsy"
: 'gentype_classDefnMembers));
-//# 5982 "pars.fs"
+//# 6062 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMember in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
@@ -5987,7 +6067,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1835 "src/Compiler/pars.fsy"
+//# 1854 "src/Compiler/pars.fsy"
match _1, _3 with
| [ SynMemberDefn.Interface(members=Some []; range=m) ], nextMember :: _ ->
let strictIndentation = parseState.LexBuffer.SupportsFeature LanguageFeature.StrictIndentation
@@ -5996,70 +6076,70 @@ let _fsyacc_reductions = lazy [|
| _ -> ()
_1 @ _3
)
-//# 1835 "src/Compiler/pars.fsy"
+//# 1854 "src/Compiler/pars.fsy"
: 'gentype_classDefnMembersAtLeastOne));
-//# 6001 "pars.fs"
+//# 6081 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1847 "src/Compiler/pars.fsy"
+//# 1866 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
mWithKwd, _2
)
-//# 1847 "src/Compiler/pars.fsy"
+//# 1866 "src/Compiler/pars.fsy"
: 'gentype_classDefnMemberGetSet));
-//# 6013 "pars.fs"
+//# 6093 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1851 "src/Compiler/pars.fsy"
+//# 1870 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
mWithKwd, _2
)
-//# 1851 "src/Compiler/pars.fsy"
+//# 1870 "src/Compiler/pars.fsy"
: 'gentype_classDefnMemberGetSet));
-//# 6025 "pars.fs"
+//# 6105 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1855 "src/Compiler/pars.fsy"
+//# 1874 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith())
mWithKwd, _2
)
-//# 1855 "src/Compiler/pars.fsy"
+//# 1874 "src/Compiler/pars.fsy"
: 'gentype_classDefnMemberGetSet));
-//# 6038 "pars.fs"
+//# 6118 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMemberGetSetElement in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1862 "src/Compiler/pars.fsy"
+//# 1881 "src/Compiler/pars.fsy"
[_1], None
)
-//# 1862 "src/Compiler/pars.fsy"
+//# 1881 "src/Compiler/pars.fsy"
: 'gentype_classDefnMemberGetSetElements));
-//# 6049 "pars.fs"
+//# 6129 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMemberGetSetElement in
let _3 = parseState.GetInput(3) :?> 'gentype_classDefnMemberGetSetElement in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1865 "src/Compiler/pars.fsy"
+//# 1884 "src/Compiler/pars.fsy"
let mAnd = rhs parseState 2
[_1;_3], Some mAnd
)
-//# 1865 "src/Compiler/pars.fsy"
+//# 1884 "src/Compiler/pars.fsy"
: 'gentype_classDefnMemberGetSetElements));
-//# 6062 "pars.fs"
+//# 6142 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
@@ -6069,14 +6149,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1870 "src/Compiler/pars.fsy"
+//# 1889 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 5
let mRhs = (_6: SynExpr).Range
(_1, _2, _3, _4, Some mEquals, _6, mRhs)
)
-//# 1870 "src/Compiler/pars.fsy"
+//# 1889 "src/Compiler/pars.fsy"
: 'gentype_classDefnMemberGetSetElement));
-//# 6079 "pars.fs"
+//# 6159 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in
@@ -6085,7 +6165,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1879 "src/Compiler/pars.fsy"
+//# 1898 "src/Compiler/pars.fsy"
let mRhs = _5.Range
let optReturnType = _3
let mEquals = rhs parseState 4
@@ -6100,9 +6180,9 @@ let _fsyacc_reductions = lazy [|
let memberRange = unionRanges rangeStart mRhs |> unionRangeWithXmlDoc xmlDoc
[ SynMemberDefn.Member(binding, memberRange) ])
)
-//# 1879 "src/Compiler/pars.fsy"
+//# 1898 "src/Compiler/pars.fsy"
: 'gentype_memberCore));
-//# 6105 "pars.fs"
+//# 6185 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in
@@ -6110,7 +6190,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1894 "src/Compiler/pars.fsy"
+//# 1913 "src/Compiler/pars.fsy"
let optReturnType = _3
let bindingPat, mBindLhs = _2
let mEnd =
@@ -6129,18 +6209,18 @@ let _fsyacc_reductions = lazy [|
let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc
[ SynMemberDefn.Member (binding, memberRange) ]
)
-//# 1894 "src/Compiler/pars.fsy"
+//# 1913 "src/Compiler/pars.fsy"
: 'gentype_memberCore));
-//# 6134 "pars.fs"
+//# 6214 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_topReturnTypeWithTypeConstraints in
- let _4 = parseState.GetInput(4) :?> 'gentype_recover in
+ let _4 = parseState.GetInput(4) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1914 "src/Compiler/pars.fsy"
+//# 1933 "src/Compiler/pars.fsy"
let optReturnType = _3
let bindingPat, mBindLhs = _2
let mEnd =
@@ -6148,6 +6228,7 @@ let _fsyacc_reductions = lazy [|
| Some(_, ty) -> ty.Range.EndRange
| _ -> bindingPat.Range.EndRange
let expr = arbExpr ("memberCore2", mEnd)
+ errorR (Error(FSComp.SR.parsMissingMemberBody(), rhs parseState 4))
fun vis flagsBuilderAndLeadingKeyword attrs rangeStart ->
let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, rangeStart)
let memFlagsBuilder, leadingKeyword = flagsBuilderAndLeadingKeyword
@@ -6158,9 +6239,9 @@ let _fsyacc_reductions = lazy [|
let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc
[ SynMemberDefn.Member (binding, memberRange) ]
)
-//# 1914 "src/Compiler/pars.fsy"
+//# 1933 "src/Compiler/pars.fsy"
: 'gentype_memberCore));
-//# 6163 "pars.fs"
+//# 6244 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in
@@ -6169,7 +6250,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1934 "src/Compiler/pars.fsy"
+//# 1954 "src/Compiler/pars.fsy"
let mWith, (classDefnMemberGetSetElements, mAnd) = _4
let mWhole = (rhs parseState 2, classDefnMemberGetSetElements) ||> unionRangeWithListBy (fun (_, _, _, _, _, _, m2) -> m2)
let propertyNameBindingPat, _ = _2
@@ -6184,37 +6265,37 @@ let _fsyacc_reductions = lazy [|
propertyNameBindingPat
optPropertyType
)
-//# 1934 "src/Compiler/pars.fsy"
+//# 1954 "src/Compiler/pars.fsy"
: 'gentype_memberCore));
-//# 6189 "pars.fs"
+//# 6270 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1951 "src/Compiler/pars.fsy"
+//# 1971 "src/Compiler/pars.fsy"
let mAbstract = rhs parseState 1
AbstractMemberFlags true, SynLeadingKeyword.Abstract mAbstract
)
-//# 1951 "src/Compiler/pars.fsy"
+//# 1971 "src/Compiler/pars.fsy"
: 'gentype_abstractMemberFlags));
-//# 6200 "pars.fs"
+//# 6281 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1955 "src/Compiler/pars.fsy"
+//# 1975 "src/Compiler/pars.fsy"
let mAbstract = rhs parseState 1
let mMember = rhs parseState 2
AbstractMemberFlags true, SynLeadingKeyword.AbstractMember(mAbstract, mMember)
)
-//# 1955 "src/Compiler/pars.fsy"
+//# 1975 "src/Compiler/pars.fsy"
: 'gentype_abstractMemberFlags));
-//# 6212 "pars.fs"
+//# 6293 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1960 "src/Compiler/pars.fsy"
+//# 1980 "src/Compiler/pars.fsy"
let mWhole = rhs2 parseState 1 2
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.InterfacesWithAbstractStaticMembers mWhole
if parseState.LexBuffer.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers then
@@ -6223,14 +6304,14 @@ let _fsyacc_reductions = lazy [|
let mAbstract = rhs parseState 2
AbstractMemberFlags false, SynLeadingKeyword.StaticAbstract(mStatic, mAbstract)
)
-//# 1960 "src/Compiler/pars.fsy"
+//# 1980 "src/Compiler/pars.fsy"
: 'gentype_abstractMemberFlags));
-//# 6228 "pars.fs"
+//# 6309 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1969 "src/Compiler/pars.fsy"
+//# 1989 "src/Compiler/pars.fsy"
let mWhole = rhs2 parseState 1 2
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.InterfacesWithAbstractStaticMembers mWhole
if parseState.LexBuffer.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers then
@@ -6240,9 +6321,9 @@ let _fsyacc_reductions = lazy [|
let mMember = rhs parseState 3
AbstractMemberFlags false, SynLeadingKeyword.StaticAbstractMember(mStatic, mAbstract, mMember)
)
-//# 1969 "src/Compiler/pars.fsy"
+//# 1989 "src/Compiler/pars.fsy"
: 'gentype_abstractMemberFlags));
-//# 6245 "pars.fs"
+//# 6326 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6250,13 +6331,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1981 "src/Compiler/pars.fsy"
+//# 2001 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
[mkClassMemberLocalBindings(false, None, _1, _2, _3)]
)
-//# 1981 "src/Compiler/pars.fsy"
+//# 2001 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6259 "pars.fs"
+//# 6340 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6264,13 +6345,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1985 "src/Compiler/pars.fsy"
+//# 2005 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
[mkClassMemberLocalBindings(true, Some(rhs parseState 3), _1, _2, _4)]
)
-//# 1985 "src/Compiler/pars.fsy"
+//# 2005 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6273 "pars.fs"
+//# 6354 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6280,7 +6361,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1989 "src/Compiler/pars.fsy"
+//# 2009 "src/Compiler/pars.fsy"
let rangeStart = rhs parseState 1
if Option.isSome _2 then
errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
@@ -6290,9 +6371,9 @@ let _fsyacc_reductions = lazy [|
| _ -> ()
_4 _2 flags _1 rangeStart
)
-//# 1989 "src/Compiler/pars.fsy"
+//# 2009 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6295 "pars.fs"
+//# 6376 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6301,7 +6382,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 1999 "src/Compiler/pars.fsy"
+//# 2019 "src/Compiler/pars.fsy"
let rangeStart = rhs parseState 1
if Option.isSome _2 then
errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
@@ -6320,19 +6401,19 @@ let _fsyacc_reductions = lazy [|
(_2, (Option.isSome _2), false, mWhole, DebugPointAtBinding.NoneAtInvisible, None, expr, mEnd, [], _1, flags, trivia)
[SynMemberDefn.Member(binding, mWhole)]
)
-//# 1999 "src/Compiler/pars.fsy"
+//# 2019 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6325 "pars.fs"
+//# 6406 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
let _3 = parseState.GetInput(3) :?> 'gentype_interfaceMember in
- let _4 = parseState.GetInput(4) :?> 'gentype_appType in
+ let _4 = parseState.GetInput(4) :?> 'gentype_appTypeWithoutNull in
let _5 = parseState.GetInput(5) :?> 'gentype_opt_interfaceImplDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2019 "src/Compiler/pars.fsy"
+//# 2039 "src/Compiler/pars.fsy"
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(), rhs parseState 1))
if Option.isSome _2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(), rhs parseState 3))
let mWithKwd, members, mWhole =
@@ -6341,9 +6422,9 @@ let _fsyacc_reductions = lazy [|
| Some(mWithKwd, members, m) -> Some mWithKwd, Some members, unionRanges (rhs2 parseState 1 4) m
[ SynMemberDefn.Interface(_4, mWithKwd, members, mWhole) ]
)
-//# 2019 "src/Compiler/pars.fsy"
+//# 2039 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6346 "pars.fs"
+//# 6427 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6352,33 +6433,35 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2028 "src/Compiler/pars.fsy"
+//# 2048 "src/Compiler/pars.fsy"
let mInterface = rhs parseState 3
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(), rhs parseState 1))
if Option.isSome _2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(), mInterface))
let ty = SynType.FromParseError(mInterface.EndRange)
[ SynMemberDefn.Interface(ty, None, None, rhs2 parseState 1 3) ]
)
-//# 2028 "src/Compiler/pars.fsy"
+//# 2048 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6364 "pars.fs"
+//# 6445 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
let _3 = parseState.GetInput(3) :?> 'gentype_abstractMemberFlags in
- let _4 = parseState.GetInput(4) :?> 'gentype_opt_inline in
- let _5 = parseState.GetInput(5) :?> 'gentype_nameop in
- let _6 = parseState.GetInput(6) :?> 'gentype_opt_explicitValTyparDecls in
- let _8 = parseState.GetInput(8) :?> 'gentype_topTypeWithTypeConstraints in
- let _9 = parseState.GetInput(9) :?> 'gentype_classMemberSpfnGetSet in
- let _10 = parseState.GetInput(10) :?> 'gentype_opt_ODECLEND in
+ let _4 = parseState.GetInput(4) :?> 'gentype_opt_access in
+ let _5 = parseState.GetInput(5) :?> 'gentype_opt_inline in
+ let _6 = parseState.GetInput(6) :?> 'gentype_nameop in
+ let _7 = parseState.GetInput(7) :?> 'gentype_opt_explicitValTyparDecls in
+ let _9 = parseState.GetInput(9) :?> 'gentype_topTypeWithTypeConstraints in
+ let _10 = parseState.GetInput(10) :?> 'gentype_classMemberSpfnGetSet in
+ let _11 = parseState.GetInput(11) :?> 'gentype_opt_ODECLEND in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2035 "src/Compiler/pars.fsy"
- let ty, arity = _8
- let isInline, doc, id, explicitValTyparDecls = (Option.isSome _4), grabXmlDoc(parseState, _1, 1), _5, _6
- let mWith, (getSet, getSetRangeOpt) = _9
+//# 2055 "src/Compiler/pars.fsy"
+ if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
+ let ty, arity = _9
+ let isInline, doc, id, explicitValTyparDecls = (Option.isSome _5), grabXmlDoc(parseState, _1, 1), _6, _7
+ let mWith, (getSet, getSetRangeOpt, getterAccess, setterAccess) = _10
let getSetAdjuster arity = match arity, getSet with SynValInfo([], _), SynMemberKind.Member -> SynMemberKind.PropertyGet | _ -> getSet
let mWhole =
let m = rhs parseState 1
@@ -6386,16 +6469,18 @@ let _fsyacc_reductions = lazy [|
| None -> unionRanges m ty.Range
| Some gs -> unionRanges m gs.Range
|> unionRangeWithXmlDoc doc
- if Option.isSome _2 then errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(), mWhole))
+ [ _2; _4; getterAccess; setterAccess ]
+ |> List.iter (function None -> () | Some access -> errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(), access.Range)))
let mkFlags, leadingKeyword = _3
- let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _4; WithKeyword = mWith; EqualsRange = None }
- let valSpfn = SynValSig(_1, id, explicitValTyparDecls, ty, arity, isInline, false, doc, None, None, mWhole, trivia)
+ let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _5; WithKeyword = mWith; EqualsRange = None }
+ let vis2 = SynValSigAccess.Single(None)
+ let valSpfn = SynValSig(_1, id, explicitValTyparDecls, ty, arity, isInline, false, doc, vis2, None, mWhole, trivia)
let trivia: SynMemberDefnAbstractSlotTrivia = { GetSetKeywords = getSetRangeOpt }
[ SynMemberDefn.AbstractSlot(valSpfn, mkFlags (getSetAdjuster arity), mWhole, trivia) ]
)
-//# 2035 "src/Compiler/pars.fsy"
+//# 2055 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6398 "pars.fs"
+//# 6483 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6403,14 +6488,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2053 "src/Compiler/pars.fsy"
+//# 2078 "src/Compiler/pars.fsy"
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalOnInherit(), rhs parseState 1))
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityIllegalOnInherit(), rhs parseState 1))
[ _3 ]
)
-//# 2053 "src/Compiler/pars.fsy"
+//# 2078 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6413 "pars.fs"
+//# 6498 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6419,14 +6504,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2058 "src/Compiler/pars.fsy"
+//# 2083 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let rangeStart = rhs parseState 1
_3 rangeStart _1 None
)
-//# 2058 "src/Compiler/pars.fsy"
+//# 2083 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6429 "pars.fs"
+//# 6514 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6435,15 +6520,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2063 "src/Compiler/pars.fsy"
+//# 2088 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let mStatic = rhs parseState 3
let rangeStart = rhs parseState 1
_4 rangeStart _1 (Some mStatic)
)
-//# 2063 "src/Compiler/pars.fsy"
+//# 2088 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6446 "pars.fs"
+//# 6531 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6453,16 +6538,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2069 "src/Compiler/pars.fsy"
+//# 2094 "src/Compiler/pars.fsy"
let rangeStart = rhs parseState 1
if Option.isSome _2 then
errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let flags = _3
_4 _1 flags rangeStart
)
-//# 2069 "src/Compiler/pars.fsy"
+//# 2094 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6465 "pars.fs"
+//# 6550 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6473,7 +6558,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2076 "src/Compiler/pars.fsy"
+//# 2101 "src/Compiler/pars.fsy"
let mWholeBindLhs = rhs2 parseState 1 (if Option.isSome _5 then 5 else 4)
let mNew = rhs parseState 3
let xmlDoc = grabXmlDoc(parseState, _1, 1)
@@ -6488,9 +6573,9 @@ let _fsyacc_reductions = lazy [|
let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = Some mEquals }
[ SynMemberDefn.Member(SynBinding (None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ]
)
-//# 2076 "src/Compiler/pars.fsy"
+//# 2101 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6493 "pars.fs"
+//# 6578 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6500,7 +6585,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2091 "src/Compiler/pars.fsy"
+//# 2116 "src/Compiler/pars.fsy"
if not _6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsMissingMemberBody ())
let mNew = rhs parseState 3
let mAs = _5 |> Option.map (fun (mAs, id) -> id |> Option.map (fun id -> id.idRange) |> Option.defaultValue mAs)
@@ -6514,9 +6599,9 @@ let _fsyacc_reductions = lazy [|
let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None }
[ SynMemberDefn.Member(SynBinding(None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ]
)
-//# 2091 "src/Compiler/pars.fsy"
+//# 2116 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6519 "pars.fs"
+//# 6604 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6525,7 +6610,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2105 "src/Compiler/pars.fsy"
+//# 2130 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsMissingMemberBody ())
let mNew = rhs parseState 3
let mAs = _5 |> Option.map (fun (mAs, id) -> id |> Option.map (fun id -> id.idRange) |> Option.defaultValue mAs)
@@ -6539,9 +6624,9 @@ let _fsyacc_reductions = lazy [|
let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None }
[ SynMemberDefn.Member(SynBinding (None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ]
)
-//# 2105 "src/Compiler/pars.fsy"
+//# 2130 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6544 "pars.fs"
+//# 6629 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6550,7 +6635,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2119 "src/Compiler/pars.fsy"
+//# 2144 "src/Compiler/pars.fsy"
let m = rhs2 parseState 1 3
let mNew = rhs parseState 3
let xmlDoc = grabXmlDoc (parseState, _1, 1)
@@ -6562,9 +6647,9 @@ let _fsyacc_reductions = lazy [|
let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None }
[ SynMemberDefn.Member(SynBinding(None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ]
)
-//# 2119 "src/Compiler/pars.fsy"
+//# 2144 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6567 "pars.fs"
+//# 6652 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -6573,14 +6658,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2131 "src/Compiler/pars.fsy"
+//# 2156 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let leadingKeyword = SynTypeDefnLeadingKeyword.StaticType(rhs parseState 3, rhs parseState 4)
[ SynMemberDefn.NestedType(_5 leadingKeyword, None, rhs2 parseState 1 5) ]
)
-//# 2131 "src/Compiler/pars.fsy"
+//# 2156 "src/Compiler/pars.fsy"
: 'gentype_classDefnMember));
-//# 6583 "pars.fs"
+//# 6668 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6589,14 +6674,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2139 "src/Compiler/pars.fsy"
+//# 2164 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
fun rangeStart attribs mStaticOpt ->
[ mkValField parseState mVal _2 _3 (Some _4) (Some _6) rangeStart attribs mStaticOpt ]
)
-//# 2139 "src/Compiler/pars.fsy"
+//# 2164 "src/Compiler/pars.fsy"
: 'gentype_valDefnDecl));
-//# 6599 "pars.fs"
+//# 6684 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6605,16 +6690,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2144 "src/Compiler/pars.fsy"
+//# 2169 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
let mColon = rhs parseState 5
let ty = SynType.FromParseError(mColon.EndRange)
fun rangeStart attribs mStaticOpt ->
[ mkValField parseState mVal _2 _3 (Some _4) (Some ty) rangeStart attribs mStaticOpt ]
)
-//# 2144 "src/Compiler/pars.fsy"
+//# 2169 "src/Compiler/pars.fsy"
: 'gentype_valDefnDecl));
-//# 6617 "pars.fs"
+//# 6702 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6623,15 +6708,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2151 "src/Compiler/pars.fsy"
+//# 2176 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
let ty = SynType.FromParseError(_4.idRange.EndRange)
fun rangeStart attribs mStaticOpt ->
[ mkValField parseState mVal _2 _3 (Some _4) (Some ty) rangeStart attribs mStaticOpt ]
)
-//# 2151 "src/Compiler/pars.fsy"
+//# 2176 "src/Compiler/pars.fsy"
: 'gentype_valDefnDecl));
-//# 6634 "pars.fs"
+//# 6719 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6639,14 +6724,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2157 "src/Compiler/pars.fsy"
+//# 2182 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
fun rangeStart attribs mStaticOpt ->
[ mkValField parseState mVal _2 _3 None None rangeStart attribs mStaticOpt ]
)
-//# 2157 "src/Compiler/pars.fsy"
+//# 2182 "src/Compiler/pars.fsy"
: 'gentype_valDefnDecl));
-//# 6649 "pars.fs"
+//# 6734 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6657,7 +6742,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2165 "src/Compiler/pars.fsy"
+//# 2190 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
let mEquals = rhs parseState 6
if Option.isSome _2 then
@@ -6666,9 +6751,9 @@ let _fsyacc_reductions = lazy [|
let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
[ mkAutoPropDefn mVal _3 _4 _5 (Some mEquals) _7 _8 xmlDoc attribs flags rangeStart ]
)
-//# 2165 "src/Compiler/pars.fsy"
+//# 2190 "src/Compiler/pars.fsy"
: 'gentype_autoPropsDefnDecl));
-//# 6671 "pars.fs"
+//# 6756 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6678,7 +6763,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2174 "src/Compiler/pars.fsy"
+//# 2199 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
let mEnd =
match _5 with
@@ -6689,11 +6774,11 @@ let _fsyacc_reductions = lazy [|
errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
fun attribs flags rangeStart ->
let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
- [ mkAutoPropDefn mVal _3 _4 _5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ]
+ [ mkAutoPropDefn mVal _3 _4 _5 None expr (None, (SynMemberKind.Member, None, None, None)) xmlDoc attribs flags rangeStart ]
)
-//# 2174 "src/Compiler/pars.fsy"
+//# 2199 "src/Compiler/pars.fsy"
: 'gentype_autoPropsDefnDecl));
-//# 6696 "pars.fs"
+//# 6781 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6702,7 +6787,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2187 "src/Compiler/pars.fsy"
+//# 2212 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
let mEnd =
match _5 with
@@ -6713,11 +6798,11 @@ let _fsyacc_reductions = lazy [|
errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
fun attribs flags rangeStart ->
let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
- [ mkAutoPropDefn mVal _3 _4 _5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ]
+ [ mkAutoPropDefn mVal _3 _4 _5 None expr (None, (SynMemberKind.Member, None, None, None)) xmlDoc attribs flags rangeStart ]
)
-//# 2187 "src/Compiler/pars.fsy"
+//# 2212 "src/Compiler/pars.fsy"
: 'gentype_autoPropsDefnDecl));
-//# 6720 "pars.fs"
+//# 6805 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -6725,7 +6810,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2200 "src/Compiler/pars.fsy"
+//# 2225 "src/Compiler/pars.fsy"
let mVal = rhs parseState 1
let id = mkSynId mVal.EndRange ""
let expr = arbExpr ("autoProp3", mVal.EndRange)
@@ -6733,238 +6818,239 @@ let _fsyacc_reductions = lazy [|
errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
fun attribs flags rangeStart ->
let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart)
- [ mkAutoPropDefn mVal _3 id None None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ]
+ [ mkAutoPropDefn mVal _3 id None None expr (None, (SynMemberKind.Member, None, None, None)) xmlDoc attribs flags rangeStart ]
)
-//# 2200 "src/Compiler/pars.fsy"
+//# 2225 "src/Compiler/pars.fsy"
: 'gentype_autoPropsDefnDecl));
-//# 6740 "pars.fs"
+//# 6825 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2212 "src/Compiler/pars.fsy"
+//# 2237 "src/Compiler/pars.fsy"
None
)
-//# 2212 "src/Compiler/pars.fsy"
+//# 2237 "src/Compiler/pars.fsy"
: 'gentype_opt_typ));
-//# 6750 "pars.fs"
+//# 6835 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2215 "src/Compiler/pars.fsy"
+//# 2240 "src/Compiler/pars.fsy"
Some _2
)
-//# 2215 "src/Compiler/pars.fsy"
+//# 2240 "src/Compiler/pars.fsy"
: 'gentype_opt_typ));
-//# 6761 "pars.fs"
+//# 6846 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2218 "src/Compiler/pars.fsy"
+//# 2243 "src/Compiler/pars.fsy"
let mColon = rhs parseState 1
let ty = SynType.FromParseError(mColon.EndRange)
Some ty
)
-//# 2218 "src/Compiler/pars.fsy"
+//# 2243 "src/Compiler/pars.fsy"
: 'gentype_opt_typ));
-//# 6774 "pars.fs"
+//# 6859 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2225 "src/Compiler/pars.fsy"
+//# 2250 "src/Compiler/pars.fsy"
if not (parseState.LexBuffer.SupportsFeature LanguageFeature.SingleUnderscorePattern) then
raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedSymbolDot())
let underscore = ident("_", rhs parseState 1)
let mDot = rhs parseState 2
None, prependIdentInLongIdentWithTrivia (SynIdent(underscore, None)) mDot _3
)
-//# 2225 "src/Compiler/pars.fsy"
+//# 2250 "src/Compiler/pars.fsy"
: 'gentype_atomicPatternLongIdent));
-//# 6789 "pars.fs"
+//# 6874 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2233 "src/Compiler/pars.fsy"
+//# 2258 "src/Compiler/pars.fsy"
let globalIdent = ident(MangledGlobalName, rhs parseState 1)
let mDot = rhs parseState 2
None, prependIdentInLongIdentWithTrivia (SynIdent(globalIdent, (Some(IdentTrivia.OriginalNotation "global")))) mDot _3
)
-//# 2233 "src/Compiler/pars.fsy"
+//# 2258 "src/Compiler/pars.fsy"
: 'gentype_atomicPatternLongIdent));
-//# 6802 "pars.fs"
+//# 6887 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2238 "src/Compiler/pars.fsy"
+//# 2263 "src/Compiler/pars.fsy"
(None, _1)
)
-//# 2238 "src/Compiler/pars.fsy"
+//# 2263 "src/Compiler/pars.fsy"
: 'gentype_atomicPatternLongIdent));
-//# 6813 "pars.fs"
+//# 6898 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_access in
let _4 = parseState.GetInput(4) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2241 "src/Compiler/pars.fsy"
+//# 2266 "src/Compiler/pars.fsy"
if not (parseState.LexBuffer.SupportsFeature LanguageFeature.SingleUnderscorePattern) then
raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedSymbolDot())
let underscore = ident("_", rhs parseState 2)
let mDot = rhs parseState 3
Some(_1), prependIdentInLongIdentWithTrivia (SynIdent(underscore, None)) mDot _4
)
-//# 2241 "src/Compiler/pars.fsy"
+//# 2266 "src/Compiler/pars.fsy"
: 'gentype_atomicPatternLongIdent));
-//# 6829 "pars.fs"
+//# 6914 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_access in
let _2 = parseState.GetInput(2) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2249 "src/Compiler/pars.fsy"
+//# 2274 "src/Compiler/pars.fsy"
(Some(_1), _2)
)
-//# 2249 "src/Compiler/pars.fsy"
+//# 2274 "src/Compiler/pars.fsy"
: 'gentype_atomicPatternLongIdent));
-//# 6841 "pars.fs"
+//# 6926 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2254 "src/Compiler/pars.fsy"
+//# 2279 "src/Compiler/pars.fsy"
None
)
-//# 2254 "src/Compiler/pars.fsy"
+//# 2279 "src/Compiler/pars.fsy"
: 'gentype_opt_access));
-//# 6851 "pars.fs"
+//# 6936 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_access in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2257 "src/Compiler/pars.fsy"
+//# 2282 "src/Compiler/pars.fsy"
Some(_1)
)
-//# 2257 "src/Compiler/pars.fsy"
+//# 2282 "src/Compiler/pars.fsy"
: 'gentype_opt_access));
-//# 6862 "pars.fs"
+//# 6947 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2262 "src/Compiler/pars.fsy"
+//# 2287 "src/Compiler/pars.fsy"
let m = rhs parseState 1
SynAccess.Private m
)
-//# 2262 "src/Compiler/pars.fsy"
+//# 2287 "src/Compiler/pars.fsy"
: 'gentype_access));
-//# 6873 "pars.fs"
+//# 6958 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2266 "src/Compiler/pars.fsy"
+//# 2291 "src/Compiler/pars.fsy"
let m = rhs parseState 1
SynAccess.Public m
)
-//# 2266 "src/Compiler/pars.fsy"
+//# 2291 "src/Compiler/pars.fsy"
: 'gentype_access));
-//# 6884 "pars.fs"
+//# 6969 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2270 "src/Compiler/pars.fsy"
+//# 2295 "src/Compiler/pars.fsy"
let m = rhs parseState 1
SynAccess.Internal m
)
-//# 2270 "src/Compiler/pars.fsy"
+//# 2295 "src/Compiler/pars.fsy"
: 'gentype_access));
-//# 6895 "pars.fs"
+//# 6980 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationBlock in
let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2276 "src/Compiler/pars.fsy"
+//# 2301 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
let members = _2
let m = (rhs parseState 1, members) ||> unionRangeWithListBy (fun (mem: SynMemberDefn) -> mem.Range)
Some(mWithKwd, members, m)
)
-//# 2276 "src/Compiler/pars.fsy"
+//# 2301 "src/Compiler/pars.fsy"
: 'gentype_opt_interfaceImplDefn));
-//# 6910 "pars.fs"
+//# 6995 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2282 "src/Compiler/pars.fsy"
+//# 2307 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
Some(mWithKwd, [], mWithKwd)
)
-//# 2282 "src/Compiler/pars.fsy"
+//# 2307 "src/Compiler/pars.fsy"
: 'gentype_opt_interfaceImplDefn));
-//# 6921 "pars.fs"
+//# 7006 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2286 "src/Compiler/pars.fsy"
+//# 2311 "src/Compiler/pars.fsy"
None
)
-//# 2286 "src/Compiler/pars.fsy"
+//# 2311 "src/Compiler/pars.fsy"
: 'gentype_opt_interfaceImplDefn));
-//# 6931 "pars.fs"
+//# 7016 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in
let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2291 "src/Compiler/pars.fsy"
+//# 2316 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
(Some mWithKwd), _2
)
-//# 2291 "src/Compiler/pars.fsy"
+//# 2316 "src/Compiler/pars.fsy"
: 'gentype_opt_classDefn));
-//# 6944 "pars.fs"
+//# 7029 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2295 "src/Compiler/pars.fsy"
+//# 2320 "src/Compiler/pars.fsy"
None, []
)
-//# 2295 "src/Compiler/pars.fsy"
+//# 2320 "src/Compiler/pars.fsy"
: 'gentype_opt_classDefn));
-//# 6954 "pars.fs"
+//# 7039 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_optBaseSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2301 "src/Compiler/pars.fsy"
+//# 2326 "src/Compiler/pars.fsy"
let mDecl = unionRanges (rhs parseState 1) _2.Range
- SynMemberDefn.Inherit(_2, _3, mDecl)
+ let trivia = { InheritKeyword = rhs parseState 1 }
+ SynMemberDefn.Inherit(Some _2, _3, mDecl, trivia)
)
-//# 2301 "src/Compiler/pars.fsy"
+//# 2326 "src/Compiler/pars.fsy"
: 'gentype_inheritsDefn));
-//# 6967 "pars.fs"
+//# 7053 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -6973,150 +7059,152 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2305 "src/Compiler/pars.fsy"
+//# 2331 "src/Compiler/pars.fsy"
let mDecl = unionRanges (rhs parseState 1) _4.Range
- SynMemberDefn.ImplicitInherit(_2, _4, _5, mDecl)
+ let trivia = { InheritKeyword = rhs parseState 1 }
+ SynMemberDefn.ImplicitInherit(_2, _4, _5, mDecl, trivia)
)
-//# 2305 "src/Compiler/pars.fsy"
+//# 2331 "src/Compiler/pars.fsy"
: 'gentype_inheritsDefn));
-//# 6982 "pars.fs"
+//# 7069 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2309 "src/Compiler/pars.fsy"
+//# 2336 "src/Compiler/pars.fsy"
let mDecl = (rhs parseState 1)
+ let trivia = { InheritKeyword = (rhs parseState 1) }
if not _2 then errorR (Error(FSComp.SR.parsTypeNameCannotBeEmpty (), mDecl))
- SynMemberDefn.Inherit(SynType.LongIdent(SynLongIdent([], [], [])), None, mDecl)
+ SynMemberDefn.Inherit(None, None, mDecl, trivia)
)
-//# 2309 "src/Compiler/pars.fsy"
+//# 2336 "src/Compiler/pars.fsy"
: 'gentype_inheritsDefn));
-//# 6995 "pars.fs"
+//# 7083 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_asSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2315 "src/Compiler/pars.fsy"
+//# 2343 "src/Compiler/pars.fsy"
Some(_1)
)
-//# 2315 "src/Compiler/pars.fsy"
+//# 2343 "src/Compiler/pars.fsy"
: 'gentype_optAsSpec));
-//# 7006 "pars.fs"
+//# 7094 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2318 "src/Compiler/pars.fsy"
+//# 2346 "src/Compiler/pars.fsy"
None
)
-//# 2318 "src/Compiler/pars.fsy"
+//# 2346 "src/Compiler/pars.fsy"
: 'gentype_optAsSpec));
-//# 7016 "pars.fs"
+//# 7104 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2322 "src/Compiler/pars.fsy"
+//# 2350 "src/Compiler/pars.fsy"
rhs parseState 1, Some _2
)
-//# 2322 "src/Compiler/pars.fsy"
+//# 2350 "src/Compiler/pars.fsy"
: 'gentype_asSpec));
-//# 7027 "pars.fs"
+//# 7115 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2325 "src/Compiler/pars.fsy"
+//# 2353 "src/Compiler/pars.fsy"
rhs parseState 1, None
)
-//# 2325 "src/Compiler/pars.fsy"
+//# 2353 "src/Compiler/pars.fsy"
: 'gentype_asSpec));
-//# 7038 "pars.fs"
+//# 7126 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_baseSpec in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2329 "src/Compiler/pars.fsy"
+//# 2357 "src/Compiler/pars.fsy"
Some(_1)
)
-//# 2329 "src/Compiler/pars.fsy"
+//# 2357 "src/Compiler/pars.fsy"
: 'gentype_optBaseSpec));
-//# 7049 "pars.fs"
+//# 7137 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2332 "src/Compiler/pars.fsy"
+//# 2360 "src/Compiler/pars.fsy"
None
)
-//# 2332 "src/Compiler/pars.fsy"
+//# 2360 "src/Compiler/pars.fsy"
: 'gentype_optBaseSpec));
-//# 7059 "pars.fs"
+//# 7147 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2336 "src/Compiler/pars.fsy"
+//# 2364 "src/Compiler/pars.fsy"
if (_2).idText <> "base" then
errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(), rhs2 parseState 1 2))
ident("base", rhs parseState 2)
)
-//# 2336 "src/Compiler/pars.fsy"
+//# 2364 "src/Compiler/pars.fsy"
: 'gentype_baseSpec));
-//# 7072 "pars.fs"
+//# 7160 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2341 "src/Compiler/pars.fsy"
+//# 2369 "src/Compiler/pars.fsy"
errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(), rhs2 parseState 1 2))
ident("base", rhs parseState 2)
)
-//# 2341 "src/Compiler/pars.fsy"
+//# 2369 "src/Compiler/pars.fsy"
: 'gentype_baseSpec));
-//# 7083 "pars.fs"
+//# 7171 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2348 "src/Compiler/pars.fsy"
+//# 2376 "src/Compiler/pars.fsy"
_2
)
-//# 2348 "src/Compiler/pars.fsy"
+//# 2376 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationBlock));
-//# 7095 "pars.fs"
+//# 7183 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationMembers in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2351 "src/Compiler/pars.fsy"
+//# 2379 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileObjectMembers())
_2
)
-//# 2351 "src/Compiler/pars.fsy"
+//# 2379 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationBlock));
-//# 7108 "pars.fs"
+//# 7196 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMembers in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2355 "src/Compiler/pars.fsy"
+//# 2383 "src/Compiler/pars.fsy"
_1
)
-//# 2355 "src/Compiler/pars.fsy"
+//# 2383 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationBlock));
-//# 7119 "pars.fs"
+//# 7207 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMember in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
@@ -7124,24 +7212,24 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2361 "src/Compiler/pars.fsy"
+//# 2389 "src/Compiler/pars.fsy"
_1 @ _3
)
-//# 2361 "src/Compiler/pars.fsy"
+//# 2389 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationMembers));
-//# 7132 "pars.fs"
+//# 7220 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMember in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2364 "src/Compiler/pars.fsy"
+//# 2392 "src/Compiler/pars.fsy"
_1
)
-//# 2364 "src/Compiler/pars.fsy"
+//# 2392 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationMembers));
-//# 7144 "pars.fs"
+//# 7232 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_staticMemberOrMemberOrOverride in
@@ -7150,13 +7238,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2370 "src/Compiler/pars.fsy"
+//# 2398 "src/Compiler/pars.fsy"
let rangeStart = rhs parseState 1
_3 None _2 _1 rangeStart
)
-//# 2370 "src/Compiler/pars.fsy"
+//# 2398 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationMember));
-//# 7159 "pars.fs"
+//# 7247 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_staticMemberOrMemberOrOverride in
@@ -7165,25 +7253,40 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2374 "src/Compiler/pars.fsy"
+//# 2402 "src/Compiler/pars.fsy"
let rangeStart = rhs parseState 1
_3 _1 _2 rangeStart
)
-//# 2374 "src/Compiler/pars.fsy"
+//# 2402 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationMember));
-//# 7174 "pars.fs"
+//# 7262 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_staticMemberOrMemberOrOverride in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2378 "src/Compiler/pars.fsy"
- []
- )
-//# 2378 "src/Compiler/pars.fsy"
- : 'gentype_objectImplementationMember));
-//# 7186 "pars.fs"
+//# 2406 "src/Compiler/pars.fsy"
+ let rangeStart = rhs parseState 1
+ let memFlagsBuilder, leadingKeyword = _2
+ let flags = Some(memFlagsBuilder SynMemberKind.Member)
+ let xmlDoc = grabXmlDocAtRangeStart (parseState, _1, rangeStart)
+ let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = None; EqualsRange = None }
+ let mMember = rhs parseState 2
+ let mEnd = mMember.EndRange
+ let bindingPat = patFromParseError (SynPat.Wild(mEnd))
+ let expr = arbExpr ("objectImplementationMember1", mEnd)
+ let mWhole = rhs2 parseState 1 2
+ let binding =
+ mkSynBinding
+ (xmlDoc, bindingPat)
+ (None, false, false, mWhole, DebugPointAtBinding.NoneAtInvisible, None, expr, mEnd, [], _1, flags, trivia)
+ [SynMemberDefn.Member(binding, mWhole)]
+ )
+//# 2406 "src/Compiler/pars.fsy"
+ : 'gentype_objectImplementationMember));
+//# 7289 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _3 = parseState.GetInput(3) :?> 'gentype_memberCore in
@@ -7191,46 +7294,46 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2381 "src/Compiler/pars.fsy"
+//# 2424 "src/Compiler/pars.fsy"
[]
)
-//# 2381 "src/Compiler/pars.fsy"
+//# 2424 "src/Compiler/pars.fsy"
: 'gentype_objectImplementationMember));
-//# 7199 "pars.fs"
+//# 7302 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2386 "src/Compiler/pars.fsy"
+//# 2429 "src/Compiler/pars.fsy"
let mStatic = rhs parseState 1
let mMember = rhs parseState 2
ImplementStaticMemberFlags, (SynLeadingKeyword.StaticMember(mStatic, mMember))
)
-//# 2386 "src/Compiler/pars.fsy"
+//# 2429 "src/Compiler/pars.fsy"
: 'gentype_staticMemberOrMemberOrOverride));
-//# 7211 "pars.fs"
+//# 7314 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2390 "src/Compiler/pars.fsy"
+//# 2433 "src/Compiler/pars.fsy"
let mMember = rhs parseState 1
OverrideMemberFlags, (SynLeadingKeyword.Member mMember)
)
-//# 2390 "src/Compiler/pars.fsy"
+//# 2433 "src/Compiler/pars.fsy"
: 'gentype_staticMemberOrMemberOrOverride));
-//# 7222 "pars.fs"
+//# 7325 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2393 "src/Compiler/pars.fsy"
+//# 2436 "src/Compiler/pars.fsy"
let mOverride = rhs parseState 1
OverrideMemberFlags, (SynLeadingKeyword.Override mOverride)
)
-//# 2393 "src/Compiler/pars.fsy"
+//# 2436 "src/Compiler/pars.fsy"
: 'gentype_staticMemberOrMemberOrOverride));
-//# 7233 "pars.fs"
+//# 7336 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -7241,13 +7344,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2402 "src/Compiler/pars.fsy"
+//# 2445 "src/Compiler/pars.fsy"
errorR(Error(FSComp.SR.parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString(), rhs parseState 4))
SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.ErrorRecovery, SynType.LongIdent(_3), unionRanges (rhs parseState 1) _3.Range)
)
-//# 2402 "src/Compiler/pars.fsy"
+//# 2445 "src/Compiler/pars.fsy"
: SynTypeDefnSimpleRepr));
-//# 7250 "pars.fs"
+//# 7353 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -7255,14 +7358,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2407 "src/Compiler/pars.fsy"
+//# 2450 "src/Compiler/pars.fsy"
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1))
if Option.isSome _2 then errorR(Error(FSComp.SR.parsTypeAbbreviationsCannotHaveVisibilityDeclarations(), rhs parseState 2))
SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.Ok, _3, unionRanges (rhs parseState 1) _3.Range)
)
-//# 2407 "src/Compiler/pars.fsy"
+//# 2450 "src/Compiler/pars.fsy"
: SynTypeDefnSimpleRepr));
-//# 7265 "pars.fs"
+//# 7368 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -7270,7 +7373,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2413 "src/Compiler/pars.fsy"
+//# 2456 "src/Compiler/pars.fsy"
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1))
let rangesOf3 = _3 |> List.map (function Choice1Of2 ec -> ec.Range | Choice2Of2 uc -> uc.Range)
let mWhole = (rhs2 parseState 1 2, rangesOf3) ||> List.fold unionRanges
@@ -7287,9 +7390,9 @@ let _fsyacc_reductions = lazy [|
_3 |> List.choose (function Choice2Of2 data -> Some(data) | Choice1Of2 _ -> failwith "huh?"),
mWhole)
)
-//# 2413 "src/Compiler/pars.fsy"
+//# 2456 "src/Compiler/pars.fsy"
: SynTypeDefnSimpleRepr));
-//# 7292 "pars.fs"
+//# 7395 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -7297,13 +7400,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2431 "src/Compiler/pars.fsy"
+//# 2474 "src/Compiler/pars.fsy"
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1))
SynTypeDefnSimpleRepr.Record(_2, _3, lhs parseState)
)
-//# 2431 "src/Compiler/pars.fsy"
+//# 2474 "src/Compiler/pars.fsy"
: SynTypeDefnSimpleRepr));
-//# 7306 "pars.fs"
+//# 7409 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -7312,7 +7415,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2436 "src/Compiler/pars.fsy"
+//# 2479 "src/Compiler/pars.fsy"
if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1))
let mLhs = lhs parseState
if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError mLhs
@@ -7321,9 +7424,9 @@ let _fsyacc_reductions = lazy [|
let ilType = ParseAssemblyCodeType s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion parseState.LexBuffer.StrictIndentation (rhs parseState 5)
SynTypeDefnSimpleRepr.LibraryOnlyILAssembly(box ilType, mLhs)
)
-//# 2436 "src/Compiler/pars.fsy"
+//# 2479 "src/Compiler/pars.fsy"
: SynTypeDefnSimpleRepr));
-//# 7326 "pars.fs"
+//# 7429 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in
@@ -7331,12 +7434,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2448 "src/Compiler/pars.fsy"
+//# 2491 "src/Compiler/pars.fsy"
_2
)
-//# 2448 "src/Compiler/pars.fsy"
+//# 2491 "src/Compiler/pars.fsy"
: 'gentype_braceFieldDeclList));
-//# 7339 "pars.fs"
+//# 7442 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in
@@ -7344,158 +7447,158 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2451 "src/Compiler/pars.fsy"
+//# 2494 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace())
_2
)
-//# 2451 "src/Compiler/pars.fsy"
+//# 2494 "src/Compiler/pars.fsy"
: 'gentype_braceFieldDeclList));
-//# 7353 "pars.fs"
+//# 7456 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2455 "src/Compiler/pars.fsy"
+//# 2498 "src/Compiler/pars.fsy"
[]
)
-//# 2455 "src/Compiler/pars.fsy"
+//# 2498 "src/Compiler/pars.fsy"
: 'gentype_braceFieldDeclList));
-//# 7365 "pars.fs"
+//# 7468 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2458 "src/Compiler/pars.fsy"
- errorR (Error(FSComp.SR.parsExpectingField(), rhs parseState 2))
+//# 2501 "src/Compiler/pars.fsy"
+ errorR (Error(FSComp.SR.parsExpectingRecordField (), rhs parseState 2))
[]
)
-//# 2458 "src/Compiler/pars.fsy"
+//# 2501 "src/Compiler/pars.fsy"
: 'gentype_braceFieldDeclList));
-//# 7378 "pars.fs"
+//# 7481 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_braceBarFieldDeclListCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2463 "src/Compiler/pars.fsy"
+//# 2506 "src/Compiler/pars.fsy"
_2, true
)
-//# 2463 "src/Compiler/pars.fsy"
+//# 2506 "src/Compiler/pars.fsy"
: 'gentype_anonRecdType));
-//# 7389 "pars.fs"
+//# 7492 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_braceBarFieldDeclListCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2465 "src/Compiler/pars.fsy"
+//# 2508 "src/Compiler/pars.fsy"
_1, false
)
-//# 2465 "src/Compiler/pars.fsy"
+//# 2508 "src/Compiler/pars.fsy"
: 'gentype_anonRecdType));
-//# 7400 "pars.fs"
+//# 7503 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in
let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2470 "src/Compiler/pars.fsy"
+//# 2513 "src/Compiler/pars.fsy"
_2
)
-//# 2470 "src/Compiler/pars.fsy"
+//# 2513 "src/Compiler/pars.fsy"
: 'gentype_braceBarFieldDeclListCore));
-//# 7412 "pars.fs"
+//# 7515 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2473 "src/Compiler/pars.fsy"
+//# 2516 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar())
_2
)
-//# 2473 "src/Compiler/pars.fsy"
+//# 2516 "src/Compiler/pars.fsy"
: 'gentype_braceBarFieldDeclListCore));
-//# 7425 "pars.fs"
+//# 7528 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2477 "src/Compiler/pars.fsy"
+//# 2520 "src/Compiler/pars.fsy"
[]
)
-//# 2477 "src/Compiler/pars.fsy"
+//# 2520 "src/Compiler/pars.fsy"
: 'gentype_braceBarFieldDeclListCore));
-//# 7436 "pars.fs"
+//# 7539 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2481 "src/Compiler/pars.fsy"
+//# 2524 "src/Compiler/pars.fsy"
SynTypeDefnKind.Class
)
-//# 2481 "src/Compiler/pars.fsy"
+//# 2524 "src/Compiler/pars.fsy"
: 'gentype_classOrInterfaceOrStruct));
-//# 7446 "pars.fs"
+//# 7549 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2484 "src/Compiler/pars.fsy"
+//# 2527 "src/Compiler/pars.fsy"
SynTypeDefnKind.Interface
)
-//# 2484 "src/Compiler/pars.fsy"
+//# 2527 "src/Compiler/pars.fsy"
: 'gentype_classOrInterfaceOrStruct));
-//# 7456 "pars.fs"
+//# 7559 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2487 "src/Compiler/pars.fsy"
+//# 2530 "src/Compiler/pars.fsy"
SynTypeDefnKind.Struct
)
-//# 2487 "src/Compiler/pars.fsy"
+//# 2530 "src/Compiler/pars.fsy"
: 'gentype_classOrInterfaceOrStruct));
-//# 7466 "pars.fs"
+//# 7569 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2490 "src/Compiler/pars.fsy"
+//# 2533 "src/Compiler/pars.fsy"
)
-//# 2490 "src/Compiler/pars.fsy"
+//# 2533 "src/Compiler/pars.fsy"
: 'gentype_interfaceMember));
-//# 7476 "pars.fs"
+//# 7579 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2491 "src/Compiler/pars.fsy"
+//# 2534 "src/Compiler/pars.fsy"
)
-//# 2491 "src/Compiler/pars.fsy"
+//# 2534 "src/Compiler/pars.fsy"
: 'gentype_interfaceMember));
-//# 7486 "pars.fs"
+//# 7589 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
let _2 = parseState.GetInput(2) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2495 "src/Compiler/pars.fsy"
+//# 2538 "src/Compiler/pars.fsy"
None, _2.LongIdent, false, _1
)
-//# 2495 "src/Compiler/pars.fsy"
+//# 2538 "src/Compiler/pars.fsy"
: 'gentype_tyconNameAndTyparDecls));
-//# 7498 "pars.fs"
+//# 7601 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
let _2 = parseState.GetInput(2) :?> 'gentype_prefixTyparDecls in
@@ -7503,12 +7606,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2498 "src/Compiler/pars.fsy"
+//# 2541 "src/Compiler/pars.fsy"
Some _2, _3.LongIdent, false, _1
)
-//# 2498 "src/Compiler/pars.fsy"
+//# 2541 "src/Compiler/pars.fsy"
: 'gentype_tyconNameAndTyparDecls));
-//# 7511 "pars.fs"
+//# 7614 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
let _2 = parseState.GetInput(2) :?> SynLongIdent in
@@ -7516,82 +7619,82 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2501 "src/Compiler/pars.fsy"
+//# 2544 "src/Compiler/pars.fsy"
Some _3, _2.LongIdent, true, _1
)
-//# 2501 "src/Compiler/pars.fsy"
+//# 2544 "src/Compiler/pars.fsy"
: 'gentype_tyconNameAndTyparDecls));
-//# 7524 "pars.fs"
+//# 7627 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2504 "src/Compiler/pars.fsy"
+//# 2547 "src/Compiler/pars.fsy"
None, [], false, _1
)
-//# 2504 "src/Compiler/pars.fsy"
+//# 2547 "src/Compiler/pars.fsy"
: 'gentype_tyconNameAndTyparDecls));
-//# 7536 "pars.fs"
+//# 7639 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2508 "src/Compiler/pars.fsy"
+//# 2551 "src/Compiler/pars.fsy"
SynTyparDecls.SinglePrefix(SynTyparDecl([], _1, [], SynTyparDeclTrivia.Zero), rhs parseState 1)
)
-//# 2508 "src/Compiler/pars.fsy"
+//# 2551 "src/Compiler/pars.fsy"
: 'gentype_prefixTyparDecls));
-//# 7547 "pars.fs"
+//# 7650 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typarDeclList in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2511 "src/Compiler/pars.fsy"
+//# 2554 "src/Compiler/pars.fsy"
SynTyparDecls.PrefixList(List.rev _2, rhs2 parseState 1 3)
)
-//# 2511 "src/Compiler/pars.fsy"
+//# 2554 "src/Compiler/pars.fsy"
: 'gentype_prefixTyparDecls));
-//# 7559 "pars.fs"
+//# 7662 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in
let _3 = parseState.GetInput(3) :?> 'gentype_typarDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2514 "src/Compiler/pars.fsy"
+//# 2557 "src/Compiler/pars.fsy"
_3 :: _1
)
-//# 2514 "src/Compiler/pars.fsy"
+//# 2557 "src/Compiler/pars.fsy"
: 'gentype_typarDeclList));
-//# 7571 "pars.fs"
+//# 7674 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typarDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2515 "src/Compiler/pars.fsy"
+//# 2558 "src/Compiler/pars.fsy"
[_1]
)
-//# 2515 "src/Compiler/pars.fsy"
+//# 2558 "src/Compiler/pars.fsy"
: 'gentype_typarDeclList));
-//# 7582 "pars.fs"
+//# 7685 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2519 "src/Compiler/pars.fsy"
+//# 2562 "src/Compiler/pars.fsy"
SynTyparDecl(_1, _2, [], SynTyparDeclTrivia.Zero)
)
-//# 2519 "src/Compiler/pars.fsy"
+//# 2562 "src/Compiler/pars.fsy"
: 'gentype_typarDecl));
-//# 7594 "pars.fs"
+//# 7697 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> SynTypar in
@@ -7599,14 +7702,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2522 "src/Compiler/pars.fsy"
+//# 2565 "src/Compiler/pars.fsy"
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (rhs2 parseState 3 4)
let constraints, mAmpersands = _4
SynTyparDecl(_1, _2, List.rev constraints, { AmpersandRanges = rhs parseState 3 :: List.rev mAmpersands })
)
-//# 2522 "src/Compiler/pars.fsy"
+//# 2565 "src/Compiler/pars.fsy"
: 'gentype_typarDecl));
-//# 7609 "pars.fs"
+//# 7712 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_HIGH_PRECEDENCE_TYAPP in
let _2 = parseState.GetInput(2) :?> bool in
@@ -7616,46 +7719,46 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2530 "src/Compiler/pars.fsy"
+//# 2573 "src/Compiler/pars.fsy"
let m = rhs2 parseState 2 5
if not _2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(), m))
SynTyparDecls.PostfixList(List.rev _3, _4, m)
)
-//# 2530 "src/Compiler/pars.fsy"
+//# 2573 "src/Compiler/pars.fsy"
: 'gentype_postfixTyparDecls));
-//# 7626 "pars.fs"
+//# 7729 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2538 "src/Compiler/pars.fsy"
+//# 2581 "src/Compiler/pars.fsy"
(List.rev _1, true)
)
-//# 2538 "src/Compiler/pars.fsy"
+//# 2581 "src/Compiler/pars.fsy"
: 'gentype_explicitValTyparDeclsCore));
-//# 7637 "pars.fs"
+//# 7740 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2541 "src/Compiler/pars.fsy"
+//# 2584 "src/Compiler/pars.fsy"
(List.rev _1, false)
)
-//# 2541 "src/Compiler/pars.fsy"
+//# 2584 "src/Compiler/pars.fsy"
: 'gentype_explicitValTyparDeclsCore));
-//# 7648 "pars.fs"
+//# 7751 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2544 "src/Compiler/pars.fsy"
+//# 2587 "src/Compiler/pars.fsy"
([], false)
)
-//# 2544 "src/Compiler/pars.fsy"
+//# 2587 "src/Compiler/pars.fsy"
: 'gentype_explicitValTyparDeclsCore));
-//# 7658 "pars.fs"
+//# 7761 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_HIGH_PRECEDENCE_TYAPP in
let _2 = parseState.GetInput(2) :?> bool in
@@ -7665,171 +7768,216 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2548 "src/Compiler/pars.fsy"
+//# 2591 "src/Compiler/pars.fsy"
let m = rhs2 parseState 2 5
if not _2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(), m))
let tps, flex = _3
let tps = SynTyparDecls.PostfixList(tps, _4, m)
SynValTyparDecls(Some tps, flex)
)
-//# 2548 "src/Compiler/pars.fsy"
+//# 2591 "src/Compiler/pars.fsy"
: 'gentype_explicitValTyparDecls));
-//# 7677 "pars.fs"
+//# 7780 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_explicitValTyparDecls in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2556 "src/Compiler/pars.fsy"
+//# 2599 "src/Compiler/pars.fsy"
_1
)
-//# 2556 "src/Compiler/pars.fsy"
+//# 2599 "src/Compiler/pars.fsy"
: 'gentype_opt_explicitValTyparDecls));
-//# 7688 "pars.fs"
+//# 7791 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2558 "src/Compiler/pars.fsy"
+//# 2601 "src/Compiler/pars.fsy"
SynValTyparDecls(None, true)
)
-//# 2558 "src/Compiler/pars.fsy"
+//# 2601 "src/Compiler/pars.fsy"
: 'gentype_opt_explicitValTyparDecls));
-//# 7698 "pars.fs"
+//# 7801 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _2 = parseState.GetInput(2) :?> 'gentype_atomType in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2605 "src/Compiler/pars.fsy"
+ SynType.HashConstraint(_2, lhs parseState)
+ )
+//# 2605 "src/Compiler/pars.fsy"
+ : 'gentype_hashConstraint));
+//# 7812 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2564 "src/Compiler/pars.fsy"
+//# 2611 "src/Compiler/pars.fsy"
[]
)
-//# 2564 "src/Compiler/pars.fsy"
+//# 2611 "src/Compiler/pars.fsy"
: 'gentype_opt_typeConstraints));
-//# 7708 "pars.fs"
+//# 7822 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2567 "src/Compiler/pars.fsy"
+//# 2614 "src/Compiler/pars.fsy"
List.rev _2
)
-//# 2567 "src/Compiler/pars.fsy"
+//# 2614 "src/Compiler/pars.fsy"
: 'gentype_opt_typeConstraints));
-//# 7719 "pars.fs"
+//# 7833 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeConstraints in
let _3 = parseState.GetInput(3) :?> 'gentype_typeConstraint in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2573 "src/Compiler/pars.fsy"
+//# 2620 "src/Compiler/pars.fsy"
_3 :: _1
)
-//# 2573 "src/Compiler/pars.fsy"
+//# 2620 "src/Compiler/pars.fsy"
: 'gentype_typeConstraints));
-//# 7731 "pars.fs"
+//# 7845 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeConstraint in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2576 "src/Compiler/pars.fsy"
+//# 2623 "src/Compiler/pars.fsy"
[_1]
)
-//# 2576 "src/Compiler/pars.fsy"
+//# 2623 "src/Compiler/pars.fsy"
: 'gentype_typeConstraints));
-//# 7742 "pars.fs"
+//# 7856 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_intersectionConstraints in
+ let _3 = parseState.GetInput(3) :?> 'gentype_hashConstraint in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2629 "src/Compiler/pars.fsy"
+ let constraints, mAmpersands = _1
+ (_3 :: constraints), (rhs parseState 2 :: mAmpersands)
+ )
+//# 2629 "src/Compiler/pars.fsy"
+ : 'gentype_intersectionConstraints));
+//# 7869 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_intersectionConstraints in
let _3 = parseState.GetInput(3) :?> 'gentype_atomType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2582 "src/Compiler/pars.fsy"
+//# 2633 "src/Compiler/pars.fsy"
let constraints, mAmpersands = _1
- match _3 with
- | SynType.HashConstraint _ -> ()
- | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range))
+ errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), _3.Range))
(_3 :: constraints), (rhs parseState 2 :: mAmpersands)
)
-//# 2582 "src/Compiler/pars.fsy"
+//# 2633 "src/Compiler/pars.fsy"
+ : 'gentype_intersectionConstraints));
+//# 7883 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_hashConstraint in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2638 "src/Compiler/pars.fsy"
+ [ _1 ], []
+ )
+//# 2638 "src/Compiler/pars.fsy"
: 'gentype_intersectionConstraints));
-//# 7758 "pars.fs"
+//# 7894 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2591 "src/Compiler/pars.fsy"
- match _1 with
- | SynType.HashConstraint _ -> ()
- | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range))
+//# 2641 "src/Compiler/pars.fsy"
+ errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), _1.Range))
[ _1 ], []
)
-//# 2591 "src/Compiler/pars.fsy"
+//# 2641 "src/Compiler/pars.fsy"
: 'gentype_intersectionConstraints));
-//# 7772 "pars.fs"
+//# 7906 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynTypar in
let _4 = parseState.GetInput(4) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2601 "src/Compiler/pars.fsy"
+//# 2648 "src/Compiler/pars.fsy"
if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError (lhs parseState)
SynTypeConstraint.WhereTyparDefaultsToType(_2, _4, lhs parseState)
)
-//# 2601 "src/Compiler/pars.fsy"
+//# 2648 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7785 "pars.fs"
+//# 7919 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2605 "src/Compiler/pars.fsy"
+//# 2652 "src/Compiler/pars.fsy"
SynTypeConstraint.WhereTyparSubtypeOfType(_1, _3, lhs parseState)
)
-//# 2605 "src/Compiler/pars.fsy"
+//# 2652 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7797 "pars.fs"
+//# 7931 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2608 "src/Compiler/pars.fsy"
+//# 2655 "src/Compiler/pars.fsy"
SynTypeConstraint.WhereTyparIsValueType(_1, lhs parseState)
)
-//# 2608 "src/Compiler/pars.fsy"
+//# 2655 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7808 "pars.fs"
+//# 7942 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2611 "src/Compiler/pars.fsy"
+//# 2658 "src/Compiler/pars.fsy"
if _3 <> "not" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(_3))
SynTypeConstraint.WhereTyparIsReferenceType(_1, lhs parseState)
)
-//# 2611 "src/Compiler/pars.fsy"
+//# 2658 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7821 "pars.fs"
+//# 7955 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2615 "src/Compiler/pars.fsy"
+//# 2662 "src/Compiler/pars.fsy"
SynTypeConstraint.WhereTyparSupportsNull(_1, lhs parseState)
)
-//# 2615 "src/Compiler/pars.fsy"
+//# 2662 "src/Compiler/pars.fsy"
+ : 'gentype_typeConstraint));
+//# 7966 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> SynTypar in
+ let _3 = parseState.GetInput(3) :?> string in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2665 "src/Compiler/pars.fsy"
+ if _3 <> "not" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(_3 + " (2)"))
+ let trivia : SynTypeConstraintWhereTyparNotSupportsNullTrivia = { ColonRange = rhs parseState 2; NotRange = rhs parseState 3 }
+ SynTypeConstraint.WhereTyparNotSupportsNull(_1, lhs parseState, trivia)
+ )
+//# 2665 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7832 "pars.fs"
+//# 7980 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _4 = parseState.GetInput(4) :?> 'gentype_classMemberSpfn in
@@ -7837,13 +7985,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2618 "src/Compiler/pars.fsy"
+//# 2670 "src/Compiler/pars.fsy"
let tp = _1
SynTypeConstraint.WhereTyparSupportsMember(SynType.Var(tp, tp.Range), _4, lhs parseState)
)
-//# 2618 "src/Compiler/pars.fsy"
+//# 2670 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7846 "pars.fs"
+//# 7994 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeAlts in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
@@ -7852,27 +8000,27 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2622 "src/Compiler/pars.fsy"
+//# 2674 "src/Compiler/pars.fsy"
let mParen = rhs2 parseState 1 3
let t = SynType.Paren(_2, mParen)
SynTypeConstraint.WhereTyparSupportsMember(t, _6, lhs parseState)
)
-//# 2622 "src/Compiler/pars.fsy"
+//# 2674 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7862 "pars.fs"
+//# 8010 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _4 = parseState.GetInput(4) :?> range * range option * SynType list * range list * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2627 "src/Compiler/pars.fsy"
+//# 2679 "src/Compiler/pars.fsy"
let _ltm, _gtm, args, _commas, mWhole = _4
SynTypeConstraint.WhereTyparIsDelegate(_1, args, unionRanges _1.Range mWhole)
)
-//# 2627 "src/Compiler/pars.fsy"
+//# 2679 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7875 "pars.fs"
+//# 8023 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> string in
@@ -7880,80 +8028,80 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2631 "src/Compiler/pars.fsy"
+//# 2683 "src/Compiler/pars.fsy"
match _3 with
| "enum" ->
let _ltm, _gtm, args, _commas, mWhole = _4
SynTypeConstraint.WhereTyparIsEnum(_1, args, unionRanges _1.Range mWhole)
- | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm))
+ | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm + " (3)"))
)
-//# 2631 "src/Compiler/pars.fsy"
+//# 2683 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7892 "pars.fs"
+//# 8040 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2638 "src/Compiler/pars.fsy"
+//# 2690 "src/Compiler/pars.fsy"
match _3 with
| "comparison" -> SynTypeConstraint.WhereTyparIsComparable(_1, lhs parseState)
| "equality" -> SynTypeConstraint.WhereTyparIsEquatable(_1, lhs parseState)
| "unmanaged" -> SynTypeConstraint.WhereTyparIsUnmanaged(_1, lhs parseState)
- | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm))
+ | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm + " (4)"))
)
-//# 2638 "src/Compiler/pars.fsy"
+//# 2690 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7908 "pars.fs"
+//# 8056 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2645 "src/Compiler/pars.fsy"
+//# 2697 "src/Compiler/pars.fsy"
SynTypeConstraint.WhereSelfConstrained(_1, lhs parseState)
)
-//# 2645 "src/Compiler/pars.fsy"
+//# 2697 "src/Compiler/pars.fsy"
: 'gentype_typeConstraint));
-//# 7919 "pars.fs"
+//# 8067 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeAlts in
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2649 "src/Compiler/pars.fsy"
+//# 2701 "src/Compiler/pars.fsy"
let mOr = rhs parseState 2
let m = unionRanges _1.Range _3.Range
SynType.Or(_1, _3, m, { OrKeyword = mOr })
)
-//# 2649 "src/Compiler/pars.fsy"
+//# 2701 "src/Compiler/pars.fsy"
: 'gentype_typeAlts));
-//# 7933 "pars.fs"
+//# 8081 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2654 "src/Compiler/pars.fsy"
+//# 2706 "src/Compiler/pars.fsy"
_1
)
-//# 2654 "src/Compiler/pars.fsy"
+//# 2706 "src/Compiler/pars.fsy"
: 'gentype_typeAlts));
-//# 7944 "pars.fs"
+//# 8092 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_barAndgrabXmlDoc in
let _2 = parseState.GetInput(2) :?> 'gentype_attrUnionCaseDecls in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2661 "src/Compiler/pars.fsy"
+//# 2713 "src/Compiler/pars.fsy"
_2 _1
)
-//# 2661 "src/Compiler/pars.fsy"
+//# 2713 "src/Compiler/pars.fsy"
: Choice list));
-//# 7956 "pars.fs"
+//# 8104 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDeclOfMany in
let _2 = parseState.GetInput(2) :?> 'gentype_barAndgrabXmlDoc in
@@ -7961,34 +8109,34 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2664 "src/Compiler/pars.fsy"
+//# 2716 "src/Compiler/pars.fsy"
_1 :: _3 _2
)
-//# 2664 "src/Compiler/pars.fsy"
+//# 2716 "src/Compiler/pars.fsy"
: Choice list));
-//# 7969 "pars.fs"
+//# 8117 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2667 "src/Compiler/pars.fsy"
+//# 2719 "src/Compiler/pars.fsy"
[_1]
)
-//# 2667 "src/Compiler/pars.fsy"
+//# 2719 "src/Compiler/pars.fsy"
: Choice list));
-//# 7980 "pars.fs"
+//# 8128 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2671 "src/Compiler/pars.fsy"
+//# 2723 "src/Compiler/pars.fsy"
let mBar = rhs parseState 1
grabXmlDoc(parseState, [], 1), mBar
)
-//# 2671 "src/Compiler/pars.fsy"
+//# 2723 "src/Compiler/pars.fsy"
: 'gentype_barAndgrabXmlDoc));
-//# 7991 "pars.fs"
+//# 8139 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attrUnionCaseDecl in
let _2 = parseState.GetInput(2) :?> 'gentype_barAndgrabXmlDoc in
@@ -7996,23 +8144,23 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2676 "src/Compiler/pars.fsy"
+//# 2728 "src/Compiler/pars.fsy"
(fun xmlDocAndBar -> _1 xmlDocAndBar :: _3 _2)
)
-//# 2676 "src/Compiler/pars.fsy"
+//# 2728 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecls));
-//# 8004 "pars.fs"
+//# 8152 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attrUnionCaseDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2679 "src/Compiler/pars.fsy"
+//# 2731 "src/Compiler/pars.fsy"
(fun xmlDocAndBar -> [ _1 xmlDocAndBar ])
)
-//# 2679 "src/Compiler/pars.fsy"
+//# 2731 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecls));
-//# 8015 "pars.fs"
+//# 8163 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8020,12 +8168,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2684 "src/Compiler/pars.fsy"
+//# 2736 "src/Compiler/pars.fsy"
mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2
)
-//# 2684 "src/Compiler/pars.fsy"
+//# 2736 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8028 "pars.fs"
+//# 8176 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8033,12 +8181,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2687 "src/Compiler/pars.fsy"
+//# 2739 "src/Compiler/pars.fsy"
fun (xmlDoc, mBar) -> mkSynUnionCase _1 _2 (SynIdent(mkSynId mBar.EndRange "", None)) (SynUnionCaseKind.Fields []) mBar (xmlDoc, mBar) |> Choice2Of2
)
-//# 2687 "src/Compiler/pars.fsy"
+//# 2739 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8041 "pars.fs"
+//# 8189 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8047,12 +8195,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2690 "src/Compiler/pars.fsy"
- mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields _5) (rhs2 parseState 1 5) >> Choice2Of2
+//# 2742 "src/Compiler/pars.fsy"
+ let mId = rhs parseState 3
+ let fields, mFields = _5
+ let mWhole = unionRanges mId mFields
+ mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields fields) mWhole >> Choice2Of2
)
-//# 2690 "src/Compiler/pars.fsy"
+//# 2742 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8055 "pars.fs"
+//# 8206 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8061,13 +8212,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2693 "src/Compiler/pars.fsy"
+//# 2748 "src/Compiler/pars.fsy"
errorR (Error(FSComp.SR.parsMissingKeyword("of"), rhs2 parseState 3 4))
- mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields _4) (rhs2 parseState 1 4) >> Choice2Of2
+ let mAttributes = rhs parseState 1
+ let fields, mFields = _4
+ let mWhole = unionRanges mAttributes mFields
+ mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields fields) mWhole >> Choice2Of2
)
-//# 2693 "src/Compiler/pars.fsy"
+//# 2748 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8070 "pars.fs"
+//# 8224 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8075,15 +8229,18 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2697 "src/Compiler/pars.fsy"
+//# 2755 "src/Compiler/pars.fsy"
+ let mAttributes = rhs parseState 1
let mOf = rhs parseState 3
let mId = mOf.StartRange
+ let fields, mFields = _4
+ let mWhole = unionRanges mAttributes mFields
errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf))
- mkSynUnionCase _1 _2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields _4) (rhs2 parseState 1 4) >> Choice2Of2
+ mkSynUnionCase _1 _2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields fields) mWhole >> Choice2Of2
)
-//# 2697 "src/Compiler/pars.fsy"
+//# 2755 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8086 "pars.fs"
+//# 8243 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8091,15 +8248,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2703 "src/Compiler/pars.fsy"
+//# 2764 "src/Compiler/pars.fsy"
let mOf = rhs parseState 3
let mId = mOf.StartRange
errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf))
mkSynUnionCase _1 _2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2
)
-//# 2703 "src/Compiler/pars.fsy"
+//# 2764 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8102 "pars.fs"
+//# 8259 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8108,12 +8265,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2709 "src/Compiler/pars.fsy"
+//# 2770 "src/Compiler/pars.fsy"
mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 4) >> Choice2Of2
)
-//# 2709 "src/Compiler/pars.fsy"
+//# 2770 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8116 "pars.fs"
+//# 8273 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8122,13 +8279,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2712 "src/Compiler/pars.fsy"
+//# 2773 "src/Compiler/pars.fsy"
+ let mAttributes = rhs parseState 1
+ let fullType, _ = _5
+ let mWhole = unionRanges mAttributes fullType.Range
if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning(lhs parseState)
- mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.FullType _5) (rhs2 parseState 1 5) >> Choice2Of2
+ mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.FullType _5) mWhole >> Choice2Of2
)
-//# 2712 "src/Compiler/pars.fsy"
+//# 2773 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8131 "pars.fs"
+//# 8291 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8137,70 +8297,93 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2716 "src/Compiler/pars.fsy"
+//# 2780 "src/Compiler/pars.fsy"
if Option.isSome _2 then errorR(Error(FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations(), rhs parseState 2))
let mEquals = rhs parseState 4
- let mDecl = rhs2 parseState 1 5
+ let mAttributes = rhs parseState 1
+ let expr, _ = _5
+ let mDecl = unionRanges mAttributes expr.Range
(fun (xmlDoc, mBar) ->
let trivia: SynEnumCaseTrivia = { BarRange = Some mBar; EqualsRange = mEquals }
let mDecl = unionRangeWithXmlDoc xmlDoc mDecl
Choice1Of2 (SynEnumCase (_1, _3, fst _5, xmlDoc, mDecl, trivia)))
)
-//# 2716 "src/Compiler/pars.fsy"
+//# 2780 "src/Compiler/pars.fsy"
+ : 'gentype_attrUnionCaseDecl));
+//# 8313 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
+ let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
+ let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseName in
+ let _5 = parseState.GetInput(5) :?> 'gentype_recover in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2791 "src/Compiler/pars.fsy"
+ if Option.isSome _2 then errorR(Error(FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations(), rhs parseState 2))
+ let mEquals = rhs parseState 4
+ let expr = arbExpr ("attrUnionCaseDecl", mEquals.EndRange)
+ let mDecl = rhs2 parseState 1 4
+ fun (xmlDoc, mBar) ->
+ let trivia: SynEnumCaseTrivia = { BarRange = Some mBar; EqualsRange = mEquals }
+ let mDecl = unionRangeWithXmlDoc xmlDoc mDecl
+ Choice1Of2 (SynEnumCase (_1, _3, expr, xmlDoc, mDecl, trivia))
+ )
+//# 2791 "src/Compiler/pars.fsy"
: 'gentype_attrUnionCaseDecl));
-//# 8151 "pars.fs"
+//# 8334 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_nameop in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2727 "src/Compiler/pars.fsy"
+//# 2803 "src/Compiler/pars.fsy"
_1
)
-//# 2727 "src/Compiler/pars.fsy"
+//# 2803 "src/Compiler/pars.fsy"
: 'gentype_unionCaseName));
-//# 8162 "pars.fs"
+//# 8345 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2730 "src/Compiler/pars.fsy"
+//# 2806 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let rpr = rhs parseState 3
SynIdent(ident(opNameCons, rhs parseState 2), Some(IdentTrivia.OriginalNotationWithParen(lpr, "::", rpr)))
)
-//# 2730 "src/Compiler/pars.fsy"
+//# 2806 "src/Compiler/pars.fsy"
: 'gentype_unionCaseName));
-//# 8175 "pars.fs"
+//# 8358 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _4 = parseState.GetInput(4) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2735 "src/Compiler/pars.fsy"
+//# 2811 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let rpr = rhs parseState 3
SynIdent(ident(opNameNil, rhs2 parseState 2 3), Some(IdentTrivia.OriginalNotationWithParen(lpr, "[]", rpr)))
)
-//# 2735 "src/Compiler/pars.fsy"
+//# 2811 "src/Compiler/pars.fsy"
: 'gentype_unionCaseName));
-//# 8188 "pars.fs"
+//# 8371 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_OBLOCKSEP in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2741 "src/Compiler/pars.fsy"
+//# 2817 "src/Compiler/pars.fsy"
let trivia: SynUnionCaseTrivia = { BarRange = None }
let xmlDoc = grabXmlDoc(parseState, [], 1)
let mDecl = (rhs parseState 1) |> unionRangeWithXmlDoc xmlDoc
Choice2Of2 (SynUnionCase ([], (SynIdent(_1, None)), SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))
)
-//# 2741 "src/Compiler/pars.fsy"
+//# 2817 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDeclOfMany));
-//# 8203 "pars.fs"
+//# 8386 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> SynExpr * bool in
@@ -8208,76 +8391,115 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2747 "src/Compiler/pars.fsy"
+//# 2823 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
let trivia: SynEnumCaseTrivia = { BarRange = None; EqualsRange = mEquals }
let xmlDoc = grabXmlDoc(parseState, [], 1)
let mDecl = (rhs2 parseState 1 3) |> unionRangeWithXmlDoc xmlDoc
Choice1Of2 (SynEnumCase ([], SynIdent(_1, None), fst _3, xmlDoc, mDecl, trivia))
)
-//# 2747 "src/Compiler/pars.fsy"
+//# 2823 "src/Compiler/pars.fsy"
+ : 'gentype_firstUnionCaseDeclOfMany));
+//# 8403 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> Ident in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
+ let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2830 "src/Compiler/pars.fsy"
+ let mEquals = rhs parseState 2
+ let expr = arbExpr ("firstUnionCaseDeclOfMany1", mEquals.EndRange)
+ let trivia: SynEnumCaseTrivia = { BarRange = None; EqualsRange = mEquals }
+ let xmlDoc = grabXmlDoc(parseState, [], 1)
+ let mDecl = (rhs2 parseState 1 2) |> unionRangeWithXmlDoc xmlDoc
+ Choice1Of2 (SynEnumCase ([], SynIdent(_1, None), expr, xmlDoc, mDecl, trivia))
+ )
+//# 2830 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDeclOfMany));
-//# 8220 "pars.fs"
+//# 8421 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDecl in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_OBLOCKSEP in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2754 "src/Compiler/pars.fsy"
+//# 2838 "src/Compiler/pars.fsy"
_1
)
-//# 2754 "src/Compiler/pars.fsy"
+//# 2838 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDeclOfMany));
-//# 8232 "pars.fs"
+//# 8433 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseRepr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2758 "src/Compiler/pars.fsy"
+//# 2842 "src/Compiler/pars.fsy"
+ let fields, mFields = _3
+ let trivia: SynUnionCaseTrivia = { BarRange = None }
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
+ let mId = rhs parseState 1
+ let mDecl = unionRanges mId mFields |> unionRangeWithXmlDoc xmlDoc
+ Choice2Of2(SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields fields, xmlDoc, None, mDecl, trivia))
+ )
+//# 2842 "src/Compiler/pars.fsy"
+ : 'gentype_firstUnionCaseDecl));
+//# 8450 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseName in
+ let _3 = parseState.GetInput(3) :?> 'gentype_topType in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2850 "src/Compiler/pars.fsy"
+ if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning(lhs parseState)
let trivia: SynUnionCaseTrivia = { BarRange = None }
let xmlDoc = grabXmlDoc (parseState, [], 1)
- let mDecl = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc
- Choice2Of2(SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields _3, xmlDoc, None, mDecl, trivia))
+ let mId = rhs parseState 1
+ let fullType, _ = _3
+ let mDecl = unionRanges mId fullType.Range |> unionRangeWithXmlDoc xmlDoc
+ Choice2Of2(SynUnionCase([], _1, SynUnionCaseKind.FullType _3, xmlDoc, None, mDecl, trivia))
)
-//# 2758 "src/Compiler/pars.fsy"
+//# 2850 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDecl));
-//# 8247 "pars.fs"
+//# 8468 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2764 "src/Compiler/pars.fsy"
+//# 2859 "src/Compiler/pars.fsy"
let trivia: SynUnionCaseTrivia = { BarRange = None }
let xmlDoc = grabXmlDoc (parseState, [], 1)
let mDecl = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc
Choice2Of2(SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))
)
-//# 2764 "src/Compiler/pars.fsy"
+//# 2859 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDecl));
-//# 8262 "pars.fs"
+//# 8483 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_unionCaseRepr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2770 "src/Compiler/pars.fsy"
+//# 2865 "src/Compiler/pars.fsy"
let mOf = rhs parseState 1
let mId = mOf.StartRange
+ let fields, mFields = _2
errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf))
let id = SynIdent(mkSynId mId "", None)
let trivia: SynUnionCaseTrivia = { BarRange = None }
let xmlDoc = grabXmlDoc (parseState, [], 1)
- let mDecl = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc
- Choice2Of2(SynUnionCase([], id, SynUnionCaseKind.Fields _2, xmlDoc, None, mDecl, trivia))
+ let mDecl = unionRanges mOf mFields |> unionRangeWithXmlDoc xmlDoc
+ Choice2Of2(SynUnionCase([], id, SynUnionCaseKind.Fields fields, xmlDoc, None, mDecl, trivia))
)
-//# 2770 "src/Compiler/pars.fsy"
+//# 2865 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDecl));
-//# 8280 "pars.fs"
+//# 8502 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> SynExpr * bool in
@@ -8285,116 +8507,186 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2780 "src/Compiler/pars.fsy"
+//# 2876 "src/Compiler/pars.fsy"
+ let mId = rhs parseState 1
let mEquals = rhs parseState 2
let trivia: SynEnumCaseTrivia = { BarRange = None; EqualsRange = mEquals }
let xmlDoc = grabXmlDoc (parseState, [], 1)
- let mDecl = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc
+ let expr, _ = _3
+ let mDecl = unionRanges mId expr.Range |> unionRangeWithXmlDoc xmlDoc
Choice1Of2(SynEnumCase([], SynIdent(_1, None), fst _3, xmlDoc, mDecl, trivia))
)
-//# 2780 "src/Compiler/pars.fsy"
+//# 2876 "src/Compiler/pars.fsy"
: 'gentype_firstUnionCaseDecl));
-//# 8297 "pars.fs"
+//# 8521 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> Ident in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
+ let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2885 "src/Compiler/pars.fsy"
+ let mEquals = rhs parseState 2
+ let expr = arbExpr ("firstUnionCaseDecl", mEquals.EndRange)
+ let trivia: SynEnumCaseTrivia = { BarRange = None; EqualsRange = mEquals }
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
+ let mDecl = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc
+ Choice1Of2(SynEnumCase([], SynIdent(_1, None), expr, xmlDoc, mDecl, trivia))
+ )
+//# 2885 "src/Compiler/pars.fsy"
+ : 'gentype_firstUnionCaseDecl));
+//# 8539 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElement in
let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseReprElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2788 "src/Compiler/pars.fsy"
- _1 :: _3
+//# 2895 "src/Compiler/pars.fsy"
+ let mField = rhs parseState 1
+ let fields, mFields = _3
+ _1 :: fields, unionRanges mField mFields
)
-//# 2788 "src/Compiler/pars.fsy"
+//# 2895 "src/Compiler/pars.fsy"
: 'gentype_unionCaseReprElements));
-//# 8309 "pars.fs"
+//# 8553 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElement in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2791 "src/Compiler/pars.fsy"
- [_1]
+//# 2900 "src/Compiler/pars.fsy"
+ let mStar = rhs parseState 2
+ let ty = SynType.FromParseError mStar.EndRange
+ let field = mkSynAnonField (ty, PreXmlDoc.Empty)
+ [_1; field], rhs2 parseState 1 2
)
-//# 2791 "src/Compiler/pars.fsy"
+//# 2900 "src/Compiler/pars.fsy"
+ : 'gentype_unionCaseReprElements));
+//# 8568 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _2 = parseState.GetInput(2) :?> 'gentype_unionCaseReprElements in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2906 "src/Compiler/pars.fsy"
+ let mStar = rhs parseState 1
+ errorR (Error(FSComp.SR.parsExpectingUnionCaseField (), rhs parseState 1))
+ let fields, mFields = _2
+ let ty = SynType.FromParseError mStar.StartRange
+ let field = mkSynAnonField (ty, PreXmlDoc.Empty)
+ field :: fields, unionRanges mStar mFields
+ )
+//# 2906 "src/Compiler/pars.fsy"
: 'gentype_unionCaseReprElements));
-//# 8320 "pars.fs"
+//# 8584 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElement in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2914 "src/Compiler/pars.fsy"
+ [_1], _1.Range
+ )
+//# 2914 "src/Compiler/pars.fsy"
+ : 'gentype_unionCaseReprElements));
+//# 8595 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2795 "src/Compiler/pars.fsy"
- let xmlDoc = grabXmlDoc(parseState, [], 1)
- let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc
+//# 2918 "src/Compiler/pars.fsy"
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
+ let mId = rhs parseState 1
+ let mWhole = unionRanges mId _3.Range |> unionRangeWithXmlDoc xmlDoc
mkSynNamedField (_1, _3, xmlDoc, mWhole)
)
-//# 2795 "src/Compiler/pars.fsy"
+//# 2918 "src/Compiler/pars.fsy"
: 'gentype_unionCaseReprElement));
-//# 8334 "pars.fs"
+//# 8610 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> Ident in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2800 "src/Compiler/pars.fsy"
- let xmlDoc = grabXmlDoc(parseState, [], 1)
+//# 2924 "src/Compiler/pars.fsy"
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
+ let mColon = rhs parseState 2
+ let ty = SynType.FromParseError mColon.EndRange
+ let mWhole = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc
+ mkSynNamedField (_1, ty, xmlDoc, mWhole)
+ )
+//# 2924 "src/Compiler/pars.fsy"
+ : 'gentype_unionCaseReprElement));
+//# 8626 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> SynType in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 2931 "src/Compiler/pars.fsy"
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
mkSynAnonField (_1, xmlDoc)
)
-//# 2800 "src/Compiler/pars.fsy"
+//# 2931 "src/Compiler/pars.fsy"
: 'gentype_unionCaseReprElement));
-//# 8346 "pars.fs"
+//# 8638 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_invalidUseOfAppTypeFunction in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2804 "src/Compiler/pars.fsy"
- let xmlDoc = grabXmlDoc(parseState, [], 1)
+//# 2935 "src/Compiler/pars.fsy"
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc
- reportParseErrorAt (_3 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField())
+ reportParseErrorAt (_3: SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField ())
mkSynNamedField (_1, _3, xmlDoc, mWhole)
)
-//# 2804 "src/Compiler/pars.fsy"
+//# 2935 "src/Compiler/pars.fsy"
: 'gentype_unionCaseReprElement));
-//# 8361 "pars.fs"
+//# 8653 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_invalidUseOfAppTypeFunction in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2810 "src/Compiler/pars.fsy"
- let xmlDoc = grabXmlDoc(parseState, [], 1)
- reportParseErrorAt (_1 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField())
+//# 2941 "src/Compiler/pars.fsy"
+ let xmlDoc = grabXmlDoc (parseState, [], 1)
+ reportParseErrorAt (_1: SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField ())
mkSynAnonField (_1, xmlDoc)
)
-//# 2810 "src/Compiler/pars.fsy"
+//# 2941 "src/Compiler/pars.fsy"
: 'gentype_unionCaseReprElement));
-//# 8374 "pars.fs"
+//# 8666 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_braceFieldDeclList in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2816 "src/Compiler/pars.fsy"
+//# 2947 "src/Compiler/pars.fsy"
errorR(Deprecated(FSComp.SR.parsConsiderUsingSeparateRecordType(), lhs parseState))
- _1
+ _1, rhs parseState 1
)
-//# 2816 "src/Compiler/pars.fsy"
+//# 2947 "src/Compiler/pars.fsy"
: 'gentype_unionCaseRepr));
-//# 8386 "pars.fs"
+//# 8678 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2820 "src/Compiler/pars.fsy"
+//# 2951 "src/Compiler/pars.fsy"
_1
)
-//# 2820 "src/Compiler/pars.fsy"
+//# 2951 "src/Compiler/pars.fsy"
: 'gentype_unionCaseRepr));
-//# 8397 "pars.fs"
+//# 8689 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recdFieldDecl in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -8402,31 +8694,31 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2825 "src/Compiler/pars.fsy"
+//# 2956 "src/Compiler/pars.fsy"
_1 :: _3
)
-//# 2825 "src/Compiler/pars.fsy"
+//# 2956 "src/Compiler/pars.fsy"
: 'gentype_recdFieldDeclList));
-//# 8410 "pars.fs"
+//# 8702 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recdFieldDecl in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2828 "src/Compiler/pars.fsy"
+//# 2959 "src/Compiler/pars.fsy"
[_1]
)
-//# 2828 "src/Compiler/pars.fsy"
+//# 2959 "src/Compiler/pars.fsy"
: 'gentype_recdFieldDeclList));
-//# 8422 "pars.fs"
+//# 8714 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_fieldDecl in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2833 "src/Compiler/pars.fsy"
+//# 2964 "src/Compiler/pars.fsy"
let rangeStart = rhs parseState 1
let fld = _2 _1 None rangeStart None
let (SynField (a, b, c, d, e, xmlDoc, vis, mWhole, trivia)) = fld
@@ -8434,9 +8726,9 @@ let _fsyacc_reductions = lazy [|
let mWhole = unionRangeWithXmlDoc xmlDoc mWhole
SynField (a, b, c, d, e, xmlDoc, None, mWhole, trivia)
)
-//# 2833 "src/Compiler/pars.fsy"
+//# 2964 "src/Compiler/pars.fsy"
: 'gentype_recdFieldDecl));
-//# 8439 "pars.fs"
+//# 8731 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8445,12 +8737,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2843 "src/Compiler/pars.fsy"
+//# 2974 "src/Compiler/pars.fsy"
mkSynField parseState (Some _3) (Some _5) _1 _2
)
-//# 2843 "src/Compiler/pars.fsy"
+//# 2974 "src/Compiler/pars.fsy"
: 'gentype_fieldDecl));
-//# 8453 "pars.fs"
+//# 8745 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8459,14 +8751,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2846 "src/Compiler/pars.fsy"
+//# 2977 "src/Compiler/pars.fsy"
let mColon = rhs parseState 4
let t = SynType.FromParseError(mColon.EndRange)
mkSynField parseState (Some _3) (Some t) _1 _2
)
-//# 2846 "src/Compiler/pars.fsy"
+//# 2977 "src/Compiler/pars.fsy"
: 'gentype_fieldDecl));
-//# 8469 "pars.fs"
+//# 8761 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8475,13 +8767,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2851 "src/Compiler/pars.fsy"
+//# 2982 "src/Compiler/pars.fsy"
let t = SynType.FromParseError(_3.idRange.EndRange)
mkSynField parseState (Some _3) (Some t) _1 _2
)
-//# 2851 "src/Compiler/pars.fsy"
+//# 2982 "src/Compiler/pars.fsy"
: 'gentype_fieldDecl));
-//# 8484 "pars.fs"
+//# 8776 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in
@@ -8489,25 +8781,25 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2855 "src/Compiler/pars.fsy"
+//# 2986 "src/Compiler/pars.fsy"
mkSynField parseState None None _1 _2
)
-//# 2855 "src/Compiler/pars.fsy"
+//# 2986 "src/Compiler/pars.fsy"
: 'gentype_fieldDecl));
-//# 8497 "pars.fs"
+//# 8789 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExceptionDefnRepr in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_classDefn in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2860 "src/Compiler/pars.fsy"
+//# 2991 "src/Compiler/pars.fsy"
let mWith, optClassDefn = _2
SynExceptionDefn(_1, mWith, optClassDefn, (_1.Range, optClassDefn) ||> unionRangeWithListBy (fun cd -> cd.Range))
)
-//# 2860 "src/Compiler/pars.fsy"
+//# 2991 "src/Compiler/pars.fsy"
: SynExceptionDefn));
-//# 8510 "pars.fs"
+//# 8802 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -8516,16 +8808,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2866 "src/Compiler/pars.fsy"
+//# 2997 "src/Compiler/pars.fsy"
let m =
match _5 with
| None -> rhs2 parseState 1 4
| Some p -> unionRanges (rangeOfLongIdent p) (rhs2 parseState 1 4)
SynExceptionDefnRepr(_2, _4, _5, PreXmlDoc.Empty, _3, m)
)
-//# 2866 "src/Compiler/pars.fsy"
+//# 2997 "src/Compiler/pars.fsy"
: SynExceptionDefnRepr));
-//# 8528 "pars.fs"
+//# 8820 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -8533,7 +8825,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2873 "src/Compiler/pars.fsy"
+//# 3004 "src/Compiler/pars.fsy"
let m =
match _3 with
| Some access -> unionRanges (rhs parseState 1) access.Range
@@ -8545,65 +8837,66 @@ let _fsyacc_reductions = lazy [|
let unionCase = SynUnionCase([], id, SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, m, { BarRange = None })
SynExceptionDefnRepr(_2, unionCase, None, PreXmlDoc.Empty, _3, m)
)
-//# 2873 "src/Compiler/pars.fsy"
+//# 3004 "src/Compiler/pars.fsy"
: SynExceptionDefnRepr));
-//# 8550 "pars.fs"
+//# 8842 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2890 "src/Compiler/pars.fsy"
+//# 3021 "src/Compiler/pars.fsy"
SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, lhs parseState, { BarRange = None })
)
-//# 2890 "src/Compiler/pars.fsy"
+//# 3021 "src/Compiler/pars.fsy"
: 'gentype_exconIntro));
-//# 8561 "pars.fs"
+//# 8853 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseRepr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2893 "src/Compiler/pars.fsy"
- SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields _3, PreXmlDoc.Empty, None, lhs parseState, { BarRange = None })
+//# 3024 "src/Compiler/pars.fsy"
+ let fields, _ = _3
+ SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields fields, PreXmlDoc.Empty, None, lhs parseState, { BarRange = None })
)
-//# 2893 "src/Compiler/pars.fsy"
+//# 3024 "src/Compiler/pars.fsy"
: 'gentype_exconIntro));
-//# 8573 "pars.fs"
+//# 8866 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2896 "src/Compiler/pars.fsy"
+//# 3028 "src/Compiler/pars.fsy"
SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, lhs parseState, { BarRange = None })
)
-//# 2896 "src/Compiler/pars.fsy"
+//# 3028 "src/Compiler/pars.fsy"
: 'gentype_exconIntro));
-//# 8585 "pars.fs"
+//# 8878 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2900 "src/Compiler/pars.fsy"
+//# 3032 "src/Compiler/pars.fsy"
None
)
-//# 2900 "src/Compiler/pars.fsy"
+//# 3032 "src/Compiler/pars.fsy"
: 'gentype_exconRepr));
-//# 8595 "pars.fs"
+//# 8888 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2903 "src/Compiler/pars.fsy"
+//# 3035 "src/Compiler/pars.fsy"
Some(_2.LongIdent)
)
-//# 2903 "src/Compiler/pars.fsy"
+//# 3035 "src/Compiler/pars.fsy"
: 'gentype_exconRepr));
-//# 8606 "pars.fs"
+//# 8899 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in
@@ -8611,7 +8904,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2911 "src/Compiler/pars.fsy"
+//# 3043 "src/Compiler/pars.fsy"
let mLetKwd = rhs parseState 1
let isUse = _1
let isRec = _2
@@ -8637,36 +8930,36 @@ let _fsyacc_reductions = lazy [|
[], binds),
bindingSetRange)
)
-//# 2911 "src/Compiler/pars.fsy"
+//# 3043 "src/Compiler/pars.fsy"
: 'gentype_defnBindings));
-//# 8642 "pars.fs"
+//# 8935 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_cPrototype in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2940 "src/Compiler/pars.fsy"
+//# 3072 "src/Compiler/pars.fsy"
let bindRange = lhs parseState
BindingSetPreAttrs(bindRange, false, false, _1, bindRange)
)
-//# 2940 "src/Compiler/pars.fsy"
+//# 3072 "src/Compiler/pars.fsy"
: 'gentype_defnBindings));
-//# 8654 "pars.fs"
+//# 8947 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2947 "src/Compiler/pars.fsy"
+//# 3079 "src/Compiler/pars.fsy"
let mDoKwd = rhs parseState 1
let mWhole = unionRanges mDoKwd _2.Range
// any attributes prior to the 'let' are left free, e.g. become top-level attributes
// associated with the module, 'main' function or assembly depending on their target
BindingSetPreAttrs(mDoKwd, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDoKwd, _2, mWhole)]), mWhole)
)
-//# 2947 "src/Compiler/pars.fsy"
+//# 3079 "src/Compiler/pars.fsy"
: 'gentype_doBinding));
-//# 8669 "pars.fs"
+//# 8962 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in
@@ -8675,7 +8968,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2957 "src/Compiler/pars.fsy"
+//# 3089 "src/Compiler/pars.fsy"
let mLetKwd = rhs parseState 1
let isUse = _1
let isRec = _2
@@ -8708,16 +9001,16 @@ let _fsyacc_reductions = lazy [|
(unionRanges mLetKwd bindingSetRange),
mIn
)
-//# 2957 "src/Compiler/pars.fsy"
+//# 3089 "src/Compiler/pars.fsy"
: 'gentype_hardwhiteLetBindings));
-//# 8713 "pars.fs"
+//# 9006 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_hardwhiteDefnBindingsTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 2997 "src/Compiler/pars.fsy"
+//# 3129 "src/Compiler/pars.fsy"
let mDo = rhs parseState 1
let _, _, mDone = _3
let mAll = unionRanges mDo _2.Range
@@ -8726,89 +9019,89 @@ let _fsyacc_reductions = lazy [|
// associated with the module, 'main' function or assembly depending on their target
BindingSetPreAttrs(mDo, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDo, _2, mAll)]), mAll), _2
)
-//# 2997 "src/Compiler/pars.fsy"
+//# 3129 "src/Compiler/pars.fsy"
: 'gentype_hardwhiteDoBinding));
-//# 8731 "pars.fs"
+//# 9024 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3006 "src/Compiler/pars.fsy"
+//# 3138 "src/Compiler/pars.fsy"
let mDo = rhs parseState 1
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ())
let seqPt = DebugPointAtBinding.NoneAtDo
let expr = arbExpr ("hardwhiteDoBinding1", mDo.EndRange)
BindingSetPreAttrs(mDo, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDo, expr, mDo)]), mDo), expr
)
-//# 3006 "src/Compiler/pars.fsy"
+//# 3138 "src/Compiler/pars.fsy"
: 'gentype_hardwhiteDoBinding));
-//# 8746 "pars.fs"
+//# 9039 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3015 "src/Compiler/pars.fsy"
+//# 3147 "src/Compiler/pars.fsy"
_1
)
-//# 3015 "src/Compiler/pars.fsy"
+//# 3147 "src/Compiler/pars.fsy"
: 'gentype_classDefnBindings));
-//# 8757 "pars.fs"
+//# 9050 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_doBinding in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3018 "src/Compiler/pars.fsy"
+//# 3150 "src/Compiler/pars.fsy"
_1
)
-//# 3018 "src/Compiler/pars.fsy"
+//# 3150 "src/Compiler/pars.fsy"
: 'gentype_classDefnBindings));
-//# 8768 "pars.fs"
+//# 9061 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3021 "src/Compiler/pars.fsy"
+//# 3153 "src/Compiler/pars.fsy"
let b, m, _ = _1
b
)
-//# 3021 "src/Compiler/pars.fsy"
+//# 3153 "src/Compiler/pars.fsy"
: 'gentype_classDefnBindings));
-//# 8780 "pars.fs"
+//# 9073 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteDoBinding in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3025 "src/Compiler/pars.fsy"
+//# 3157 "src/Compiler/pars.fsy"
fst _1
)
-//# 3025 "src/Compiler/pars.fsy"
+//# 3157 "src/Compiler/pars.fsy"
: 'gentype_classDefnBindings));
-//# 8791 "pars.fs"
+//# 9084 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3031 "src/Compiler/pars.fsy"
+//# 3163 "src/Compiler/pars.fsy"
let mToken = rhs parseState 1
// In LexFilter.fs the IN token could have been transformed to an ODECLEND one.
let mIn = if (mToken.EndColumn - mToken.StartColumn) = 2 then Some mToken else None
(fun _ m -> ()), mIn, Some _1
)
-//# 3031 "src/Compiler/pars.fsy"
+//# 3163 "src/Compiler/pars.fsy"
: 'gentype_hardwhiteDefnBindingsTerminator));
-//# 8805 "pars.fs"
+//# 9098 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3037 "src/Compiler/pars.fsy"
+//# 3169 "src/Compiler/pars.fsy"
(fun kwd m ->
let msg =
match kwd with
@@ -8818,9 +9111,9 @@ let _fsyacc_reductions = lazy [|
| _ (*"let" *) -> FSComp.SR.parsUnmatchedLet()
reportParseErrorAt m msg), None, None
)
-//# 3037 "src/Compiler/pars.fsy"
+//# 3169 "src/Compiler/pars.fsy"
: 'gentype_hardwhiteDefnBindingsTerminator));
-//# 8823 "pars.fs"
+//# 9116 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_cRetType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in
@@ -8831,7 +9124,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3049 "src/Compiler/pars.fsy"
+//# 3181 "src/Compiler/pars.fsy"
let mExtern = rhs parseState 1
let rty, vis, nm, (args, commas) = _2, _3, _4, _7
let nmm = rhs parseState 3
@@ -8857,82 +9150,82 @@ let _fsyacc_reductions = lazy [|
(vis, false, false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, Some(None, rty), rhsExpr, mRhs, [], attrs, None, trivia)
[], [binding])
)
-//# 3049 "src/Compiler/pars.fsy"
+//# 3181 "src/Compiler/pars.fsy"
: 'gentype_cPrototype));
-//# 8862 "pars.fs"
+//# 9155 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_externMoreArgs in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3077 "src/Compiler/pars.fsy"
+//# 3209 "src/Compiler/pars.fsy"
let args, commas = _1
List.rev args, (List.rev commas)
)
-//# 3077 "src/Compiler/pars.fsy"
+//# 3209 "src/Compiler/pars.fsy"
: 'gentype_externArgs));
-//# 8874 "pars.fs"
+//# 9167 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_externArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3081 "src/Compiler/pars.fsy"
+//# 3213 "src/Compiler/pars.fsy"
[_1], []
)
-//# 3081 "src/Compiler/pars.fsy"
+//# 3213 "src/Compiler/pars.fsy"
: 'gentype_externArgs));
-//# 8885 "pars.fs"
+//# 9178 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3083 "src/Compiler/pars.fsy"
+//# 3215 "src/Compiler/pars.fsy"
[], []
)
-//# 3083 "src/Compiler/pars.fsy"
+//# 3215 "src/Compiler/pars.fsy"
: 'gentype_externArgs));
-//# 8895 "pars.fs"
+//# 9188 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_externMoreArgs in
let _3 = parseState.GetInput(3) :?> 'gentype_externArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3089 "src/Compiler/pars.fsy"
+//# 3221 "src/Compiler/pars.fsy"
let args, commas = _1
let mComma = rhs parseState 2
_3 :: args, (mComma :: commas)
)
-//# 3089 "src/Compiler/pars.fsy"
+//# 3221 "src/Compiler/pars.fsy"
: 'gentype_externMoreArgs));
-//# 8909 "pars.fs"
+//# 9202 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_externArg in
let _3 = parseState.GetInput(3) :?> 'gentype_externArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3094 "src/Compiler/pars.fsy"
+//# 3226 "src/Compiler/pars.fsy"
let mComma = rhs parseState 2
[_3; _1], [mComma]
)
-//# 3094 "src/Compiler/pars.fsy"
+//# 3226 "src/Compiler/pars.fsy"
: 'gentype_externMoreArgs));
-//# 8922 "pars.fs"
+//# 9215 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_cType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3101 "src/Compiler/pars.fsy"
+//# 3233 "src/Compiler/pars.fsy"
let m = lhs parseState
SynPat.Typed(SynPat.Wild m, _2, m) |> addAttribs _1
)
-//# 3101 "src/Compiler/pars.fsy"
+//# 3233 "src/Compiler/pars.fsy"
: 'gentype_externArg));
-//# 8935 "pars.fs"
+//# 9228 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_cType in
@@ -8940,104 +9233,115 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3105 "src/Compiler/pars.fsy"
+//# 3237 "src/Compiler/pars.fsy"
let m = lhs parseState
SynPat.Typed(SynPat.Named(SynIdent(_3, None), false, None, m), _2, m) |> addAttribs _1
)
-//# 3105 "src/Compiler/pars.fsy"
+//# 3237 "src/Compiler/pars.fsy"
: 'gentype_externArg));
-//# 8949 "pars.fs"
+//# 9242 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3111 "src/Compiler/pars.fsy"
+//# 3243 "src/Compiler/pars.fsy"
let m = _1.Range
SynType.App(SynType.LongIdent(_1), None, [], [], None, false, m)
)
-//# 3111 "src/Compiler/pars.fsy"
+//# 3243 "src/Compiler/pars.fsy"
: 'gentype_cType));
-//# 8961 "pars.fs"
+//# 9254 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_cType in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3115 "src/Compiler/pars.fsy"
+//# 3247 "src/Compiler/pars.fsy"
let m = lhs parseState
SynType.App(SynType.LongIdent(SynLongIdent([ident("[]", m)], [], [None])), None, [_1], [], None, true, m)
)
-//# 3115 "src/Compiler/pars.fsy"
+//# 3247 "src/Compiler/pars.fsy"
: 'gentype_cType));
-//# 8974 "pars.fs"
+//# 9267 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_cType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3119 "src/Compiler/pars.fsy"
+//# 3251 "src/Compiler/pars.fsy"
let m = lhs parseState
SynType.App(SynType.LongIdent(SynLongIdent([ident("nativeptr", m)], [], [ Some(IdentTrivia.OriginalNotation "*") ])), None, [_1], [], None, true, m)
)
-//# 3119 "src/Compiler/pars.fsy"
+//# 3251 "src/Compiler/pars.fsy"
+ : 'gentype_cType));
+//# 9279 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_cType in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3255 "src/Compiler/pars.fsy"
+ SynType.WithNull(_1, false, lhs parseState, { BarRange = rhs parseState 2 })
+ )
+//# 3255 "src/Compiler/pars.fsy"
: 'gentype_cType));
-//# 8986 "pars.fs"
+//# 9290 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_cType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3123 "src/Compiler/pars.fsy"
+//# 3258 "src/Compiler/pars.fsy"
let m = lhs parseState
SynType.App(SynType.LongIdent(SynLongIdent([ident("byref", m)], [], [ Some(IdentTrivia.OriginalNotation "&") ])), None, [_1], [], None, true, m)
)
-//# 3123 "src/Compiler/pars.fsy"
+//# 3258 "src/Compiler/pars.fsy"
: 'gentype_cType));
-//# 8998 "pars.fs"
+//# 9302 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3127 "src/Compiler/pars.fsy"
+//# 3262 "src/Compiler/pars.fsy"
let m = lhs parseState
SynType.App(SynType.LongIdent(SynLongIdent([ident("nativeint", m)], [], [ Some(IdentTrivia.OriginalNotation "void*") ])), None, [], [], None, true, m)
)
-//# 3127 "src/Compiler/pars.fsy"
+//# 3262 "src/Compiler/pars.fsy"
: 'gentype_cType));
-//# 9009 "pars.fs"
+//# 9313 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_cType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3134 "src/Compiler/pars.fsy"
+//# 3269 "src/Compiler/pars.fsy"
SynReturnInfo((_2, SynArgInfo(_1, false, None)), rhs parseState 2)
)
-//# 3134 "src/Compiler/pars.fsy"
+//# 3269 "src/Compiler/pars.fsy"
: 'gentype_cRetType));
-//# 9021 "pars.fs"
+//# 9325 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3137 "src/Compiler/pars.fsy"
+//# 3272 "src/Compiler/pars.fsy"
let m = rhs parseState 2
SynReturnInfo((SynType.App(SynType.LongIdent(SynLongIdent([ident("unit", m)], [], [ Some(IdentTrivia.OriginalNotation "void") ])), None, [], [], None, false, m), SynArgInfo(_1, false, None)), m)
)
-//# 3137 "src/Compiler/pars.fsy"
+//# 3272 "src/Compiler/pars.fsy"
: 'gentype_cRetType));
-//# 9033 "pars.fs"
+//# 9337 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attr_localBinding in
let _2 = parseState.GetInput(2) :?> 'gentype_moreLocalBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3143 "src/Compiler/pars.fsy"
+//# 3278 "src/Compiler/pars.fsy"
let (moreBindings, moreBindingRanges) = List.unzip _2
let moreLocalBindingsLastRange = if moreBindingRanges.IsEmpty then None else Some(List.last moreBindingRanges)
match _1 with
@@ -9050,16 +9354,16 @@ let _fsyacc_reductions = lazy [|
| None ->
moreLocalBindingsLastRange, (fun _xmlDoc _attrs _vis _leadingKeyword -> moreBindings)
)
-//# 3143 "src/Compiler/pars.fsy"
+//# 3278 "src/Compiler/pars.fsy"
: 'gentype_localBindings));
-//# 9055 "pars.fs"
+//# 9359 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_attr_localBinding in
let _3 = parseState.GetInput(3) :?> 'gentype_moreLocalBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3158 "src/Compiler/pars.fsy"
+//# 3293 "src/Compiler/pars.fsy"
let leadingKeyword = SynLeadingKeyword.And(rhs parseState 1)
(match _2 with
| Some(localBindingRange, attrLocalBindingBuilder) ->
@@ -9068,44 +9372,44 @@ let _fsyacc_reductions = lazy [|
(attrLocalBindingBuilder xmlDoc [] None leadingKeyword false, localBindingRange) :: _3
| None -> _3)
)
-//# 3158 "src/Compiler/pars.fsy"
+//# 3293 "src/Compiler/pars.fsy"
: 'gentype_moreLocalBindings));
-//# 9073 "pars.fs"
+//# 9377 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3167 "src/Compiler/pars.fsy"
+//# 3302 "src/Compiler/pars.fsy"
[]
)
-//# 3167 "src/Compiler/pars.fsy"
+//# 3302 "src/Compiler/pars.fsy"
: 'gentype_moreLocalBindings));
-//# 9083 "pars.fs"
+//# 9387 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_localBinding in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3173 "src/Compiler/pars.fsy"
+//# 3308 "src/Compiler/pars.fsy"
let attrs2 = _1
let localBindingRange, localBindingBuilder = _2
let attrLocalBindingBuilder = (fun xmlDoc attrs vis leadingKeyword _ -> localBindingBuilder xmlDoc (attrs@attrs2) vis leadingKeyword)
Some(localBindingRange, attrLocalBindingBuilder)
)
-//# 3173 "src/Compiler/pars.fsy"
+//# 3308 "src/Compiler/pars.fsy"
: 'gentype_attr_localBinding));
-//# 9098 "pars.fs"
+//# 9402 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3179 "src/Compiler/pars.fsy"
+//# 3314 "src/Compiler/pars.fsy"
None
)
-//# 3179 "src/Compiler/pars.fsy"
+//# 3314 "src/Compiler/pars.fsy"
: 'gentype_attr_localBinding));
-//# 9108 "pars.fs"
+//# 9412 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
@@ -9115,7 +9419,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3185 "src/Compiler/pars.fsy"
+//# 3320 "src/Compiler/pars.fsy"
let (expr: SynExpr), opts = _6
let mEquals = rhs parseState 5
let mRhs = expr.Range
@@ -9131,9 +9435,9 @@ let _fsyacc_reductions = lazy [|
mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, Option.isSome _2, mWholeBindLhs, spBind, optReturnType, expr, mRhs, opts, attrs, None, trivia))
localBindingRange, localBindingBuilder
)
-//# 3185 "src/Compiler/pars.fsy"
+//# 3320 "src/Compiler/pars.fsy"
: 'gentype_localBinding));
-//# 9136 "pars.fs"
+//# 9440 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
@@ -9142,7 +9446,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3201 "src/Compiler/pars.fsy"
+//# 3336 "src/Compiler/pars.fsy"
let mWhole = rhs2 parseState 1 5
let mRhs = rhs parseState 5
let optReturnType = _4
@@ -9157,9 +9461,9 @@ let _fsyacc_reductions = lazy [|
mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, Option.isSome _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia))
mWhole, localBindingBuilder
)
-//# 3201 "src/Compiler/pars.fsy"
+//# 3336 "src/Compiler/pars.fsy"
: 'gentype_localBinding));
-//# 9162 "pars.fs"
+//# 9466 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in
@@ -9169,12 +9473,18 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3216 "src/Compiler/pars.fsy"
+//# 3351 "src/Compiler/pars.fsy"
if not _5 then reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsUnexpectedEndOfFileDefinition())
+ let bindingPat, mBindLhs = _3
let optReturnType = _4
- let mWhole = rhs2 parseState 1 (match optReturnType with None -> 3 | _ -> 4)
+ let mWhole =
+ let mStart = rhs parseState 1
+ let mEnd =
+ match optReturnType with
+ | None -> bindingPat.Range
+ | Some (_, returnInfo) -> returnInfo.Range
+ unionRanges mStart mEnd
let mRhs = mWhole.EndRange // zero-width range at end of last good token
- let bindingPat, mBindLhs = _3
let localBindingBuilder =
(fun xmlDoc attrs vis (leadingKeyword: SynLeadingKeyword) ->
let spBind = DebugPointAtBinding.Yes(unionRanges leadingKeyword.Range mRhs)
@@ -9183,344 +9493,344 @@ let _fsyacc_reductions = lazy [|
mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, Option.isSome _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia))
mWhole, localBindingBuilder
)
-//# 3216 "src/Compiler/pars.fsy"
+//# 3351 "src/Compiler/pars.fsy"
: 'gentype_localBinding));
-//# 9188 "pars.fs"
+//# 9498 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedExprWithStaticOptimizations in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3232 "src/Compiler/pars.fsy"
+//# 3373 "src/Compiler/pars.fsy"
_2
)
-//# 3232 "src/Compiler/pars.fsy"
+//# 3373 "src/Compiler/pars.fsy"
: 'gentype_typedExprWithStaticOptimizationsBlock));
-//# 9200 "pars.fs"
+//# 9510 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedExprWithStaticOptimizations in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3235 "src/Compiler/pars.fsy"
+//# 3376 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFile())
let a, b = _2
(exprFromParseError a, b)
)
-//# 3235 "src/Compiler/pars.fsy"
+//# 3376 "src/Compiler/pars.fsy"
: 'gentype_typedExprWithStaticOptimizationsBlock));
-//# 9214 "pars.fs"
+//# 9524 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedExprWithStaticOptimizations in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3240 "src/Compiler/pars.fsy"
+//# 3381 "src/Compiler/pars.fsy"
_1
)
-//# 3240 "src/Compiler/pars.fsy"
+//# 3381 "src/Compiler/pars.fsy"
: 'gentype_typedExprWithStaticOptimizationsBlock));
-//# 9225 "pars.fs"
+//# 9535 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_staticOptimizations in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3244 "src/Compiler/pars.fsy"
+//# 3385 "src/Compiler/pars.fsy"
_1, List.rev _2
)
-//# 3244 "src/Compiler/pars.fsy"
+//# 3385 "src/Compiler/pars.fsy"
: 'gentype_typedExprWithStaticOptimizations));
-//# 9237 "pars.fs"
+//# 9547 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opt_staticOptimizations in
let _2 = parseState.GetInput(2) :?> 'gentype_staticOptimization in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3248 "src/Compiler/pars.fsy"
+//# 3389 "src/Compiler/pars.fsy"
_2 :: _1
)
-//# 3248 "src/Compiler/pars.fsy"
+//# 3389 "src/Compiler/pars.fsy"
: 'gentype_opt_staticOptimizations));
-//# 9249 "pars.fs"
+//# 9559 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3251 "src/Compiler/pars.fsy"
+//# 3392 "src/Compiler/pars.fsy"
[]
)
-//# 3251 "src/Compiler/pars.fsy"
+//# 3392 "src/Compiler/pars.fsy"
: 'gentype_opt_staticOptimizations));
-//# 9259 "pars.fs"
+//# 9569 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_staticOptimizationConditions in
let _4 = parseState.GetInput(4) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3255 "src/Compiler/pars.fsy"
+//# 3396 "src/Compiler/pars.fsy"
(_2, _4)
)
-//# 3255 "src/Compiler/pars.fsy"
+//# 3396 "src/Compiler/pars.fsy"
: 'gentype_staticOptimization));
-//# 9271 "pars.fs"
+//# 9581 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_staticOptimizationConditions in
let _3 = parseState.GetInput(3) :?> 'gentype_staticOptimizationCondition in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3259 "src/Compiler/pars.fsy"
+//# 3400 "src/Compiler/pars.fsy"
_3 :: _1
)
-//# 3259 "src/Compiler/pars.fsy"
+//# 3400 "src/Compiler/pars.fsy"
: 'gentype_staticOptimizationConditions));
-//# 9283 "pars.fs"
+//# 9593 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_staticOptimizationCondition in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3262 "src/Compiler/pars.fsy"
+//# 3403 "src/Compiler/pars.fsy"
[_1 ]
)
-//# 3262 "src/Compiler/pars.fsy"
+//# 3403 "src/Compiler/pars.fsy"
: 'gentype_staticOptimizationConditions));
-//# 9294 "pars.fs"
+//# 9604 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3266 "src/Compiler/pars.fsy"
+//# 3407 "src/Compiler/pars.fsy"
SynStaticOptimizationConstraint.WhenTyparTyconEqualsTycon(_1, _3, lhs parseState)
)
-//# 3266 "src/Compiler/pars.fsy"
+//# 3407 "src/Compiler/pars.fsy"
: 'gentype_staticOptimizationCondition));
-//# 9306 "pars.fs"
+//# 9616 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3269 "src/Compiler/pars.fsy"
+//# 3410 "src/Compiler/pars.fsy"
SynStaticOptimizationConstraint.WhenTyparIsStruct(_1, lhs parseState)
)
-//# 3269 "src/Compiler/pars.fsy"
+//# 3410 "src/Compiler/pars.fsy"
: 'gentype_staticOptimizationCondition));
-//# 9317 "pars.fs"
+//# 9627 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> sbyte * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3273 "src/Compiler/pars.fsy"
+//# 3414 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideEightBitSigned(), lhs parseState))
SynConst.SByte(fst _1)
)
-//# 3273 "src/Compiler/pars.fsy"
+//# 3414 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9329 "pars.fs"
+//# 9639 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> byte in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3277 "src/Compiler/pars.fsy"
+//# 3418 "src/Compiler/pars.fsy"
SynConst.Byte _1
)
-//# 3277 "src/Compiler/pars.fsy"
+//# 3418 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9340 "pars.fs"
+//# 9650 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int16 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3280 "src/Compiler/pars.fsy"
+//# 3421 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixteenBitSigned(), lhs parseState))
SynConst.Int16 (fst _1)
)
-//# 3280 "src/Compiler/pars.fsy"
+//# 3421 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9352 "pars.fs"
+//# 9662 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> uint16 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3284 "src/Compiler/pars.fsy"
+//# 3425 "src/Compiler/pars.fsy"
SynConst.UInt16 _1
)
-//# 3284 "src/Compiler/pars.fsy"
+//# 3425 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9363 "pars.fs"
+//# 9673 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3287 "src/Compiler/pars.fsy"
+//# 3428 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState))
SynConst.Int32 (fst _1)
)
-//# 3287 "src/Compiler/pars.fsy"
+//# 3428 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9375 "pars.fs"
+//# 9685 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> uint32 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3291 "src/Compiler/pars.fsy"
+//# 3432 "src/Compiler/pars.fsy"
SynConst.UInt32 _1
)
-//# 3291 "src/Compiler/pars.fsy"
+//# 3432 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9386 "pars.fs"
+//# 9696 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int64 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3294 "src/Compiler/pars.fsy"
+//# 3435 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixtyFourBitSigned(), lhs parseState))
SynConst.Int64 (fst _1)
)
-//# 3294 "src/Compiler/pars.fsy"
+//# 3435 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9398 "pars.fs"
+//# 9708 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> uint64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3298 "src/Compiler/pars.fsy"
+//# 3439 "src/Compiler/pars.fsy"
SynConst.UInt64 _1
)
-//# 3298 "src/Compiler/pars.fsy"
+//# 3439 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9409 "pars.fs"
+//# 9719 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int64 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3301 "src/Compiler/pars.fsy"
+//# 3442 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideNativeSigned(), lhs parseState))
SynConst.IntPtr(fst _1)
)
-//# 3301 "src/Compiler/pars.fsy"
+//# 3442 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9421 "pars.fs"
+//# 9731 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> uint64 in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3305 "src/Compiler/pars.fsy"
+//# 3446 "src/Compiler/pars.fsy"
SynConst.UIntPtr _1
)
-//# 3305 "src/Compiler/pars.fsy"
+//# 3446 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9432 "pars.fs"
+//# 9742 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> single in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3308 "src/Compiler/pars.fsy"
+//# 3449 "src/Compiler/pars.fsy"
SynConst.Single _1
)
-//# 3308 "src/Compiler/pars.fsy"
+//# 3449 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9443 "pars.fs"
+//# 9753 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> double in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3311 "src/Compiler/pars.fsy"
+//# 3452 "src/Compiler/pars.fsy"
SynConst.Double _1
)
-//# 3311 "src/Compiler/pars.fsy"
+//# 3452 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9454 "pars.fs"
+//# 9764 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> char in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3314 "src/Compiler/pars.fsy"
+//# 3455 "src/Compiler/pars.fsy"
SynConst.Char _1
)
-//# 3314 "src/Compiler/pars.fsy"
+//# 3455 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9465 "pars.fs"
+//# 9775 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> System.Decimal in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3317 "src/Compiler/pars.fsy"
+//# 3458 "src/Compiler/pars.fsy"
SynConst.Decimal _1
)
-//# 3317 "src/Compiler/pars.fsy"
+//# 3458 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9476 "pars.fs"
+//# 9786 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> (string * string) in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3320 "src/Compiler/pars.fsy"
+//# 3461 "src/Compiler/pars.fsy"
SynConst.UserNum _1
)
-//# 3320 "src/Compiler/pars.fsy"
+//# 3461 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9487 "pars.fs"
+//# 9797 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3323 "src/Compiler/pars.fsy"
+//# 3464 "src/Compiler/pars.fsy"
let s, synStringKind = _1
SynConst.String(s, synStringKind, lhs parseState)
)
-//# 3323 "src/Compiler/pars.fsy"
+//# 3464 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9499 "pars.fs"
+//# 9809 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sourceIdentifier in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3327 "src/Compiler/pars.fsy"
+//# 3468 "src/Compiler/pars.fsy"
let c, v = _1
SynConst.SourceIdentifier(c, v, lhs parseState)
)
-//# 3327 "src/Compiler/pars.fsy"
+//# 3468 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9511 "pars.fs"
+//# 9821 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> byte[] * SynByteStringKind * ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3331 "src/Compiler/pars.fsy"
+//# 3472 "src/Compiler/pars.fsy"
let (v, synByteStringKind, _) = _1
SynConst.Bytes(v, synByteStringKind, lhs parseState)
)
-//# 3331 "src/Compiler/pars.fsy"
+//# 3472 "src/Compiler/pars.fsy"
: 'gentype_rawConstant));
-//# 9523 "pars.fs"
+//# 9833 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 * bool in
let _2 = parseState.GetInput(2) :?> string in
@@ -9528,15 +9838,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3336 "src/Compiler/pars.fsy"
+//# 3477 "src/Compiler/pars.fsy"
if _2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
if fst _3 = 0 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIllegalDenominatorForMeasureExponent())
if (snd _1) || (snd _3) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState))
SynRationalConst.Rational(fst _1, rhs parseState 1, rhs parseState 2, fst _3, rhs parseState 3, lhs parseState)
)
-//# 3336 "src/Compiler/pars.fsy"
+//# 3477 "src/Compiler/pars.fsy"
: 'gentype_rationalConstant));
-//# 9539 "pars.fs"
+//# 9849 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> int32 * bool in
let _3 = parseState.GetInput(3) :?> string in
@@ -9544,494 +9854,438 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3342 "src/Compiler/pars.fsy"
+//# 3483 "src/Compiler/pars.fsy"
if _3 <> "/" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
if fst _4 = 0 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsIllegalDenominatorForMeasureExponent())
if (snd _2) || (snd _4) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState))
SynRationalConst.Negate(SynRationalConst.Rational(fst _2, rhs parseState 2, rhs parseState 3, fst _4, rhs parseState 4, lhs parseState), lhs parseState)
)
-//# 3342 "src/Compiler/pars.fsy"
+//# 3483 "src/Compiler/pars.fsy"
: 'gentype_rationalConstant));
-//# 9555 "pars.fs"
+//# 9865 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3348 "src/Compiler/pars.fsy"
+//# 3489 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState))
SynRationalConst.Integer(fst _1, lhs parseState)
)
-//# 3348 "src/Compiler/pars.fsy"
+//# 3489 "src/Compiler/pars.fsy"
: 'gentype_rationalConstant));
-//# 9567 "pars.fs"
+//# 9877 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> int32 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3352 "src/Compiler/pars.fsy"
+//# 3493 "src/Compiler/pars.fsy"
if snd _2 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState))
SynRationalConst.Negate(SynRationalConst.Integer(fst _2, rhs parseState 2), lhs parseState)
)
-//# 3352 "src/Compiler/pars.fsy"
+//# 3493 "src/Compiler/pars.fsy"
: 'gentype_rationalConstant));
-//# 9579 "pars.fs"
+//# 9889 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3356 "src/Compiler/pars.fsy"
+//# 3497 "src/Compiler/pars.fsy"
if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState))
SynRationalConst.Integer(fst _1, lhs parseState)
)
-//# 3356 "src/Compiler/pars.fsy"
+//# 3497 "src/Compiler/pars.fsy"
: 'gentype_atomicUnsignedRationalConstant));
-//# 9591 "pars.fs"
+//# 9901 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_rationalConstant in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3360 "src/Compiler/pars.fsy"
+//# 3501 "src/Compiler/pars.fsy"
SynRationalConst.Paren(_2, rhs2 parseState 1 3)
)
-//# 3360 "src/Compiler/pars.fsy"
+//# 3501 "src/Compiler/pars.fsy"
: 'gentype_atomicUnsignedRationalConstant));
-//# 9603 "pars.fs"
+//# 9913 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicUnsignedRationalConstant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3363 "src/Compiler/pars.fsy"
+//# 3504 "src/Compiler/pars.fsy"
_1
)
-//# 3363 "src/Compiler/pars.fsy"
+//# 3504 "src/Compiler/pars.fsy"
: 'gentype_atomicRationalConstant));
-//# 9614 "pars.fs"
+//# 9924 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_atomicUnsignedRationalConstant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3366 "src/Compiler/pars.fsy"
+//# 3507 "src/Compiler/pars.fsy"
SynRationalConst.Negate(_2, lhs parseState)
)
-//# 3366 "src/Compiler/pars.fsy"
+//# 3507 "src/Compiler/pars.fsy"
: 'gentype_atomicRationalConstant));
-//# 9625 "pars.fs"
+//# 9935 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3370 "src/Compiler/pars.fsy"
+//# 3511 "src/Compiler/pars.fsy"
_1, rhs parseState 1
)
-//# 3370 "src/Compiler/pars.fsy"
+//# 3511 "src/Compiler/pars.fsy"
: 'gentype_constant));
-//# 9636 "pars.fs"
+//# 9946 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in
let _3 = parseState.GetInput(3) :?> 'gentype_measureTypeArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3373 "src/Compiler/pars.fsy"
+//# 3514 "src/Compiler/pars.fsy"
let synMeasure, trivia = _3
let mConstant = rhs parseState 1
let m = unionRanges mConstant trivia.GreaterRange
SynConst.Measure(_1, rhs parseState 1, synMeasure, trivia), m
)
-//# 3373 "src/Compiler/pars.fsy"
+//# 3514 "src/Compiler/pars.fsy"
: 'gentype_constant));
-//# 9651 "pars.fs"
+//# 9961 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3380 "src/Compiler/pars.fsy"
- _1, rhs parseState 1
+//# 3521 "src/Compiler/pars.fsy"
+ _1, _1.Range
)
-//# 3380 "src/Compiler/pars.fsy"
+//# 3521 "src/Compiler/pars.fsy"
: 'gentype_bindingPattern));
-//# 9662 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> Ident in
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 3387 "src/Compiler/pars.fsy"
- let m = rhs parseState 1
- SynPat.Named(SynIdent(_1, None), false, None, m)
- )
-//# 3387 "src/Compiler/pars.fsy"
- : 'gentype_simplePattern));
-//# 9674 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> Ident in
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 3391 "src/Compiler/pars.fsy"
- SynPat.OptionalVal(_2, rhs parseState 2)
- )
-//# 3391 "src/Compiler/pars.fsy"
- : 'gentype_simplePattern));
-//# 9685 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in
- let _3 = parseState.GetInput(3) :?> 'gentype_typeWithTypeConstraints in
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 3394 "src/Compiler/pars.fsy"
- SynPat.Typed(_1, _3, lhs parseState)
- )
-//# 3394 "src/Compiler/pars.fsy"
- : 'gentype_simplePattern));
-//# 9697 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in
- let _3 = parseState.GetInput(3) :?> 'gentype_recover in
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 3397 "src/Compiler/pars.fsy"
- let mColon = rhs parseState 2
- let ty = SynType.FromParseError(mColon.EndRange)
- SynPat.Typed(_1, ty, unionRanges _1.Range mColon)
- )
-//# 3397 "src/Compiler/pars.fsy"
- : 'gentype_simplePattern));
-//# 9711 "pars.fs"
+//# 9972 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
- let _2 = parseState.GetInput(2) :?> 'gentype_simplePattern in
+ let _1 = parseState.GetInput(1) :?> 'gentype_simplePatterns in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3402 "src/Compiler/pars.fsy"
- SynPat.Attrib(_2, _1, lhs parseState)
+//# 3525 "src/Compiler/pars.fsy"
+ Some _1
)
-//# 3402 "src/Compiler/pars.fsy"
- : 'gentype_simplePattern));
-//# 9723 "pars.fs"
+//# 3525 "src/Compiler/pars.fsy"
+ : 'gentype_opt_simplePatterns));
+//# 9983 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3406 "src/Compiler/pars.fsy"
- _1
+//# 3527 "src/Compiler/pars.fsy"
+ None
)
-//# 3406 "src/Compiler/pars.fsy"
- : 'gentype_simplePatternCommaList));
-//# 9734 "pars.fs"
+//# 3527 "src/Compiler/pars.fsy"
+ : 'gentype_opt_simplePatterns));
+//# 9993 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in
- let _3 = parseState.GetInput(3) :?> 'gentype_simplePatternCommaList in
+ let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in
+ let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3409 "src/Compiler/pars.fsy"
- let mComma = rhs parseState 2
- match _3 with
- | SynPat.Tuple(_, pats, commas, _) -> SynPat.Tuple(false, _1 :: pats, mComma :: commas, rhs2 parseState 1 3)
- | _ -> SynPat.Tuple(false, [_1; _3], [mComma], rhs2 parseState 1 3)
+//# 3531 "src/Compiler/pars.fsy"
+ SynPat.Paren(_2, rhs2 parseState 1 3)
)
-//# 3409 "src/Compiler/pars.fsy"
- : 'gentype_simplePatternCommaList));
-//# 9749 "pars.fs"
+//# 3531 "src/Compiler/pars.fsy"
+ : 'gentype_simplePatterns));
+//# 10005 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_simplePatterns in
+ let _2 = parseState.GetInput(2) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3416 "src/Compiler/pars.fsy"
- Some _1
+//# 3534 "src/Compiler/pars.fsy"
+ SynPat.Const(SynConst.Unit, rhs2 parseState 1 2)
)
-//# 3416 "src/Compiler/pars.fsy"
- : 'gentype_opt_simplePatterns));
-//# 9760 "pars.fs"
+//# 3534 "src/Compiler/pars.fsy"
+ : 'gentype_simplePatterns));
+//# 10016 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3418 "src/Compiler/pars.fsy"
- None
+//# 3538 "src/Compiler/pars.fsy"
+
)
-//# 3418 "src/Compiler/pars.fsy"
- : 'gentype_opt_simplePatterns));
-//# 9770 "pars.fs"
+//# 3538 "src/Compiler/pars.fsy"
+ : 'gentype_barCanBeRightBeforeNull));
+//# 10026 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> 'gentype_simplePatternCommaList in
- let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3422 "src/Compiler/pars.fsy"
- let parenPat = SynPat.Paren(_2, rhs2 parseState 1 3)
- let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat
- simplePats
+//# 3540 "src/Compiler/pars.fsy"
+
)
-//# 3422 "src/Compiler/pars.fsy"
- : 'gentype_simplePatterns));
-//# 9784 "pars.fs"
+//# 3540 "src/Compiler/pars.fsy"
+ : 'gentype_barCanBeRightBeforeNull));
+//# 10036 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> 'gentype_rparen in
+ let _1 = parseState.GetInput(1) :?> SynPat in
+ let _3 = parseState.GetInput(3) :?> 'gentype_constrPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3427 "src/Compiler/pars.fsy"
- let pat = SynPat.Const(SynConst.Unit, rhs2 parseState 1 2)
- let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat
- simplePats
+//# 3545 "src/Compiler/pars.fsy"
+ SynPat.As(_1, _3, rhs2 parseState 1 3)
)
-//# 3427 "src/Compiler/pars.fsy"
- : 'gentype_simplePatterns));
-//# 9797 "pars.fs"
+//# 3545 "src/Compiler/pars.fsy"
+ : SynPat));
+//# 10048 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> 'gentype_simplePatternCommaList in
+ let _1 = parseState.GetInput(1) :?> SynPat in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3432 "src/Compiler/pars.fsy"
- reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
- let parenPat = SynPat.Paren(SynPat.Tuple(false, [], [], rhs2 parseState 1 2), rhs2 parseState 1 2) // todo: report parsed pats anyway?
- let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat
- simplePats
+//# 3548 "src/Compiler/pars.fsy"
+ let mAs = rhs parseState 2
+ let pat2 = SynPat.Wild(mAs.EndRange)
+ SynPat.As(_1, pat2, rhs2 parseState 1 2)
)
-//# 3432 "src/Compiler/pars.fsy"
- : 'gentype_simplePatterns));
-//# 9812 "pars.fs"
+//# 3548 "src/Compiler/pars.fsy"
+ : SynPat));
+//# 10062 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
+ let _1 = parseState.GetInput(1) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3438 "src/Compiler/pars.fsy"
- let parenPat = SynPat.Paren(SynPat.Wild(rhs parseState 2), rhs2 parseState 1 3) // silent recovery
- let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat
- simplePats
+//# 3553 "src/Compiler/pars.fsy"
+ let mAs = rhs parseState 2
+ reportParseErrorAt mAs (FSComp.SR.parsExpectingPattern ())
+ let pat2 = SynPat.Wild(mAs.EndRange)
+ SynPat.As(_1, pat2, rhs2 parseState 1 2)
)
-//# 3438 "src/Compiler/pars.fsy"
- : 'gentype_simplePatterns));
-//# 9825 "pars.fs"
+//# 3553 "src/Compiler/pars.fsy"
+ : SynPat));
+//# 10076 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> 'gentype_recover in
+ let _1 = parseState.GetInput(1) :?> SynPat in
+ let _2 = parseState.GetInput(2) :?> 'gentype_barCanBeRightBeforeNull in
+ let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3443 "src/Compiler/pars.fsy"
- reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
- let pat = SynPat.Wild(lhs parseState)
- let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat
- simplePats
+//# 3559 "src/Compiler/pars.fsy"
+ let mBar = rhs parseState 2
+ SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar })
)
-//# 3443 "src/Compiler/pars.fsy"
- : 'gentype_simplePatterns));
-//# 9839 "pars.fs"
+//# 3559 "src/Compiler/pars.fsy"
+ : SynPat));
+//# 10090 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
- let _3 = parseState.GetInput(3) :?> 'gentype_constrPattern in
+ let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3451 "src/Compiler/pars.fsy"
- SynPat.As(_1, _3, rhs2 parseState 1 3)
+//# 3563 "src/Compiler/pars.fsy"
+ let mColonColon = rhs parseState 2
+ SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon })
)
-//# 3451 "src/Compiler/pars.fsy"
+//# 3563 "src/Compiler/pars.fsy"
: SynPat));
-//# 9851 "pars.fs"
+//# 10103 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
- let _3 = parseState.GetInput(3) :?> SynPat in
+ let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3454 "src/Compiler/pars.fsy"
- let mBar = rhs parseState 2
- SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar })
+//# 3567 "src/Compiler/pars.fsy"
+ let mColonColon = rhs parseState 2
+ let pat2 = SynPat.Wild(mColonColon.EndRange)
+ SynPat.ListCons(_1, pat2, rhs2 parseState 1 2, { ColonColonRange = mColonColon })
)
-//# 3454 "src/Compiler/pars.fsy"
+//# 3567 "src/Compiler/pars.fsy"
: SynPat));
-//# 9864 "pars.fs"
+//# 10117 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
- let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3458 "src/Compiler/pars.fsy"
+//# 3572 "src/Compiler/pars.fsy"
let mColonColon = rhs parseState 2
- SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon })
+ reportParseErrorAt mColonColon (FSComp.SR.parsExpectingPattern ())
+ let pat2 = SynPat.Wild(mColonColon.EndRange)
+ SynPat.ListCons(_1, pat2, rhs2 parseState 1 2, { ColonColonRange = mColonColon })
)
-//# 3458 "src/Compiler/pars.fsy"
+//# 3572 "src/Compiler/pars.fsy"
: SynPat));
-//# 9877 "pars.fs"
+//# 10131 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3462 "src/Compiler/pars.fsy"
+//# 3578 "src/Compiler/pars.fsy"
let pats, commas = _1
let pats, commas = normalizeTuplePat pats commas
let m = (rhs parseState 1, pats) ||> unionRangeWithListBy (fun p -> p.Range)
SynPat.Tuple(false, List.rev pats, List.rev commas, m)
)
-//# 3462 "src/Compiler/pars.fsy"
+//# 3578 "src/Compiler/pars.fsy"
: SynPat));
-//# 9891 "pars.fs"
+//# 10145 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_conjPatternElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3468 "src/Compiler/pars.fsy"
+//# 3584 "src/Compiler/pars.fsy"
SynPat.Ands(List.rev _1, lhs parseState)
)
-//# 3468 "src/Compiler/pars.fsy"
+//# 3584 "src/Compiler/pars.fsy"
: SynPat));
-//# 9902 "pars.fs"
+//# 10156 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_constrPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3471 "src/Compiler/pars.fsy"
+//# 3587 "src/Compiler/pars.fsy"
_1
)
-//# 3471 "src/Compiler/pars.fsy"
+//# 3587 "src/Compiler/pars.fsy"
: SynPat));
-//# 9913 "pars.fs"
+//# 10167 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in
let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3475 "src/Compiler/pars.fsy"
+//# 3591 "src/Compiler/pars.fsy"
let pats, commas = _1
_3 :: pats, (rhs parseState 2 :: commas)
)
-//# 3475 "src/Compiler/pars.fsy"
+//# 3591 "src/Compiler/pars.fsy"
: 'gentype_tuplePatternElements));
-//# 9926 "pars.fs"
+//# 10180 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3479 "src/Compiler/pars.fsy"
+//# 3595 "src/Compiler/pars.fsy"
[_3; _1], [rhs parseState 2]
)
-//# 3479 "src/Compiler/pars.fsy"
+//# 3595 "src/Compiler/pars.fsy"
: 'gentype_tuplePatternElements));
-//# 9938 "pars.fs"
+//# 10192 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3482 "src/Compiler/pars.fsy"
+//# 3598 "src/Compiler/pars.fsy"
let pats, commas = _1
let commaRange = rhs parseState 2
reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ())
let pat2 = SynPat.Wild(commaRange.EndRange)
pat2 :: pats, (commaRange :: commas)
)
-//# 3482 "src/Compiler/pars.fsy"
+//# 3598 "src/Compiler/pars.fsy"
: 'gentype_tuplePatternElements));
-//# 9954 "pars.fs"
+//# 10208 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3489 "src/Compiler/pars.fsy"
+//# 3605 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 2
reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ())
let pat2 = SynPat.Wild(commaRange.EndRange)
[pat2; _1], [commaRange]
)
-//# 3489 "src/Compiler/pars.fsy"
+//# 3605 "src/Compiler/pars.fsy"
: 'gentype_tuplePatternElements));
-//# 9969 "pars.fs"
+//# 10223 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3495 "src/Compiler/pars.fsy"
+//# 3611 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 1
reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ())
let pat1 = SynPat.Wild(commaRange.StartRange)
[_2; pat1], [commaRange]
)
-//# 3495 "src/Compiler/pars.fsy"
+//# 3611 "src/Compiler/pars.fsy"
: 'gentype_tuplePatternElements));
-//# 9983 "pars.fs"
+//# 10237 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3501 "src/Compiler/pars.fsy"
+//# 3617 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 1
if not _2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedPatternAfterToken ())
let pat1 = SynPat.Wild(commaRange.StartRange)
let pat2 = SynPat.Wild(commaRange.EndRange)
[pat2; pat1], [commaRange]
)
-//# 3501 "src/Compiler/pars.fsy"
+//# 3617 "src/Compiler/pars.fsy"
: 'gentype_tuplePatternElements));
-//# 9998 "pars.fs"
+//# 10252 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_conjPatternElements in
let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3509 "src/Compiler/pars.fsy"
+//# 3625 "src/Compiler/pars.fsy"
_3 :: _1
)
-//# 3509 "src/Compiler/pars.fsy"
+//# 3625 "src/Compiler/pars.fsy"
: 'gentype_conjPatternElements));
-//# 10010 "pars.fs"
+//# 10264 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat in
let _3 = parseState.GetInput(3) :?> SynPat in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3512 "src/Compiler/pars.fsy"
+//# 3628 "src/Compiler/pars.fsy"
_3 :: _1 :: []
)
-//# 3512 "src/Compiler/pars.fsy"
+//# 3628 "src/Compiler/pars.fsy"
: 'gentype_conjPatternElements));
-//# 10022 "pars.fs"
+//# 10276 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_namePatPair in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3516 "src/Compiler/pars.fsy"
+//# 3632 "src/Compiler/pars.fsy"
[_1]
)
-//# 3516 "src/Compiler/pars.fsy"
+//# 3632 "src/Compiler/pars.fsy"
: 'gentype_namePatPairs));
-//# 10034 "pars.fs"
+//# 10288 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_namePatPair in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -10039,12 +10293,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3519 "src/Compiler/pars.fsy"
+//# 3635 "src/Compiler/pars.fsy"
_1 :: _3
)
-//# 3519 "src/Compiler/pars.fsy"
+//# 3635 "src/Compiler/pars.fsy"
: 'gentype_namePatPairs));
-//# 10047 "pars.fs"
+//# 10301 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_namePatPair in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -10053,64 +10307,64 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3522 "src/Compiler/pars.fsy"
+//# 3638 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectingPattern ())
(_1 :: _4)
)
-//# 3522 "src/Compiler/pars.fsy"
+//# 3638 "src/Compiler/pars.fsy"
: 'gentype_namePatPairs));
-//# 10062 "pars.fs"
+//# 10316 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3527 "src/Compiler/pars.fsy"
+//# 3643 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
_1, Some mEquals, _3
)
-//# 3527 "src/Compiler/pars.fsy"
+//# 3643 "src/Compiler/pars.fsy"
: 'gentype_namePatPair));
-//# 10075 "pars.fs"
+//# 10329 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3531 "src/Compiler/pars.fsy"
+//# 3647 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
_1, Some mEquals, patFromParseError (SynPat.Wild mEquals.EndRange)
)
-//# 3531 "src/Compiler/pars.fsy"
+//# 3647 "src/Compiler/pars.fsy"
: 'gentype_namePatPair));
-//# 10088 "pars.fs"
+//# 10342 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3535 "src/Compiler/pars.fsy"
+//# 3651 "src/Compiler/pars.fsy"
_1, None, patFromParseError (SynPat.Wild _1.idRange.EndRange)
)
-//# 3535 "src/Compiler/pars.fsy"
+//# 3651 "src/Compiler/pars.fsy"
: 'gentype_namePatPair));
-//# 10100 "pars.fs"
+//# 10354 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3539 "src/Compiler/pars.fsy"
+//# 3655 "src/Compiler/pars.fsy"
let vis, lid = _1
SynPat.LongIdent(lid, None, Some _2, SynArgPats.Pats [], vis, lhs parseState)
)
-//# 3539 "src/Compiler/pars.fsy"
+//# 3655 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10113 "pars.fs"
+//# 10367 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in
@@ -10118,15 +10372,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3543 "src/Compiler/pars.fsy"
+//# 3659 "src/Compiler/pars.fsy"
let vis, lid = _1
let args, argsM = _3
let m = unionRanges (rhs2 parseState 1 2) argsM
SynPat.LongIdent(lid, None, Some _2, args, vis, m)
)
-//# 3543 "src/Compiler/pars.fsy"
+//# 3659 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10129 "pars.fs"
+//# 10383 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in
@@ -10134,15 +10388,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3549 "src/Compiler/pars.fsy"
+//# 3665 "src/Compiler/pars.fsy"
let vis, lid = _1
let args, argsM = _4
let m = unionRanges (rhs2 parseState 1 2) argsM
SynPat.LongIdent(lid, None, Some _2, args, vis, m)
)
-//# 3549 "src/Compiler/pars.fsy"
+//# 3665 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10145 "pars.fs"
+//# 10399 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in
@@ -10150,169 +10404,198 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3555 "src/Compiler/pars.fsy"
+//# 3671 "src/Compiler/pars.fsy"
let vis, lid = _1
let args, argsM = _4
let m = unionRanges (rhs2 parseState 1 2) argsM
SynPat.LongIdent(lid, None, Some _2, args, vis, m)
)
-//# 3555 "src/Compiler/pars.fsy"
+//# 3671 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10161 "pars.fs"
+//# 10415 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _2 = parseState.GetInput(2) :?> SynArgPats * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3561 "src/Compiler/pars.fsy"
+//# 3677 "src/Compiler/pars.fsy"
let vis, lid = _1
let args, argsM = _2
let m = unionRanges (rhs parseState 1) argsM
SynPat.LongIdent(lid, None, None, args, vis, m)
)
-//# 3561 "src/Compiler/pars.fsy"
+//# 3677 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10176 "pars.fs"
+//# 10430 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _3 = parseState.GetInput(3) :?> SynArgPats * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3567 "src/Compiler/pars.fsy"
+//# 3683 "src/Compiler/pars.fsy"
let vis, lid = _1
let args, argsM = _3
let m = unionRanges (rhs parseState 1) argsM
SynPat.LongIdent(lid, None, None, args, vis, m)
)
-//# 3567 "src/Compiler/pars.fsy"
+//# 3683 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10191 "pars.fs"
+//# 10445 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
let _3 = parseState.GetInput(3) :?> SynArgPats * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3573 "src/Compiler/pars.fsy"
+//# 3689 "src/Compiler/pars.fsy"
let vis, lid = _1
let args, argsM = _3
let m = unionRanges (rhs parseState 1) argsM
SynPat.LongIdent(lid, None, None, args, vis, m)
)
-//# 3573 "src/Compiler/pars.fsy"
+//# 3689 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10206 "pars.fs"
+//# 10460 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeOrAnonRecdType in
+ let _2 = parseState.GetInput(2) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3579 "src/Compiler/pars.fsy"
- SynPat.IsInst(_2, lhs parseState)
+//# 3695 "src/Compiler/pars.fsy"
+ let m = unionRanges (rhs parseState 1) _2.Range
+ SynPat.IsInst(_2, m)
)
-//# 3579 "src/Compiler/pars.fsy"
+//# 3695 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10217 "pars.fs"
+//# 10472 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _2 = parseState.GetInput(2) :?> 'gentype_recover in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3699 "src/Compiler/pars.fsy"
+ let mColon = rhs parseState 1
+ if not _2 then
+ reportParseErrorAt mColon (FSComp.SR.parsExpectingPattern ())
+ let ty = SynType.FromParseError(mColon.EndRange)
+ SynPat.IsInst(ty, mColon)
+ )
+//# 3699 "src/Compiler/pars.fsy"
+ : 'gentype_constrPattern));
+//# 10487 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3706 "src/Compiler/pars.fsy"
+ let mColon = rhs parseState 1
+ let ty = SynType.FromParseError(mColon.EndRange)
+ reportParseErrorAt mColon (FSComp.SR.parsExpectingType ())
+ SynPat.IsInst(ty, mColon)
+ )
+//# 3706 "src/Compiler/pars.fsy"
+ : 'gentype_constrPattern));
+//# 10500 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3582 "src/Compiler/pars.fsy"
+//# 3712 "src/Compiler/pars.fsy"
_1
)
-//# 3582 "src/Compiler/pars.fsy"
+//# 3712 "src/Compiler/pars.fsy"
: 'gentype_constrPattern));
-//# 10228 "pars.fs"
+//# 10511 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_namePatPairs in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3586 "src/Compiler/pars.fsy"
+//# 3716 "src/Compiler/pars.fsy"
let mParen = rhs2 parseState 1 3
let trivia = { ParenRange = mParen }
SynArgPats.NamePatPairs(_2, rhs parseState 2, trivia), mParen
)
-//# 3586 "src/Compiler/pars.fsy"
+//# 3716 "src/Compiler/pars.fsy"
: SynArgPats * range));
-//# 10242 "pars.fs"
+//# 10525 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynPat list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3591 "src/Compiler/pars.fsy"
+//# 3721 "src/Compiler/pars.fsy"
let mParsed = rhs parseState 1
let mAll = (mParsed.StartRange, _1) ||> unionRangeWithListBy (fun p -> p.Range)
SynArgPats.Pats _1, mAll
)
-//# 3591 "src/Compiler/pars.fsy"
+//# 3721 "src/Compiler/pars.fsy"
: SynArgPats * range));
-//# 10255 "pars.fs"
+//# 10538 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in
let _2 = parseState.GetInput(2) :?> SynPat list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3597 "src/Compiler/pars.fsy"
+//# 3727 "src/Compiler/pars.fsy"
_1 :: _2
)
-//# 3597 "src/Compiler/pars.fsy"
+//# 3727 "src/Compiler/pars.fsy"
: SynPat list));
-//# 10267 "pars.fs"
+//# 10550 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in
let _3 = parseState.GetInput(3) :?> SynPat list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3600 "src/Compiler/pars.fsy"
+//# 3730 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled())
_1 :: _3
)
-//# 3600 "src/Compiler/pars.fsy"
+//# 3730 "src/Compiler/pars.fsy"
: SynPat list));
-//# 10280 "pars.fs"
+//# 10563 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in
let _3 = parseState.GetInput(3) :?> SynPat list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3604 "src/Compiler/pars.fsy"
+//# 3734 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled())
_1 :: _3
)
-//# 3604 "src/Compiler/pars.fsy"
+//# 3734 "src/Compiler/pars.fsy"
: SynPat list));
-//# 10293 "pars.fs"
+//# 10576 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3608 "src/Compiler/pars.fsy"
+//# 3738 "src/Compiler/pars.fsy"
[_1]
)
-//# 3608 "src/Compiler/pars.fsy"
+//# 3738 "src/Compiler/pars.fsy"
: SynPat list));
-//# 10304 "pars.fs"
+//# 10587 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_quoteExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3613 "src/Compiler/pars.fsy"
+//# 3743 "src/Compiler/pars.fsy"
SynPat.QuoteExpr(_1, lhs parseState)
)
-//# 3613 "src/Compiler/pars.fsy"
+//# 3743 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10315 "pars.fs"
+//# 10598 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_recordPatternElementsAux in
@@ -10320,488 +10603,548 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3616 "src/Compiler/pars.fsy"
+//# 3746 "src/Compiler/pars.fsy"
SynPat.Record(_2, rhs2 parseState 1 3)
)
-//# 3616 "src/Compiler/pars.fsy"
+//# 3746 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10328 "pars.fs"
+//# 10611 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3619 "src/Compiler/pars.fsy"
+//# 3749 "src/Compiler/pars.fsy"
SynPat.Record([], rhs2 parseState 1 3)
)
-//# 3619 "src/Compiler/pars.fsy"
+//# 3749 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10340 "pars.fs"
+//# 10623 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_listPatternElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3622 "src/Compiler/pars.fsy"
+//# 3752 "src/Compiler/pars.fsy"
SynPat.ArrayOrList(false, _2, lhs parseState)
)
-//# 3622 "src/Compiler/pars.fsy"
+//# 3752 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10351 "pars.fs"
+//# 10634 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_listPatternElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3625 "src/Compiler/pars.fsy"
+//# 3755 "src/Compiler/pars.fsy"
SynPat.ArrayOrList(true, _2, lhs parseState)
)
-//# 3625 "src/Compiler/pars.fsy"
+//# 3755 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10362 "pars.fs"
+//# 10645 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3628 "src/Compiler/pars.fsy"
+//# 3758 "src/Compiler/pars.fsy"
SynPat.Wild(lhs parseState)
)
-//# 3628 "src/Compiler/pars.fsy"
+//# 3758 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10372 "pars.fs"
+//# 10655 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3631 "src/Compiler/pars.fsy"
+//# 3761 "src/Compiler/pars.fsy"
SynPat.OptionalVal(_2, lhs parseState)
)
-//# 3631 "src/Compiler/pars.fsy"
+//# 3761 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10383 "pars.fs"
+//# 10666 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3634 "src/Compiler/pars.fsy"
+//# 3764 "src/Compiler/pars.fsy"
let vis, lidwd = _1
if not (isNilOrSingleton lidwd.LongIdent) || String.isLeadingIdentifierCharacterUpperCase (List.head lidwd.LongIdent).idText then
mkSynPatMaybeVar lidwd vis (lhs parseState)
else
let synIdent = List.head lidwd.IdentsWithTrivia
- let (SynIdent(id, _)) = synIdent
- SynPat.Named(synIdent, false, vis, id.idRange)
+ SynPat.Named(synIdent, false, vis, synIdent.Range)
)
-//# 3634 "src/Compiler/pars.fsy"
+//# 3764 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10400 "pars.fs"
+//# 10682 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_constant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3643 "src/Compiler/pars.fsy"
+//# 3772 "src/Compiler/pars.fsy"
SynPat.Const(fst _1, snd _1)
)
-//# 3643 "src/Compiler/pars.fsy"
+//# 3772 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10411 "pars.fs"
+//# 10693 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3646 "src/Compiler/pars.fsy"
+//# 3775 "src/Compiler/pars.fsy"
SynPat.Const(SynConst.Bool false, lhs parseState)
)
-//# 3646 "src/Compiler/pars.fsy"
+//# 3775 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10421 "pars.fs"
+//# 10703 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3649 "src/Compiler/pars.fsy"
+//# 3778 "src/Compiler/pars.fsy"
SynPat.Const(SynConst.Bool true, lhs parseState)
)
-//# 3649 "src/Compiler/pars.fsy"
+//# 3778 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10431 "pars.fs"
+//# 10713 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3652 "src/Compiler/pars.fsy"
+//# 3781 "src/Compiler/pars.fsy"
SynPat.Null(lhs parseState)
)
-//# 3652 "src/Compiler/pars.fsy"
+//# 3781 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10441 "pars.fs"
+//# 10723 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenPatternBody in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3655 "src/Compiler/pars.fsy"
+//# 3784 "src/Compiler/pars.fsy"
let m = lhs parseState
SynPat.Paren(_2 m, m)
)
-//# 3655 "src/Compiler/pars.fsy"
+//# 3784 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10454 "pars.fs"
+//# 10736 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenPatternBody in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3659 "src/Compiler/pars.fsy"
+//# 3788 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
let m = rhs2 parseState 1 2
let parenPat = SynPat.Paren(_2 m, m)
patFromParseError parenPat
)
-//# 3659 "src/Compiler/pars.fsy"
+//# 3788 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10469 "pars.fs"
+//# 10751 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3665 "src/Compiler/pars.fsy"
+//# 3794 "src/Compiler/pars.fsy"
let innerPat = patFromParseError (SynPat.Wild(rhs parseState 2))
SynPat.Paren(innerPat, lhs parseState)
)
-//# 3665 "src/Compiler/pars.fsy"
+//# 3794 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10481 "pars.fs"
+//# 10763 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3669 "src/Compiler/pars.fsy"
+//# 3798 "src/Compiler/pars.fsy"
let parenM = rhs parseState 1
reportParseErrorAt parenM (FSComp.SR.parsUnmatchedParen())
let innerPat = patFromParseError (SynPat.Wild parenM.EndRange)
let parenPat = SynPat.Paren(innerPat, parenM)
patFromParseError parenPat
)
-//# 3669 "src/Compiler/pars.fsy"
+//# 3798 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10496 "pars.fs"
+//# 10778 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_tupleParenPatternElements in
let _4 = parseState.GetInput(4) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3676 "src/Compiler/pars.fsy"
+//# 3805 "src/Compiler/pars.fsy"
let pats, commas = _3
SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState)
)
-//# 3676 "src/Compiler/pars.fsy"
+//# 3805 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10509 "pars.fs"
+//# 10791 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_tupleParenPatternElements in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3680 "src/Compiler/pars.fsy"
+//# 3809 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen())
let pats, commas = _3
SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState)
)
-//# 3680 "src/Compiler/pars.fsy"
+//# 3809 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10523 "pars.fs"
+//# 10805 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _4 = parseState.GetInput(4) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3685 "src/Compiler/pars.fsy"
+//# 3814 "src/Compiler/pars.fsy"
(* silent recovery *) SynPat.Wild(lhs parseState)
)
-//# 3685 "src/Compiler/pars.fsy"
+//# 3814 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10534 "pars.fs"
+//# 10816 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3688 "src/Compiler/pars.fsy"
+//# 3817 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen())
SynPat.Wild(lhs parseState)
)
-//# 3688 "src/Compiler/pars.fsy"
+//# 3817 "src/Compiler/pars.fsy"
: 'gentype_atomicPattern));
-//# 10546 "pars.fs"
+//# 10828 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3693 "src/Compiler/pars.fsy"
+//# 3822 "src/Compiler/pars.fsy"
(fun m -> _1)
)
-//# 3693 "src/Compiler/pars.fsy"
+//# 3822 "src/Compiler/pars.fsy"
: 'gentype_parenPatternBody));
-//# 10557 "pars.fs"
+//# 10839 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3696 "src/Compiler/pars.fsy"
+//# 3825 "src/Compiler/pars.fsy"
(fun m -> SynPat.Const(SynConst.Unit, m))
)
-//# 3696 "src/Compiler/pars.fsy"
+//# 3825 "src/Compiler/pars.fsy"
: 'gentype_parenPatternBody));
-//# 10567 "pars.fs"
+//# 10849 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_constrPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3725 "src/Compiler/pars.fsy"
+//# 3854 "src/Compiler/pars.fsy"
SynPat.As(_1, _3, rhs2 parseState 1 3)
)
-//# 3725 "src/Compiler/pars.fsy"
+//# 3854 "src/Compiler/pars.fsy"
+ : 'gentype_parenPattern));
+//# 10861 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3857 "src/Compiler/pars.fsy"
+ let mAs = rhs parseState 2
+ let pat2 = SynPat.Wild(mAs.EndRange)
+ SynPat.As(_1, pat2, rhs2 parseState 1 2)
+ )
+//# 3857 "src/Compiler/pars.fsy"
+ : 'gentype_parenPattern));
+//# 10875 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3862 "src/Compiler/pars.fsy"
+ let mAs = rhs parseState 2
+ let pat2 = SynPat.Wild(mAs.EndRange)
+ reportParseErrorAt mAs (FSComp.SR.parsExpectingPattern ())
+ SynPat.As(_1, pat2, rhs2 parseState 1 2)
+ )
+//# 3862 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10579 "pars.fs"
+//# 10889 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
+ let _2 = parseState.GetInput(2) :?> 'gentype_barCanBeRightBeforeNull in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3728 "src/Compiler/pars.fsy"
+//# 3868 "src/Compiler/pars.fsy"
let mBar = rhs parseState 2
SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar })
)
-//# 3728 "src/Compiler/pars.fsy"
+//# 3868 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10592 "pars.fs"
+//# 10903 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3732 "src/Compiler/pars.fsy"
+//# 3872 "src/Compiler/pars.fsy"
let pats, commas = _1
let pats, commas = normalizeTuplePat pats commas
let m = (rhs parseState 1, pats) ||> unionRangeWithListBy (fun p -> p.Range)
SynPat.Tuple(false, List.rev pats, List.rev commas, m)
)
-//# 3732 "src/Compiler/pars.fsy"
+//# 3872 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10606 "pars.fs"
+//# 10917 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_conjParenPatternElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3738 "src/Compiler/pars.fsy"
+//# 3878 "src/Compiler/pars.fsy"
SynPat.Ands(List.rev _1, rhs2 parseState 1 3)
)
-//# 3738 "src/Compiler/pars.fsy"
+//# 3878 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10617 "pars.fs"
+//# 10928 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_typeWithTypeConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3741 "src/Compiler/pars.fsy"
+//# 3881 "src/Compiler/pars.fsy"
let mLhs = lhs parseState
SynPat.Typed(_1, _3, mLhs)
)
-//# 3741 "src/Compiler/pars.fsy"
+//# 3881 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10630 "pars.fs"
+//# 10941 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3745 "src/Compiler/pars.fsy"
+//# 3885 "src/Compiler/pars.fsy"
let mColon = rhs parseState 2
+ if not _3 then
+ reportParseErrorAt mColon (FSComp.SR.parsExpectingPattern ())
let ty = SynType.FromParseError(mColon.EndRange)
SynPat.Typed(_1, ty, unionRanges _1.Range mColon)
)
-//# 3745 "src/Compiler/pars.fsy"
+//# 3885 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10644 "pars.fs"
+//# 10957 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3750 "src/Compiler/pars.fsy"
+//# 3892 "src/Compiler/pars.fsy"
let mLhs = lhs parseState
SynPat.Attrib(_2, _1, mLhs)
)
-//# 3750 "src/Compiler/pars.fsy"
+//# 3892 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10657 "pars.fs"
+//# 10970 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3754 "src/Compiler/pars.fsy"
+//# 3896 "src/Compiler/pars.fsy"
let mColonColon = rhs parseState 2
SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon })
)
-//# 3754 "src/Compiler/pars.fsy"
+//# 3896 "src/Compiler/pars.fsy"
+ : 'gentype_parenPattern));
+//# 10983 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
+ let _3 = parseState.GetInput(3) :?> 'gentype_recover in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3900 "src/Compiler/pars.fsy"
+ let mColonColon = rhs parseState 2
+ if not _3 then
+ reportParseErrorAt mColonColon (FSComp.SR.parsExpectingPattern ())
+ let pat2 = SynPat.Wild(mColonColon.EndRange)
+ SynPat.ListCons(_1, pat2, rhs2 parseState 1 2, { ColonColonRange = mColonColon })
+ )
+//# 3900 "src/Compiler/pars.fsy"
+ : 'gentype_parenPattern));
+//# 10999 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 3907 "src/Compiler/pars.fsy"
+ let mColonColon = rhs parseState 2
+ reportParseErrorAt mColonColon (FSComp.SR.parsExpectingPattern ())
+ let pat2 = SynPat.Wild(mColonColon.EndRange)
+ SynPat.ListCons(_1, pat2, rhs2 parseState 1 2, { ColonColonRange = mColonColon })
+ )
+//# 3907 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10670 "pars.fs"
+//# 11013 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_constrPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3757 "src/Compiler/pars.fsy"
+//# 3912 "src/Compiler/pars.fsy"
_1
)
-//# 3757 "src/Compiler/pars.fsy"
+//# 3912 "src/Compiler/pars.fsy"
: 'gentype_parenPattern));
-//# 10681 "pars.fs"
+//# 11024 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3761 "src/Compiler/pars.fsy"
+//# 3916 "src/Compiler/pars.fsy"
let pats, commas = _1
let mComma = rhs parseState 2
_3 :: pats, (mComma :: commas)
)
-//# 3761 "src/Compiler/pars.fsy"
+//# 3916 "src/Compiler/pars.fsy"
: 'gentype_tupleParenPatternElements));
-//# 10695 "pars.fs"
+//# 11038 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3766 "src/Compiler/pars.fsy"
+//# 3921 "src/Compiler/pars.fsy"
let mComma = rhs parseState 2
[_3; _1], [mComma]
)
-//# 3766 "src/Compiler/pars.fsy"
+//# 3921 "src/Compiler/pars.fsy"
: 'gentype_tupleParenPatternElements));
-//# 10708 "pars.fs"
+//# 11051 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3770 "src/Compiler/pars.fsy"
+//# 3925 "src/Compiler/pars.fsy"
let pats, commas = _1
let commaRange = rhs parseState 2
reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern())
let pat2 = SynPat.Wild(commaRange.EndRange)
pat2 :: pats, (commaRange :: commas)
)
-//# 3770 "src/Compiler/pars.fsy"
+//# 3925 "src/Compiler/pars.fsy"
: 'gentype_tupleParenPatternElements));
-//# 10724 "pars.fs"
+//# 11067 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3777 "src/Compiler/pars.fsy"
+//# 3932 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 2
reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern())
let pat2 = SynPat.Wild(commaRange.EndRange)
[pat2; _1], [commaRange]
)
-//# 3777 "src/Compiler/pars.fsy"
+//# 3932 "src/Compiler/pars.fsy"
: 'gentype_tupleParenPatternElements));
-//# 10739 "pars.fs"
+//# 11082 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3783 "src/Compiler/pars.fsy"
+//# 3938 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 1
reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern())
let pat1 = SynPat.Wild(commaRange.StartRange)
[_2; pat1], [commaRange]
)
-//# 3783 "src/Compiler/pars.fsy"
+//# 3938 "src/Compiler/pars.fsy"
: 'gentype_tupleParenPatternElements));
-//# 10753 "pars.fs"
+//# 11096 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3789 "src/Compiler/pars.fsy"
+//# 3944 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 1
if not _2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedPatternAfterToken ())
let pat1 = SynPat.Wild(commaRange.StartRange)
let pat2 = SynPat.Wild(commaRange.EndRange)
[pat2; pat1], [commaRange]
)
-//# 3789 "src/Compiler/pars.fsy"
+//# 3944 "src/Compiler/pars.fsy"
: 'gentype_tupleParenPatternElements));
-//# 10768 "pars.fs"
+//# 11111 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_conjParenPatternElements in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3797 "src/Compiler/pars.fsy"
+//# 3952 "src/Compiler/pars.fsy"
_3 :: _1
)
-//# 3797 "src/Compiler/pars.fsy"
+//# 3952 "src/Compiler/pars.fsy"
: 'gentype_conjParenPatternElements));
-//# 10780 "pars.fs"
+//# 11123 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3800 "src/Compiler/pars.fsy"
+//# 3955 "src/Compiler/pars.fsy"
_3 :: _1 :: []
)
-//# 3800 "src/Compiler/pars.fsy"
+//# 3955 "src/Compiler/pars.fsy"
: 'gentype_conjParenPatternElements));
-//# 10792 "pars.fs"
+//# 11135 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recordPatternElement in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3804 "src/Compiler/pars.fsy"
+//# 3959 "src/Compiler/pars.fsy"
[_1]
)
-//# 3804 "src/Compiler/pars.fsy"
+//# 3959 "src/Compiler/pars.fsy"
: 'gentype_recordPatternElementsAux));
-//# 10804 "pars.fs"
+//# 11147 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recordPatternElement in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -10809,77 +11152,77 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3807 "src/Compiler/pars.fsy"
+//# 3962 "src/Compiler/pars.fsy"
_1 :: _3
)
-//# 3807 "src/Compiler/pars.fsy"
+//# 3962 "src/Compiler/pars.fsy"
: 'gentype_recordPatternElementsAux));
-//# 10817 "pars.fs"
+//# 11160 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3811 "src/Compiler/pars.fsy"
+//# 3966 "src/Compiler/pars.fsy"
let mPath = _1.Range
let mEquals = rhs parseState 2
let mPat = _3.Range
List.frontAndBack _1.LongIdent, Some mEquals, _3
)
-//# 3811 "src/Compiler/pars.fsy"
+//# 3966 "src/Compiler/pars.fsy"
: 'gentype_recordPatternElement));
-//# 10832 "pars.fs"
+//# 11175 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3817 "src/Compiler/pars.fsy"
+//# 3972 "src/Compiler/pars.fsy"
let mPath = _1.Range
let mEquals = rhs parseState 2
let pat = SynPat.Wild(mEquals.EndRange)
List.frontAndBack _1.LongIdent, Some mEquals, pat
)
-//# 3817 "src/Compiler/pars.fsy"
+//# 3972 "src/Compiler/pars.fsy"
: 'gentype_recordPatternElement));
-//# 10847 "pars.fs"
+//# 11190 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3823 "src/Compiler/pars.fsy"
+//# 3978 "src/Compiler/pars.fsy"
let pat = SynPat.Wild(_1.Range.EndRange)
List.frontAndBack _1.LongIdent, None, pat
)
-//# 3823 "src/Compiler/pars.fsy"
+//# 3978 "src/Compiler/pars.fsy"
: 'gentype_recordPatternElement));
-//# 10860 "pars.fs"
+//# 11203 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3828 "src/Compiler/pars.fsy"
+//# 3983 "src/Compiler/pars.fsy"
[]
)
-//# 3828 "src/Compiler/pars.fsy"
+//# 3983 "src/Compiler/pars.fsy"
: 'gentype_listPatternElements));
-//# 10870 "pars.fs"
+//# 11213 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3831 "src/Compiler/pars.fsy"
+//# 3986 "src/Compiler/pars.fsy"
[_1]
)
-//# 3831 "src/Compiler/pars.fsy"
+//# 3986 "src/Compiler/pars.fsy"
: 'gentype_listPatternElements));
-//# 10882 "pars.fs"
+//# 11225 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -10887,180 +11230,180 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3834 "src/Compiler/pars.fsy"
+//# 3989 "src/Compiler/pars.fsy"
_1 :: _3
)
-//# 3834 "src/Compiler/pars.fsy"
+//# 3989 "src/Compiler/pars.fsy"
: 'gentype_listPatternElements));
-//# 10895 "pars.fs"
+//# 11238 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3839 "src/Compiler/pars.fsy"
+//# 3994 "src/Compiler/pars.fsy"
_2
)
-//# 3839 "src/Compiler/pars.fsy"
+//# 3994 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10907 "pars.fs"
+//# 11250 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3842 "src/Compiler/pars.fsy"
+//# 3997 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression())
exprFromParseError _2
)
-//# 3842 "src/Compiler/pars.fsy"
+//# 3997 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10920 "pars.fs"
+//# 11263 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3846 "src/Compiler/pars.fsy"
+//# 4001 "src/Compiler/pars.fsy"
let m = rhs parseState 1
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ())
arbExpr ("typedSequentialExprBlock1", m.EndRange)
)
-//# 3846 "src/Compiler/pars.fsy"
+//# 4001 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10933 "pars.fs"
+//# 11276 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3851 "src/Compiler/pars.fsy"
+//# 4006 "src/Compiler/pars.fsy"
_1
)
-//# 3851 "src/Compiler/pars.fsy"
+//# 4006 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10944 "pars.fs"
+//# 11287 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3856 "src/Compiler/pars.fsy"
+//# 4011 "src/Compiler/pars.fsy"
_2
)
-//# 3856 "src/Compiler/pars.fsy"
+//# 4011 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10956 "pars.fs"
+//# 11299 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3859 "src/Compiler/pars.fsy"
+//# 4014 "src/Compiler/pars.fsy"
let m = rhs parseState 1
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ())
arbExpr ("declExprBlock1", m.EndRange)
)
-//# 3859 "src/Compiler/pars.fsy"
+//# 4014 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10969 "pars.fs"
+//# 11312 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3864 "src/Compiler/pars.fsy"
+//# 4019 "src/Compiler/pars.fsy"
_1
)
-//# 3864 "src/Compiler/pars.fsy"
+//# 4019 "src/Compiler/pars.fsy"
: SynExpr));
-//# 10980 "pars.fs"
+//# 11323 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in
let _2 = parseState.GetInput(2) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3870 "src/Compiler/pars.fsy"
+//# 4025 "src/Compiler/pars.fsy"
fun _ -> _1
)
-//# 3870 "src/Compiler/pars.fsy"
+//# 4025 "src/Compiler/pars.fsy"
: 'gentype_typedSequentialExprBlockR));
-//# 10992 "pars.fs"
+//# 11335 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3873 "src/Compiler/pars.fsy"
+//# 4028 "src/Compiler/pars.fsy"
fun _ -> _1
)
-//# 3873 "src/Compiler/pars.fsy"
+//# 4028 "src/Compiler/pars.fsy"
: 'gentype_typedSequentialExprBlockR));
-//# 11003 "pars.fs"
+//# 11346 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3876 "src/Compiler/pars.fsy"
+//# 4031 "src/Compiler/pars.fsy"
fun (mStart: range) -> arbExpr ("typedSequentialExprBlockR1", mStart.EndRange)
)
-//# 3876 "src/Compiler/pars.fsy"
+//# 4031 "src/Compiler/pars.fsy"
: 'gentype_typedSequentialExprBlockR));
-//# 11014 "pars.fs"
+//# 11357 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_typeWithTypeConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3880 "src/Compiler/pars.fsy"
+//# 4035 "src/Compiler/pars.fsy"
SynExpr.Typed(_1, _3, unionRanges _1.Range _3.Range)
)
-//# 3880 "src/Compiler/pars.fsy"
+//# 4035 "src/Compiler/pars.fsy"
: 'gentype_typedSequentialExpr));
-//# 11026 "pars.fs"
+//# 11369 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3883 "src/Compiler/pars.fsy"
+//# 4038 "src/Compiler/pars.fsy"
let mColon = rhs parseState 2
let ty = SynType.FromParseError(mColon.EndRange)
SynExpr.Typed(_1, ty, unionRanges _1.Range mColon)
)
-//# 3883 "src/Compiler/pars.fsy"
+//# 4038 "src/Compiler/pars.fsy"
: 'gentype_typedSequentialExpr));
-//# 11040 "pars.fs"
+//# 11383 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3888 "src/Compiler/pars.fsy"
+//# 4043 "src/Compiler/pars.fsy"
_1
)
-//# 3888 "src/Compiler/pars.fsy"
+//# 4043 "src/Compiler/pars.fsy"
: 'gentype_typedSequentialExpr));
-//# 11051 "pars.fs"
+//# 11394 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in
let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3892 "src/Compiler/pars.fsy"
+//# 4047 "src/Compiler/pars.fsy"
checkEndOfFileError _2; _1
)
-//# 3892 "src/Compiler/pars.fsy"
+//# 4047 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11063 "pars.fs"
+//# 11406 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
@@ -11068,47 +11411,49 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3896 "src/Compiler/pars.fsy"
- SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, true, _1, _3, unionRanges _1.Range _3.Range)
+//# 4051 "src/Compiler/pars.fsy"
+ let trivia = { SeparatorRange = _2 }
+ SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, true, _1, _3, unionRanges _1.Range _3.Range, trivia)
)
-//# 3896 "src/Compiler/pars.fsy"
+//# 4051 "src/Compiler/pars.fsy"
: 'gentype_sequentialExpr));
-//# 11076 "pars.fs"
+//# 11420 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3899 "src/Compiler/pars.fsy"
+//# 4055 "src/Compiler/pars.fsy"
_1
)
-//# 3899 "src/Compiler/pars.fsy"
+//# 4055 "src/Compiler/pars.fsy"
: 'gentype_sequentialExpr));
-//# 11088 "pars.fs"
+//# 11432 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3902 "src/Compiler/pars.fsy"
+//# 4058 "src/Compiler/pars.fsy"
_1
)
-//# 3902 "src/Compiler/pars.fsy"
+//# 4058 "src/Compiler/pars.fsy"
: 'gentype_sequentialExpr));
-//# 11099 "pars.fs"
+//# 11443 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_sequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3905 "src/Compiler/pars.fsy"
- SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _3, unionRanges _1.Range _3.Range)
+//# 4061 "src/Compiler/pars.fsy"
+ let trivia = { SeparatorRange = Some (rhs parseState 2) }
+ SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _3, unionRanges _1.Range _3.Range, trivia)
)
-//# 3905 "src/Compiler/pars.fsy"
+//# 4061 "src/Compiler/pars.fsy"
: 'gentype_sequentialExpr));
-//# 11111 "pars.fs"
+//# 11456 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExpr in
@@ -11116,18 +11461,19 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3908 "src/Compiler/pars.fsy"
- SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _4, unionRanges _1.Range _4.Range)
+//# 4065 "src/Compiler/pars.fsy"
+ let trivia = { SeparatorRange = Some (rhs parseState 2) }
+ SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _4, unionRanges _1.Range _4.Range, trivia)
)
-//# 3908 "src/Compiler/pars.fsy"
+//# 4065 "src/Compiler/pars.fsy"
: 'gentype_sequentialExpr));
-//# 11124 "pars.fs"
+//# 11470 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3911 "src/Compiler/pars.fsy"
+//# 4069 "src/Compiler/pars.fsy"
let hwlb, m, mIn = _1
let mLetKwd, isUse = match hwlb with (BindingSetPreAttrs(m, _, isUse, _, _)) -> m, isUse
let usedKeyword = if isUse then "use" else "let"
@@ -11135,30 +11481,30 @@ let _fsyacc_reductions = lazy [|
let fauxRange = m.EndRange // zero width range at end of m
mkLocalBindings (m, hwlb, mIn, arbExpr ("seqExpr", fauxRange))
)
-//# 3911 "src/Compiler/pars.fsy"
+//# 4069 "src/Compiler/pars.fsy"
: 'gentype_sequentialExpr));
-//# 11140 "pars.fs"
+//# 11486 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3924 "src/Compiler/pars.fsy"
+//# 4082 "src/Compiler/pars.fsy"
debugPrint("recovering via error"); true
)
-//# 3924 "src/Compiler/pars.fsy"
+//# 4082 "src/Compiler/pars.fsy"
: 'gentype_recover));
-//# 11150 "pars.fs"
+//# 11496 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3927 "src/Compiler/pars.fsy"
+//# 4085 "src/Compiler/pars.fsy"
debugPrint("recovering via EOF"); false
)
-//# 3927 "src/Compiler/pars.fsy"
+//# 4085 "src/Compiler/pars.fsy"
: 'gentype_recover));
-//# 11161 "pars.fs"
+//# 11507 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> SynPat in
@@ -11167,16 +11513,17 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3931 "src/Compiler/pars.fsy"
+//# 4089 "src/Compiler/pars.fsy"
let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5) (* TODO Pretty sure this is wrong *)
let mEquals = rhs parseState 3
let m = unionRanges (rhs parseState 1) _4.Range
let mIn = rhs parseState 5
- SynExprAndBang(spBind, _1, true, _2, _4, m, { EqualsRange = mEquals; InKeyword = Some mIn }) :: _6
+ let trivia = { AndBangKeyword = rhs parseState 1; EqualsRange = mEquals; InKeyword = Some mIn }
+ SynExprAndBang(spBind, _1, true, _2, _4, m, trivia) :: _6
)
-//# 3931 "src/Compiler/pars.fsy"
+//# 4089 "src/Compiler/pars.fsy"
: 'gentype_moreBinders));
-//# 11179 "pars.fs"
+//# 11526 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> SynPat in
@@ -11187,205 +11534,206 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3938 "src/Compiler/pars.fsy"
+//# 4097 "src/Compiler/pars.fsy"
let report, mIn, _ = _5
report "and!" (rhs parseState 1) // report unterminated error
let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5) (* TODO Pretty sure this is wrong *)
let mEquals = rhs parseState 3
let m = unionRanges (rhs parseState 1) _4.Range
- SynExprAndBang(spBind, _1, true, _2, _4, m, { EqualsRange = mEquals; InKeyword = mIn }) :: _7
+ let trivia = { AndBangKeyword = rhs parseState 1; EqualsRange = mEquals; InKeyword = mIn }
+ SynExprAndBang(spBind, _1, true, _2, _4, m, trivia) :: _7
)
-//# 3938 "src/Compiler/pars.fsy"
+//# 4097 "src/Compiler/pars.fsy"
: 'gentype_moreBinders));
-//# 11200 "pars.fs"
+//# 11548 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3946 "src/Compiler/pars.fsy"
+//# 4106 "src/Compiler/pars.fsy"
[]
)
-//# 3946 "src/Compiler/pars.fsy"
+//# 4106 "src/Compiler/pars.fsy"
: 'gentype_moreBinders));
-//# 11210 "pars.fs"
+//# 11558 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in
let _3 = parseState.GetInput(3) :?> 'gentype_typedSequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3950 "src/Compiler/pars.fsy"
+//# 4110 "src/Compiler/pars.fsy"
let mIn = rhs parseState 2 |> Some
mkLocalBindings (unionRanges (rhs2 parseState 1 2) _3.Range, _1, mIn, _3)
)
-//# 3950 "src/Compiler/pars.fsy"
+//# 4110 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11223 "pars.fs"
+//# 11571 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3954 "src/Compiler/pars.fsy"
+//# 4114 "src/Compiler/pars.fsy"
let mIn = rhs parseState 2 |> Some
mkLocalBindings (rhs2 parseState 1 2, _1, mIn, arbExpr ("declExpr1", (rhs parseState 3)))
)
-//# 3954 "src/Compiler/pars.fsy"
+//# 4114 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11235 "pars.fs"
+//# 11583 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3961 "src/Compiler/pars.fsy"
+//# 4121 "src/Compiler/pars.fsy"
let hwlb, m, mIn = _1
mkLocalBindings (unionRanges m _2.Range, hwlb, mIn, _2)
)
-//# 3961 "src/Compiler/pars.fsy"
+//# 4121 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11248 "pars.fs"
+//# 11596 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3965 "src/Compiler/pars.fsy"
+//# 4125 "src/Compiler/pars.fsy"
let hwlb, m, mIn = _1
reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m, _, _, _, _)) -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation())
mkLocalBindings (m, hwlb, mIn, arbExpr ("declExpr2", (rhs parseState 2)))
)
-//# 3965 "src/Compiler/pars.fsy"
+//# 4125 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11261 "pars.fs"
+//# 11609 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3970 "src/Compiler/pars.fsy"
+//# 4130 "src/Compiler/pars.fsy"
let hwlb, m, mIn = _1
mkLocalBindings (unionRanges m _3.Range, hwlb, mIn, _3)
)
-//# 3970 "src/Compiler/pars.fsy"
+//# 4130 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11274 "pars.fs"
+//# 11622 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3974 "src/Compiler/pars.fsy"
+//# 4134 "src/Compiler/pars.fsy"
let hwlb, m, mIn = _1
//reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m, _, _, _, _)) -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation())
mkLocalBindings (unionRanges m (rhs parseState 3), hwlb, mIn, arbExpr ("declExpr3", (rhs parseState 3)))
)
-//# 3974 "src/Compiler/pars.fsy"
+//# 4134 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11287 "pars.fs"
+//# 11635 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteDoBinding in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3979 "src/Compiler/pars.fsy"
+//# 4139 "src/Compiler/pars.fsy"
let (BindingSetPreAttrs(_, _, _, _, m)), e = _1
SynExpr.Do(e, unionRanges (rhs parseState 1).StartRange e.Range)
)
-//# 3979 "src/Compiler/pars.fsy"
+//# 4139 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11299 "pars.fs"
+//# 11647 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_anonMatchingExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3983 "src/Compiler/pars.fsy"
+//# 4143 "src/Compiler/pars.fsy"
_1
)
-//# 3983 "src/Compiler/pars.fsy"
+//# 4143 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11310 "pars.fs"
+//# 11658 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_anonLambdaExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3986 "src/Compiler/pars.fsy"
+//# 4146 "src/Compiler/pars.fsy"
_1
)
-//# 3986 "src/Compiler/pars.fsy"
+//# 4146 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11321 "pars.fs"
+//# 11669 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3989 "src/Compiler/pars.fsy"
+//# 4149 "src/Compiler/pars.fsy"
let mMatch = rhs parseState 1
let mWith, (clauses, mLast) = _3
let spBind = DebugPointAtBinding.Yes(unionRanges mMatch mWith)
let trivia = { MatchKeyword = mMatch; WithKeyword = mWith }
SynExpr.Match(spBind, _2, clauses, unionRanges mMatch mLast, trivia)
)
-//# 3989 "src/Compiler/pars.fsy"
+//# 4149 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11337 "pars.fs"
+//# 11685 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 3996 "src/Compiler/pars.fsy"
+//# 4156 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch())
// Produce approximate expression during error recovery
exprFromParseError _2
)
-//# 3996 "src/Compiler/pars.fsy"
+//# 4156 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11351 "pars.fs"
+//# 11699 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4001 "src/Compiler/pars.fsy"
+//# 4161 "src/Compiler/pars.fsy"
let mMatch = (rhs parseState 1)
let mWith, (clauses, mLast) = _3
let spBind = DebugPointAtBinding.Yes(unionRanges mMatch mWith)
let trivia = { MatchBangKeyword = mMatch; WithKeyword = mWith }
SynExpr.MatchBang(spBind, _2, clauses, unionRanges mMatch mLast, trivia)
)
-//# 4001 "src/Compiler/pars.fsy"
+//# 4161 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11367 "pars.fs"
+//# 11715 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4008 "src/Compiler/pars.fsy"
+//# 4168 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch())
// Produce approximate expression during error recovery
exprFromParseError _2
)
-//# 4008 "src/Compiler/pars.fsy"
+//# 4168 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11381 "pars.fs"
+//# 11729 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in
let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4013 "src/Compiler/pars.fsy"
+//# 4173 "src/Compiler/pars.fsy"
let mTry = rhs parseState 1
let expr = _2 mTry
let spTry = DebugPointAtTry.Yes mTry
@@ -11401,16 +11749,16 @@ let _fsyacc_reductions = lazy [|
WithToEndRange = mWithToLast }
SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia)
)
-//# 4013 "src/Compiler/pars.fsy"
+//# 4173 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11406 "pars.fs"
+//# 11754 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4029 "src/Compiler/pars.fsy"
+//# 4189 "src/Compiler/pars.fsy"
let mTry = rhs parseState 1
let spTry = DebugPointAtTry.Yes mTry
if not _3 then reportParseErrorAt mTry (FSComp.SR.parsUnexpectedEndOfFileTry ())
@@ -11426,15 +11774,15 @@ let _fsyacc_reductions = lazy [|
WithToEndRange = mWhole }
SynExpr.TryWith(expr, [], mWhole, spTry, spWith, trivia)
)
-//# 4029 "src/Compiler/pars.fsy"
+//# 4189 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11431 "pars.fs"
+//# 11779 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4045 "src/Compiler/pars.fsy"
+//# 4205 "src/Compiler/pars.fsy"
let mTry = rhs parseState 1
let mExpr = mTry.EndRange
let expr = arbExpr ("try1", mExpr)
@@ -11452,16 +11800,16 @@ let _fsyacc_reductions = lazy [|
WithToEndRange = mWithToLast }
SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia)
)
-//# 4045 "src/Compiler/pars.fsy"
+//# 4205 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11457 "pars.fs"
+//# 11805 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> range in
let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4063 "src/Compiler/pars.fsy"
+//# 4223 "src/Compiler/pars.fsy"
let mTry = rhs parseState 1
let mExpr = mTry.EndRange
let expr = arbExpr ("try2", mExpr)
@@ -11479,16 +11827,16 @@ let _fsyacc_reductions = lazy [|
WithToEndRange = mWithToLast }
SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia)
)
-//# 4063 "src/Compiler/pars.fsy"
+//# 4223 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11484 "pars.fs"
+//# 11832 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in
let _4 = parseState.GetInput(4) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4081 "src/Compiler/pars.fsy"
+//# 4241 "src/Compiler/pars.fsy"
let mTry = rhs parseState 1
let tryExpr = _2 mTry
let spTry = DebugPointAtTry.Yes mTry
@@ -11499,29 +11847,29 @@ let _fsyacc_reductions = lazy [|
let trivia = { TryKeyword = mTry; FinallyKeyword = mFinally }
SynExpr.TryFinally(tryExpr, finallyExpr, mTryToLast, spTry, spFinally, trivia)
)
-//# 4081 "src/Compiler/pars.fsy"
+//# 4241 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11504 "pars.fs"
+//# 11852 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ifExprCases in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4092 "src/Compiler/pars.fsy"
+//# 4252 "src/Compiler/pars.fsy"
let mIf = rhs parseState 1
_3 _2 mIf false
)
-//# 4092 "src/Compiler/pars.fsy"
+//# 4252 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11517 "pars.fs"
+//# 11865 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4096 "src/Compiler/pars.fsy"
+//# 4256 "src/Compiler/pars.fsy"
errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1))
let ifExpr = _2
let mIf = rhs parseState 1
@@ -11531,15 +11879,15 @@ let _fsyacc_reductions = lazy [|
let trivia = { IfKeyword = mIf; IsElif = false; ThenKeyword = mThen; ElseKeyword = None; IfToThenRange = m }
SynExpr.IfThenElse(_2, arbExpr ("if1", mThen), None, spIfToThen, true, m, trivia)
)
-//# 4096 "src/Compiler/pars.fsy"
+//# 4256 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11536 "pars.fs"
+//# 11884 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4106 "src/Compiler/pars.fsy"
+//# 4266 "src/Compiler/pars.fsy"
errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1))
let m = rhs parseState 1
let mEnd = m.EndRange
@@ -11547,97 +11895,97 @@ let _fsyacc_reductions = lazy [|
let trivia = { IfKeyword = m; IsElif = false; ThenKeyword = m; ElseKeyword = None; IfToThenRange = m }
SynExpr.IfThenElse(arbExpr ("if2", mEnd), arbExpr ("if3", mEnd), None, spIfToThen, true, m, trivia)
)
-//# 4106 "src/Compiler/pars.fsy"
+//# 4266 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11552 "pars.fs"
+//# 11900 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4114 "src/Compiler/pars.fsy"
+//# 4274 "src/Compiler/pars.fsy"
SynExpr.Lazy(_2, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4114 "src/Compiler/pars.fsy"
+//# 4274 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11563 "pars.fs"
+//# 11911 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4117 "src/Compiler/pars.fsy"
+//# 4277 "src/Compiler/pars.fsy"
SynExpr.Assert(_2, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4117 "src/Compiler/pars.fsy"
+//# 4277 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11574 "pars.fs"
+//# 11922 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4120 "src/Compiler/pars.fsy"
+//# 4280 "src/Compiler/pars.fsy"
raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue())
)
-//# 4120 "src/Compiler/pars.fsy"
+//# 4280 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11584 "pars.fs"
+//# 11932 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4123 "src/Compiler/pars.fsy"
+//# 4283 "src/Compiler/pars.fsy"
SynExpr.Lazy(_2, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4123 "src/Compiler/pars.fsy"
+//# 4283 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11595 "pars.fs"
+//# 11943 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4126 "src/Compiler/pars.fsy"
+//# 4286 "src/Compiler/pars.fsy"
SynExpr.Assert(_2, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4126 "src/Compiler/pars.fsy"
+//# 4286 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11606 "pars.fs"
+//# 11954 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4129 "src/Compiler/pars.fsy"
+//# 4289 "src/Compiler/pars.fsy"
raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue())
)
-//# 4129 "src/Compiler/pars.fsy"
+//# 4289 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11616 "pars.fs"
+//# 11964 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_whileExprCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4132 "src/Compiler/pars.fsy"
+//# 4292 "src/Compiler/pars.fsy"
SynExpr.While (_2 (rhs parseState 1))
)
-//# 4132 "src/Compiler/pars.fsy"
+//# 4292 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11627 "pars.fs"
+//# 11975 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_whileExprCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4135 "src/Compiler/pars.fsy"
+//# 4295 "src/Compiler/pars.fsy"
let mKeyword = rhs parseState 1
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.WhileBang mKeyword
SynExpr.WhileBang (_2 mKeyword)
)
-//# 4135 "src/Compiler/pars.fsy"
+//# 4295 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11640 "pars.fs"
+//# 11988 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11646,16 +11994,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4140 "src/Compiler/pars.fsy"
+//# 4300 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let mDo = rhs parseState 3
let spFor = DebugPointAtFor.Yes mFor
let (pat, expr, _, spIn) = _2
SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, _4, unionRanges mFor _5)
)
-//# 4140 "src/Compiler/pars.fsy"
+//# 4300 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11658 "pars.fs"
+//# 12006 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11664,16 +12012,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4147 "src/Compiler/pars.fsy"
+//# 4307 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
if not _5 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ())
let spFor = DebugPointAtFor.Yes mFor
let (pat, expr, _, spIn) = _2
SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, _4, unionRanges mFor _4.Range)
)
-//# 4147 "src/Compiler/pars.fsy"
+//# 4307 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11676 "pars.fs"
+//# 12024 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11681,16 +12029,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4154 "src/Compiler/pars.fsy"
+//# 4314 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let spFor = DebugPointAtFor.Yes mFor
let (pat, expr, _, spIn) = _2
let bodyExpr = arbExpr ("forLoopBody2a", rhs parseState 4)
SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor _5)
)
-//# 4154 "src/Compiler/pars.fsy"
+//# 4314 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11693 "pars.fs"
+//# 12041 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11698,7 +12046,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4161 "src/Compiler/pars.fsy"
+//# 4321 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
if not _4 then reportParseErrorAt mFor (FSComp.SR.parsExpectedExpressionAfterToken ())
let spFor = DebugPointAtFor.Yes mFor
@@ -11707,16 +12055,16 @@ let _fsyacc_reductions = lazy [|
let bodyExpr = arbExpr ("forLoopBody2", mDo.EndRange)
SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mDo)
)
-//# 4161 "src/Compiler/pars.fsy"
+//# 4321 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11712 "pars.fs"
+//# 12060 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4170 "src/Compiler/pars.fsy"
+//# 4330 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let (pat, expr, ok, spIn) = _2
if not _3 then reportParseErrorAt mFor (FSComp.SR.parsForDoExpected ())
@@ -11726,9 +12074,9 @@ let _fsyacc_reductions = lazy [|
let bodyExpr = arbExpr ("forLoopBody1", mForLoopBodyArb)
SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mForLoopBodyArb)
)
-//# 4170 "src/Compiler/pars.fsy"
+//# 4330 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11731 "pars.fs"
+//# 12079 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in
@@ -11736,15 +12084,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4180 "src/Compiler/pars.fsy"
+//# 4340 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let spFor = DebugPointAtFor.Yes mFor
let (pat, expr, _, spIn) = _2
SynExpr.ForEach(spFor, spIn, SeqExprOnly true, true, pat, expr, _4, unionRanges mFor _4.Range)
)
-//# 4180 "src/Compiler/pars.fsy"
+//# 4340 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11747 "pars.fs"
+//# 12095 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11753,15 +12101,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4186 "src/Compiler/pars.fsy"
+//# 4346 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let spFor = DebugPointAtFor.Yes mFor
let (a, b, c, d, exprTo, spTo) = _2
SynExpr.For(spFor, spTo, a, b, c, d, exprTo, _4, unionRanges mFor _5)
)
-//# 4186 "src/Compiler/pars.fsy"
+//# 4346 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11764 "pars.fs"
+//# 12112 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11770,16 +12118,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4192 "src/Compiler/pars.fsy"
+//# 4352 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
if not _5 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ())
let spFor = DebugPointAtFor.Yes mFor
let (a, b, c, d, exprTo, spTo) = _2
SynExpr.For(spFor, spTo, a, b, c, d, exprTo, _4, unionRanges mFor _4.Range)
)
-//# 4192 "src/Compiler/pars.fsy"
+//# 4352 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11782 "pars.fs"
+//# 12130 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11787,7 +12135,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4199 "src/Compiler/pars.fsy"
+//# 4359 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let spFor = DebugPointAtFor.Yes mFor
let (a, b, c, d, exprTo, spTo) = _2
@@ -11795,9 +12143,9 @@ let _fsyacc_reductions = lazy [|
let bodyExpr = arbExpr ("declExpr11", mForLoopBodyArb)
SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor _5)
)
-//# 4199 "src/Compiler/pars.fsy"
+//# 4359 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11800 "pars.fs"
+//# 12148 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
@@ -11805,7 +12153,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4207 "src/Compiler/pars.fsy"
+//# 4367 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
if not _4 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ())
let spFor = DebugPointAtFor.Yes mFor
@@ -11814,16 +12162,16 @@ let _fsyacc_reductions = lazy [|
let bodyExpr = arbExpr ("declExpr11", mDo.EndRange)
SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, rhs2 parseState 1 3)
)
-//# 4207 "src/Compiler/pars.fsy"
+//# 4367 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11819 "pars.fs"
+//# 12167 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4216 "src/Compiler/pars.fsy"
+//# 4376 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
if not _3 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ())
let spFor = DebugPointAtFor.Yes mFor
@@ -11832,9 +12180,9 @@ let _fsyacc_reductions = lazy [|
let bodyExpr = arbExpr ("declExpr11", mExpr.EndRange)
SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor mExpr)
)
-//# 4216 "src/Compiler/pars.fsy"
+//# 4376 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11837 "pars.fs"
+//# 12185 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_doToken in
let _4 = parseState.GetInput(4) :?> SynExpr in
@@ -11842,7 +12190,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4225 "src/Compiler/pars.fsy"
+//# 4385 "src/Compiler/pars.fsy"
let mFor = rhs parseState 1
let spToFake = DebugPointAtInOrTo.Yes mFor
let spFor = DebugPointAtFor.Yes mFor
@@ -11850,28 +12198,28 @@ let _fsyacc_reductions = lazy [|
let expr2 = arbExpr ("endLoopRange1", rhs parseState 3)
SynExpr.For(spFor, spToFake, mkSynId mFor "_loopVar", None, expr1, true, expr2, _4, unionRanges mFor _4.Range)
)
-//# 4225 "src/Compiler/pars.fsy"
+//# 4385 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11855 "pars.fs"
+//# 12203 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4233 "src/Compiler/pars.fsy"
+//# 4393 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsIdentifierExpected())
arbExpr ("declExpr12", (rhs parseState 1))
)
-//# 4233 "src/Compiler/pars.fsy"
+//# 4393 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11867 "pars.fs"
+//# 12215 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in
let _4 = parseState.GetInput(4) :?> 'gentype_doneDeclEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4237 "src/Compiler/pars.fsy"
+//# 4397 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsInOrEqualExpected())
let mFor = rhs parseState 1
let spFor = DebugPointAtFor.Yes mFor
@@ -11880,16 +12228,16 @@ let _fsyacc_reductions = lazy [|
let mForLoopAll = rhs2 parseState 1 4
SynExpr.ForEach(spFor, spInFake, SeqExprOnly false, true, _2, arbExpr ("forLoopCollection", mFor), arbExpr ("forLoopBody3", mForLoopBodyArb), mForLoopAll)
)
-//# 4237 "src/Compiler/pars.fsy"
+//# 4397 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11885 "pars.fs"
+//# 12233 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4246 "src/Compiler/pars.fsy"
+//# 4406 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor())
let mFor = rhs parseState 1
let mIn = rhs parseState 1
@@ -11899,59 +12247,63 @@ let _fsyacc_reductions = lazy [|
let mForLoopAll = rhs2 parseState 1 2
exprFromParseError (SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, _2, arbExpr ("forLoopCollection", mFor), arbExpr ("forLoopBody3", mForLoopBodyArb), mForLoopAll))
)
-//# 4246 "src/Compiler/pars.fsy"
+//# 4406 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11904 "pars.fs"
+//# 12252 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4256 "src/Compiler/pars.fsy"
- SynExpr.YieldOrReturn((_1, not _1), _2, unionRanges (rhs parseState 1) _2.Range)
+//# 4416 "src/Compiler/pars.fsy"
+ let trivia: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = rhs parseState 1 }
+ SynExpr.YieldOrReturn((_1, not _1), _2, (unionRanges (rhs parseState 1) _2.Range), trivia)
)
-//# 4256 "src/Compiler/pars.fsy"
+//# 4416 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11916 "pars.fs"
+//# 12265 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4259 "src/Compiler/pars.fsy"
- SynExpr.YieldOrReturnFrom((_1, not _1), _2, unionRanges (rhs parseState 1) _2.Range)
+//# 4420 "src/Compiler/pars.fsy"
+ let trivia: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = rhs parseState 1 }
+ SynExpr.YieldOrReturnFrom((_1, not _1), _2, (unionRanges (rhs parseState 1) _2.Range), trivia)
)
-//# 4259 "src/Compiler/pars.fsy"
+//# 4420 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11928 "pars.fs"
+//# 12278 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4262 "src/Compiler/pars.fsy"
+//# 4424 "src/Compiler/pars.fsy"
let mYieldAll = rhs parseState 1
- SynExpr.YieldOrReturn((_1, not _1), arbExpr ("yield", mYieldAll), mYieldAll)
+ let trivia: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = rhs parseState 1 }
+ SynExpr.YieldOrReturn((_1, not _1), arbExpr ("yield", mYieldAll), mYieldAll, trivia)
)
-//# 4262 "src/Compiler/pars.fsy"
+//# 4424 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11941 "pars.fs"
+//# 12292 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4266 "src/Compiler/pars.fsy"
+//# 4429 "src/Compiler/pars.fsy"
let mYieldAll = rhs parseState 1
- SynExpr.YieldOrReturnFrom((_1, not _1), arbExpr ("yield!", mYieldAll), mYieldAll)
+ let trivia: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = rhs parseState 1 }
+ SynExpr.YieldOrReturnFrom((_1, not _1), arbExpr ("yield!", mYieldAll), mYieldAll, trivia)
)
-//# 4266 "src/Compiler/pars.fsy"
+//# 4429 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11954 "pars.fs"
+//# 12306 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynPat in
@@ -11962,16 +12314,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4270 "src/Compiler/pars.fsy"
+//# 4434 "src/Compiler/pars.fsy"
let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5)
let mEquals = rhs parseState 3
let m = unionRanges (rhs parseState 1) _8.Range
- let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals }
+ let trivia: SynExprLetOrUseBangTrivia = { LetOrUseBangKeyword = rhs parseState 1 ; EqualsRange = Some mEquals }
SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, _7, _8, m, trivia)
)
-//# 4270 "src/Compiler/pars.fsy"
+//# 4434 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11974 "pars.fs"
+//# 12326 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynPat in
@@ -11983,18 +12335,18 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4277 "src/Compiler/pars.fsy"
+//# 4441 "src/Compiler/pars.fsy"
let report, mIn, _ = _5
report (if _1 = "use" then "use!" else "let!") (rhs parseState 1) // report unterminated error
let spBind = DebugPointAtBinding.Yes(unionRanges (rhs parseState 1) _4.Range)
let mEquals = rhs parseState 3
let m = unionRanges (rhs parseState 1) _8.Range
- let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals }
+ let trivia: SynExprLetOrUseBangTrivia = { LetOrUseBangKeyword = rhs parseState 1 ; EqualsRange = Some mEquals }
SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, _7, _8, m, trivia)
)
-//# 4277 "src/Compiler/pars.fsy"
+//# 4441 "src/Compiler/pars.fsy"
: SynExpr));
-//# 11997 "pars.fs"
+//# 12349 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynPat in
@@ -12004,18 +12356,18 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4286 "src/Compiler/pars.fsy"
+//# 4450 "src/Compiler/pars.fsy"
// error recovery that allows intellisense when writing incomplete computation expressions
let spBind = DebugPointAtBinding.Yes(unionRanges (rhs parseState 1) _4.Range)
let mEquals = rhs parseState 3
let mAll = unionRanges (rhs parseState 1) (rhs parseState 7)
let m = _4.Range.EndRange // zero-width range
- let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals }
+ let trivia: SynExprLetOrUseBangTrivia = { LetOrUseBangKeyword = rhs parseState 1 ; EqualsRange = Some mEquals }
SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, [], SynExpr.ImplicitZero m, mAll, trivia)
)
-//# 4286 "src/Compiler/pars.fsy"
+//# 4450 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12018 "pars.fs"
+//# 12370 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in
@@ -12023,218 +12375,222 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4295 "src/Compiler/pars.fsy"
+//# 4459 "src/Compiler/pars.fsy"
let spBind = DebugPointAtBinding.NoneAtDo
- let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = None }
- SynExpr.LetOrUseBang(spBind, false, true, SynPat.Const(SynConst.Unit, _2.Range), _2, [], _5, unionRanges (rhs parseState 1) _5.Range, trivia)
+ let trivia: SynExprDoBangTrivia = { DoBangKeyword = rhs parseState 1 }
+ let m = unionRanges (rhs parseState 1) _5.Range
+ SynExpr.DoBang(_2, m, trivia)
)
-//# 4295 "src/Compiler/pars.fsy"
+//# 4459 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12033 "pars.fs"
+//# 12386 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_hardwhiteDefnBindingsTerminator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4300 "src/Compiler/pars.fsy"
- SynExpr.DoBang(_2, unionRanges (rhs parseState 1) _2.Range)
+//# 4465 "src/Compiler/pars.fsy"
+ let trivia: SynExprDoBangTrivia = { DoBangKeyword = rhs parseState 1 }
+ let m = unionRanges (rhs parseState 1) _2.Range
+ SynExpr.DoBang(_2, m, trivia)
)
-//# 4300 "src/Compiler/pars.fsy"
+//# 4465 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12045 "pars.fs"
+//# 12400 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4303 "src/Compiler/pars.fsy"
+//# 4470 "src/Compiler/pars.fsy"
SynExpr.Fixed(_2, (unionRanges (rhs parseState 1) _2.Range))
)
-//# 4303 "src/Compiler/pars.fsy"
+//# 4470 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12056 "pars.fs"
+//# 12411 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4306 "src/Compiler/pars.fsy"
+//# 4473 "src/Compiler/pars.fsy"
errorR(Error(FSComp.SR.parsArrowUseIsLimited(), lhs parseState))
let mArrow = rhs parseState 1
let expr = _2 mArrow
- SynExpr.YieldOrReturn((true, true), expr, (unionRanges mArrow expr.Range))
+ let trivia: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = rhs parseState 1 }
+ SynExpr.YieldOrReturn((true, true), expr, (unionRanges mArrow expr.Range), trivia)
)
-//# 4306 "src/Compiler/pars.fsy"
+//# 4473 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12070 "pars.fs"
+//# 12426 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4312 "src/Compiler/pars.fsy"
+//# 4480 "src/Compiler/pars.fsy"
SynExpr.TypeTest(_1, _3, unionRanges _1.Range _3.Range)
)
-//# 4312 "src/Compiler/pars.fsy"
+//# 4480 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12082 "pars.fs"
+//# 12438 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4315 "src/Compiler/pars.fsy"
+//# 4483 "src/Compiler/pars.fsy"
let mColon = rhs parseState 2
let ty = SynType.FromParseError(mColon.EndRange)
SynExpr.TypeTest(_1, ty, unionRanges _1.Range mColon)
)
-//# 4315 "src/Compiler/pars.fsy"
+//# 4483 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12096 "pars.fs"
+//# 12452 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4320 "src/Compiler/pars.fsy"
+//# 4488 "src/Compiler/pars.fsy"
SynExpr.Upcast(_1, _3, unionRanges _1.Range _3.Range)
)
-//# 4320 "src/Compiler/pars.fsy"
+//# 4488 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12108 "pars.fs"
+//# 12464 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4323 "src/Compiler/pars.fsy"
+//# 4491 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
let ty = SynType.FromParseError(mOp.EndRange)
SynExpr.Upcast(_1, ty, unionRanges _1.Range mOp)
)
-//# 4323 "src/Compiler/pars.fsy"
+//# 4491 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12122 "pars.fs"
+//# 12478 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4328 "src/Compiler/pars.fsy"
+//# 4496 "src/Compiler/pars.fsy"
SynExpr.Downcast(_1, _3, unionRanges _1.Range _3.Range)
)
-//# 4328 "src/Compiler/pars.fsy"
+//# 4496 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12134 "pars.fs"
+//# 12490 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4331 "src/Compiler/pars.fsy"
+//# 4499 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
let ty = SynType.FromParseError(mOp.EndRange)
SynExpr.Downcast(_1, ty, unionRanges _1.Range mOp)
)
-//# 4331 "src/Compiler/pars.fsy"
+//# 4499 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12148 "pars.fs"
+//# 12504 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4336 "src/Compiler/pars.fsy"
+//# 4504 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 ":=" _3
)
-//# 4336 "src/Compiler/pars.fsy"
+//# 4504 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12160 "pars.fs"
+//# 12516 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4339 "src/Compiler/pars.fsy"
+//# 4507 "src/Compiler/pars.fsy"
mkSynAssign _1 _3
)
-//# 4339 "src/Compiler/pars.fsy"
+//# 4507 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12172 "pars.fs"
+//# 12528 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr list * range list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4342 "src/Compiler/pars.fsy"
+//# 4510 "src/Compiler/pars.fsy"
let exprs, commas = _1
let m = unionRanges exprs.Head.Range (List.last exprs).Range
SynExpr.Tuple(false, List.rev exprs, List.rev commas, m)
)
-//# 4342 "src/Compiler/pars.fsy"
+//# 4510 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12185 "pars.fs"
+//# 12541 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4347 "src/Compiler/pars.fsy"
+//# 4515 "src/Compiler/pars.fsy"
SynExpr.JoinIn(_1, rhs parseState 2, _3, unionRanges _1.Range _3.Range)
)
-//# 4347 "src/Compiler/pars.fsy"
+//# 4515 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12197 "pars.fs"
+//# 12553 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4350 "src/Compiler/pars.fsy"
+//# 4518 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "in")
mkSynInfix mOp _1 "@in" (arbExpr ("declExprInfixJoinIn", mOp.EndRange))
)
-//# 4350 "src/Compiler/pars.fsy"
+//# 4518 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12211 "pars.fs"
+//# 12567 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4355 "src/Compiler/pars.fsy"
+//# 4523 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "||" _3
)
-//# 4355 "src/Compiler/pars.fsy"
+//# 4523 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12223 "pars.fs"
+//# 12579 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4358 "src/Compiler/pars.fsy"
+//# 4526 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "||")
mkSynInfix mOp _1 "||" (arbExpr ("declExprInfixBarBar", mOp.EndRange))
)
-//# 4358 "src/Compiler/pars.fsy"
+//# 4526 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12237 "pars.fs"
+//# 12593 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12242,12 +12598,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4363 "src/Compiler/pars.fsy"
+//# 4531 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4363 "src/Compiler/pars.fsy"
+//# 4531 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12250 "pars.fs"
+//# 12606 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12255,91 +12611,91 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4366 "src/Compiler/pars.fsy"
+//# 4534 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixBarOp", mOp.EndRange))
)
-//# 4366 "src/Compiler/pars.fsy"
+//# 4534 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12265 "pars.fs"
+//# 12621 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4371 "src/Compiler/pars.fsy"
+//# 4539 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "or" _3
)
-//# 4371 "src/Compiler/pars.fsy"
+//# 4539 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12277 "pars.fs"
+//# 12633 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4374 "src/Compiler/pars.fsy"
+//# 4542 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression "or")
mkSynInfix (rhs parseState 2) _1 "or" (arbExpr ("declExprInfixOr", (rhs parseState 3).StartRange))
)
-//# 4374 "src/Compiler/pars.fsy"
+//# 4542 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12290 "pars.fs"
+//# 12646 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4378 "src/Compiler/pars.fsy"
+//# 4546 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "&" _3
)
-//# 4378 "src/Compiler/pars.fsy"
+//# 4546 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12302 "pars.fs"
+//# 12658 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4381 "src/Compiler/pars.fsy"
+//# 4549 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&")
mkSynInfix mOp _1 "&" (arbExpr ("declExprInfixAmp", mOp.EndRange))
)
-//# 4381 "src/Compiler/pars.fsy"
+//# 4549 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12316 "pars.fs"
+//# 12672 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4386 "src/Compiler/pars.fsy"
+//# 4554 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "&&" _3
)
-//# 4386 "src/Compiler/pars.fsy"
+//# 4554 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12328 "pars.fs"
+//# 12684 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4389 "src/Compiler/pars.fsy"
+//# 4557 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&&")
mkSynInfix mOp _1 "&&" (arbExpr ("declExprInfixAmpAmp", mOp.EndRange))
)
-//# 4389 "src/Compiler/pars.fsy"
+//# 4557 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12342 "pars.fs"
+//# 12698 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12347,12 +12703,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4394 "src/Compiler/pars.fsy"
+//# 4562 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4394 "src/Compiler/pars.fsy"
+//# 4562 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12355 "pars.fs"
+//# 12711 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12360,40 +12716,40 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4397 "src/Compiler/pars.fsy"
+//# 4565 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixAmpOp", (rhs parseState 3).StartRange))
)
-//# 4397 "src/Compiler/pars.fsy"
+//# 4565 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12370 "pars.fs"
+//# 12726 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4402 "src/Compiler/pars.fsy"
+//# 4570 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "=" _3
)
-//# 4402 "src/Compiler/pars.fsy"
+//# 4570 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12382 "pars.fs"
+//# 12738 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4405 "src/Compiler/pars.fsy"
+//# 4573 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "=")
mkSynInfix mOp _1 "=" (arbExpr ("declExprInfixEquals", mOp.EndRange))
)
-//# 4405 "src/Compiler/pars.fsy"
+//# 4573 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12396 "pars.fs"
+//# 12752 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12401,12 +12757,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4410 "src/Compiler/pars.fsy"
+//# 4578 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4410 "src/Compiler/pars.fsy"
+//# 4578 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12409 "pars.fs"
+//# 12765 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12414,40 +12770,40 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4413 "src/Compiler/pars.fsy"
+//# 4581 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfix", mOp.EndRange))
)
-//# 4413 "src/Compiler/pars.fsy"
+//# 4581 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12424 "pars.fs"
+//# 12780 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4418 "src/Compiler/pars.fsy"
+//# 4586 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "$" _3
)
-//# 4418 "src/Compiler/pars.fsy"
+//# 4586 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12436 "pars.fs"
+//# 12792 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4421 "src/Compiler/pars.fsy"
+//# 4589 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "$")
mkSynInfix mOp _1 "$" (arbExpr ("declExprInfixDollar", mOp.EndRange))
)
-//# 4421 "src/Compiler/pars.fsy"
+//# 4589 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12450 "pars.fs"
+//# 12806 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> bool in
@@ -12455,12 +12811,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4426 "src/Compiler/pars.fsy"
+//# 4594 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "<" _3
)
-//# 4426 "src/Compiler/pars.fsy"
+//# 4594 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12463 "pars.fs"
+//# 12819 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> bool in
@@ -12468,14 +12824,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4429 "src/Compiler/pars.fsy"
+//# 4597 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "<")
mkSynInfix mOp _1 "<" (arbExpr ("declExprInfixLess", mOp.EndRange))
)
-//# 4429 "src/Compiler/pars.fsy"
+//# 4597 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12478 "pars.fs"
+//# 12834 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> bool in
@@ -12483,12 +12839,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4434 "src/Compiler/pars.fsy"
+//# 4602 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 ">" _3
)
-//# 4434 "src/Compiler/pars.fsy"
+//# 4602 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12491 "pars.fs"
+//# 12847 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> bool in
@@ -12496,14 +12852,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4437 "src/Compiler/pars.fsy"
+//# 4605 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression ">")
mkSynInfix mOp _1 ">" (arbExpr ("declExprInfixGreater", mOp.EndRange))
)
-//# 4437 "src/Compiler/pars.fsy"
+//# 4605 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12506 "pars.fs"
+//# 12862 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12511,12 +12867,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4442 "src/Compiler/pars.fsy"
+//# 4610 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4442 "src/Compiler/pars.fsy"
+//# 4610 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12519 "pars.fs"
+//# 12875 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12524,14 +12880,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4445 "src/Compiler/pars.fsy"
+//# 4613 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfix", mOp.EndRange))
)
-//# 4445 "src/Compiler/pars.fsy"
+//# 4613 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12534 "pars.fs"
+//# 12890 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12539,12 +12895,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4450 "src/Compiler/pars.fsy"
+//# 4618 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4450 "src/Compiler/pars.fsy"
+//# 4618 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12547 "pars.fs"
+//# 12903 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12552,37 +12908,37 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4453 "src/Compiler/pars.fsy"
+//# 4621 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixPercent", mOp.EndRange))
)
-//# 4453 "src/Compiler/pars.fsy"
+//# 4621 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12562 "pars.fs"
+//# 12918 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4458 "src/Compiler/pars.fsy"
+//# 4626 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
let m = unionRanges _1.Range _3.Range
let tupExpr = SynExpr.Tuple(false, [_1; _3], [mOp], m)
let identExpr = mkSynOperator mOp "::"
SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, m)
)
-//# 4458 "src/Compiler/pars.fsy"
+//# 4626 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12578 "pars.fs"
+//# 12934 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4465 "src/Compiler/pars.fsy"
+//# 4633 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
let m = unionRanges _1.Range mOp
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "::")
@@ -12590,9 +12946,9 @@ let _fsyacc_reductions = lazy [|
let tupExpr = SynExpr.Tuple(false, [_1; (arbExpr ("declExprInfixColonColon", mOp.EndRange))], [mOp], m)
SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, m)
)
-//# 4465 "src/Compiler/pars.fsy"
+//# 4633 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12595 "pars.fs"
+//# 12951 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12600,12 +12956,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4473 "src/Compiler/pars.fsy"
+//# 4641 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4473 "src/Compiler/pars.fsy"
+//# 4641 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12608 "pars.fs"
+//# 12964 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12613,66 +12969,66 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4476 "src/Compiler/pars.fsy"
+//# 4644 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixPlusMinus", mOp.EndRange))
)
-//# 4476 "src/Compiler/pars.fsy"
+//# 4644 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12623 "pars.fs"
+//# 12979 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4481 "src/Compiler/pars.fsy"
+//# 4649 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "-" _3
)
-//# 4481 "src/Compiler/pars.fsy"
+//# 4649 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12635 "pars.fs"
+//# 12991 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4484 "src/Compiler/pars.fsy"
+//# 4652 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "-")
mkSynInfix mOp _1 "-" (arbExpr ("declExprInfixMinus", mOp.EndRange))
)
-//# 4484 "src/Compiler/pars.fsy"
+//# 4652 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12649 "pars.fs"
+//# 13005 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4489 "src/Compiler/pars.fsy"
+//# 4657 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 "*" _3
)
-//# 4489 "src/Compiler/pars.fsy"
+//# 4657 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12661 "pars.fs"
+//# 13017 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4492 "src/Compiler/pars.fsy"
+//# 4660 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "*")
mkSynInfix mOp _1 "*" (arbExpr ("declExprInfixStar", mOp.EndRange))
)
-//# 4492 "src/Compiler/pars.fsy"
+//# 4660 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12675 "pars.fs"
+//# 13031 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12680,12 +13036,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4497 "src/Compiler/pars.fsy"
+//# 4665 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4497 "src/Compiler/pars.fsy"
+//# 4665 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12688 "pars.fs"
+//# 13044 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12693,14 +13049,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4500 "src/Compiler/pars.fsy"
+//# 4668 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixStarDivMod", mOp.EndRange))
)
-//# 4500 "src/Compiler/pars.fsy"
+//# 4668 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12703 "pars.fs"
+//# 13059 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12708,12 +13064,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4505 "src/Compiler/pars.fsy"
+//# 4673 "src/Compiler/pars.fsy"
mkSynInfix (rhs parseState 2) _1 _2 _3
)
-//# 4505 "src/Compiler/pars.fsy"
+//# 4673 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12716 "pars.fs"
+//# 13072 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -12721,76 +13077,76 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4508 "src/Compiler/pars.fsy"
+//# 4676 "src/Compiler/pars.fsy"
let mOp = rhs parseState 2
reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2)
mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixStarStar", mOp.EndRange))
)
-//# 4508 "src/Compiler/pars.fsy"
+//# 4676 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12731 "pars.fs"
+//# 13087 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4513 "src/Compiler/pars.fsy"
+//# 4681 "src/Compiler/pars.fsy"
let wholem = rhs2 parseState 1 3
let mOperator = rhs parseState 2
SynExpr.IndexRange(Some _1, mOperator, Some _3, rhs parseState 1, rhs parseState 3, wholem)
)
-//# 4513 "src/Compiler/pars.fsy"
+//# 4681 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12745 "pars.fs"
+//# 13101 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4518 "src/Compiler/pars.fsy"
+//# 4686 "src/Compiler/pars.fsy"
let wholem = rhs2 parseState 1 2
let mOperator = rhs parseState 2
SynExpr.IndexRange(Some _1, mOperator, None, rhs parseState 1, mOperator, wholem)
)
-//# 4518 "src/Compiler/pars.fsy"
+//# 4686 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12758 "pars.fs"
+//# 13114 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4523 "src/Compiler/pars.fsy"
+//# 4691 "src/Compiler/pars.fsy"
let wholem = rhs2 parseState 1 2
let mOperator = rhs parseState 1
SynExpr.IndexRange(None, mOperator, Some _2, mOperator, rhs parseState 2, wholem)
)
-//# 4523 "src/Compiler/pars.fsy"
+//# 4691 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12771 "pars.fs"
+//# 13127 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4528 "src/Compiler/pars.fsy"
+//# 4696 "src/Compiler/pars.fsy"
let m = rhs parseState 1
SynExpr.IndexRange(None, m, None, m, m, m)
)
-//# 4528 "src/Compiler/pars.fsy"
+//# 4696 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12782 "pars.fs"
+//# 13138 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4531 "src/Compiler/pars.fsy"
+//# 4699 "src/Compiler/pars.fsy"
_1
)
-//# 4531 "src/Compiler/pars.fsy"
+//# 4699 "src/Compiler/pars.fsy"
: SynExpr));
-//# 12793 "pars.fs"
+//# 13149 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_doToken in
@@ -12799,16 +13155,16 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4535 "src/Compiler/pars.fsy"
+//# 4703 "src/Compiler/pars.fsy"
fun mKeyword ->
let mWhileHeader = unionRanges mKeyword _1.Range
let spWhile = DebugPointAtWhile.Yes mWhileHeader
let mWhileAll = unionRanges mKeyword _4
spWhile, _1, _3, mWhileAll
)
-//# 4535 "src/Compiler/pars.fsy"
+//# 4703 "src/Compiler/pars.fsy"
: 'gentype_whileExprCore));
-//# 12811 "pars.fs"
+//# 13167 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_doToken in
@@ -12817,7 +13173,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4543 "src/Compiler/pars.fsy"
+//# 4711 "src/Compiler/pars.fsy"
fun mKeyword ->
if not _4 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ())
let mWhileHeader = unionRanges mKeyword _1.Range
@@ -12825,9 +13181,9 @@ let _fsyacc_reductions = lazy [|
let mWhileAll = unionRanges mKeyword _3.Range
spWhile, _1, _3, mWhileAll
)
-//# 4543 "src/Compiler/pars.fsy"
+//# 4711 "src/Compiler/pars.fsy"
: 'gentype_whileExprCore));
-//# 12830 "pars.fs"
+//# 13186 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_doToken in
@@ -12835,7 +13191,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4552 "src/Compiler/pars.fsy"
+//# 4720 "src/Compiler/pars.fsy"
let mWhileBodyArb = rhs parseState 3
fun mKeyword ->
@@ -12845,16 +13201,16 @@ let _fsyacc_reductions = lazy [|
let bodyArb = arbExpr ("whileBody1", mWhileBodyArb)
spWhile, _1, bodyArb, mWhileAll
)
-//# 4552 "src/Compiler/pars.fsy"
+//# 4720 "src/Compiler/pars.fsy"
: 'gentype_whileExprCore));
-//# 12850 "pars.fs"
+//# 13206 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4563 "src/Compiler/pars.fsy"
+//# 4731 "src/Compiler/pars.fsy"
fun mKeyword ->
reportParseErrorAt mKeyword (FSComp.SR.parsWhileDoExpected())
let mWhileHeader = unionRanges mKeyword _1.Range
@@ -12863,15 +13219,15 @@ let _fsyacc_reductions = lazy [|
let bodyArb = arbExpr ("whileBody2", _1.Range.EndRange)
spWhile, _1, bodyArb, mWhileAll
)
-//# 4563 "src/Compiler/pars.fsy"
+//# 4731 "src/Compiler/pars.fsy"
: 'gentype_whileExprCore));
-//# 12868 "pars.fs"
+//# 13224 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4573 "src/Compiler/pars.fsy"
+//# 4741 "src/Compiler/pars.fsy"
fun mKeyword ->
if not _1 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ())
let spWhile = DebugPointAtWhile.Yes mKeyword
@@ -12880,15 +13236,15 @@ let _fsyacc_reductions = lazy [|
spWhile, expr1, expr2, mKeyword
)
-//# 4573 "src/Compiler/pars.fsy"
+//# 4741 "src/Compiler/pars.fsy"
: 'gentype_whileExprCore));
-//# 12885 "pars.fs"
+//# 13241 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_doneDeclEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4582 "src/Compiler/pars.fsy"
+//# 4750 "src/Compiler/pars.fsy"
let mWhileBodyArb = rhs parseState 1
fun mKeyword ->
@@ -12899,150 +13255,169 @@ let _fsyacc_reductions = lazy [|
spWhile, expr1, expr2, mWhileAll
)
-//# 4582 "src/Compiler/pars.fsy"
+//# 4750 "src/Compiler/pars.fsy"
: 'gentype_whileExprCore));
-//# 12904 "pars.fs"
+//# 13260 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4594 "src/Compiler/pars.fsy"
+//# 4762 "src/Compiler/pars.fsy"
let m = rhs parseState 1
SynExpr.Ident(Ident(_1, m))
)
-//# 4594 "src/Compiler/pars.fsy"
+//# 4762 "src/Compiler/pars.fsy"
: 'gentype_dynamicArg));
-//# 12916 "pars.fs"
+//# 13272 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4598 "src/Compiler/pars.fsy"
+//# 4766 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let rpr = rhs parseState 3
let m = unionRanges lpr rpr
SynExpr.Paren(_2, lpr, Some rpr, m)
)
-//# 4598 "src/Compiler/pars.fsy"
+//# 4766 "src/Compiler/pars.fsy"
: 'gentype_dynamicArg));
-//# 12931 "pars.fs"
+//# 13287 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4605 "src/Compiler/pars.fsy"
+//# 4773 "src/Compiler/pars.fsy"
rhs parseState 1, _2
)
-//# 4605 "src/Compiler/pars.fsy"
+//# 4773 "src/Compiler/pars.fsy"
: 'gentype_withClauses));
-//# 12942 "pars.fs"
+//# 13298 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4608 "src/Compiler/pars.fsy"
+//# 4776 "src/Compiler/pars.fsy"
rhs parseState 1, _2
)
-//# 4608 "src/Compiler/pars.fsy"
+//# 4776 "src/Compiler/pars.fsy"
: 'gentype_withClauses));
-//# 12953 "pars.fs"
+//# 13309 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4611 "src/Compiler/pars.fsy"
+//# 4779 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith())
rhs parseState 1, _2
)
-//# 4611 "src/Compiler/pars.fsy"
+//# 4779 "src/Compiler/pars.fsy"
: 'gentype_withClauses));
-//# 12966 "pars.fs"
+//# 13322 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4615 "src/Compiler/pars.fsy"
+//# 4783 "src/Compiler/pars.fsy"
let mWith = rhs parseState 1
if not _2 then reportParseErrorAt mWith (FSComp.SR.parsUnexpectedEndOfFileWith ())
mWith, ([], mWith.EndRange)
)
-//# 4615 "src/Compiler/pars.fsy"
+//# 4783 "src/Compiler/pars.fsy"
: 'gentype_withClauses));
-//# 12979 "pars.fs"
+//# 13335 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4621 "src/Compiler/pars.fsy"
+//# 4789 "src/Compiler/pars.fsy"
_1 None
)
-//# 4621 "src/Compiler/pars.fsy"
+//# 4789 "src/Compiler/pars.fsy"
: 'gentype_withPatternClauses));
-//# 12990 "pars.fs"
+//# 13346 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_barCanBeRightBeforeNull in
let _2 = parseState.GetInput(2) :?> 'gentype_patternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4624 "src/Compiler/pars.fsy"
+//# 4792 "src/Compiler/pars.fsy"
let mBar = rhs parseState 1 |> Some
_2 mBar
)
-//# 4624 "src/Compiler/pars.fsy"
+//# 4792 "src/Compiler/pars.fsy"
+ : 'gentype_withPatternClauses));
+//# 13359 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _2 = parseState.GetInput(2) :?> 'gentype_barCanBeRightBeforeNull in
+ let _3 = parseState.GetInput(3) :?> 'gentype_patternClauses in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 4796 "src/Compiler/pars.fsy"
+ let mBar1 = rhs parseState 1
+ let mBar2 = rhs parseState 2
+ reportParseErrorAt mBar2 (FSComp.SR.parsExpectingPattern ())
+ let clauses, mLast = Some mBar1 |> _3
+ let clauses = addEmptyMatchClause mBar1 mBar2 clauses
+ clauses, mLast
+ )
+//# 4796 "src/Compiler/pars.fsy"
: 'gentype_withPatternClauses));
-//# 13002 "pars.fs"
+//# 13376 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_barCanBeRightBeforeNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4628 "src/Compiler/pars.fsy"
+//# 4804 "src/Compiler/pars.fsy"
// silent recovery
let mLast = rhs parseState 1
[], mLast
)
-//# 4628 "src/Compiler/pars.fsy"
+//# 4804 "src/Compiler/pars.fsy"
: 'gentype_withPatternClauses));
-//# 13014 "pars.fs"
+//# 13389 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4633 "src/Compiler/pars.fsy"
+//# 4809 "src/Compiler/pars.fsy"
// silent recovery
let mLast = rhs parseState 1
[], mLast
)
-//# 4633 "src/Compiler/pars.fsy"
+//# 4809 "src/Compiler/pars.fsy"
: 'gentype_withPatternClauses));
-//# 13026 "pars.fs"
+//# 13401 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _2 = parseState.GetInput(2) :?> 'gentype_patternGuard in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4640 "src/Compiler/pars.fsy"
+//# 4816 "src/Compiler/pars.fsy"
_1, _2
)
-//# 4640 "src/Compiler/pars.fsy"
+//# 4816 "src/Compiler/pars.fsy"
: 'gentype_patternAndGuard));
-//# 13038 "pars.fs"
+//# 13413 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
let _2 = parseState.GetInput(2) :?> range * SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4644 "src/Compiler/pars.fsy"
+//# 4820 "src/Compiler/pars.fsy"
let pat, guard = _1
let mArrow, resultExpr = _2
let mLast = resultExpr.Range
@@ -13050,17 +13425,18 @@ let _fsyacc_reductions = lazy [|
fun mBar ->
[SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast
)
-//# 4644 "src/Compiler/pars.fsy"
+//# 4820 "src/Compiler/pars.fsy"
: 'gentype_patternClauses));
-//# 13055 "pars.fs"
+//# 13430 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
let _2 = parseState.GetInput(2) :?> range * SynExpr in
+ let _3 = parseState.GetInput(3) :?> 'gentype_barCanBeRightBeforeNull in
let _4 = parseState.GetInput(4) :?> 'gentype_patternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4652 "src/Compiler/pars.fsy"
+//# 4828 "src/Compiler/pars.fsy"
let pat, guard = _1
let mArrow, resultExpr = _2
let mNextBar = rhs parseState 3 |> Some
@@ -13069,16 +13445,41 @@ let _fsyacc_reductions = lazy [|
fun mBar ->
(SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar }) :: clauses), mLast
)
-//# 4652 "src/Compiler/pars.fsy"
+//# 4828 "src/Compiler/pars.fsy"
: 'gentype_patternClauses));
-//# 13074 "pars.fs"
+//# 13450 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
+ let _2 = parseState.GetInput(2) :?> range * SynExpr in
+ let _4 = parseState.GetInput(4) :?> 'gentype_barCanBeRightBeforeNull in
+ let _5 = parseState.GetInput(5) :?> 'gentype_patternClauses in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 4837 "src/Compiler/pars.fsy"
+ let pat, guard = _1
+ let mArrow, resultExpr = _2
+ let mBar1 = rhs parseState 3
+ let mBar2 = rhs parseState 4
+ reportParseErrorAt mBar2 (FSComp.SR.parsExpectingPattern ())
+ let clauses, mLast = Some mBar1 |> _5
+ let clauses = addEmptyMatchClause mBar1 mBar2 clauses
+ fun mBar ->
+ let m = unionRanges resultExpr.Range pat.Range
+ let trivia = { ArrowRange = Some mArrow; BarRange = mBar }
+ SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, trivia) :: clauses, mLast
+ )
+//# 4837 "src/Compiler/pars.fsy"
+ : 'gentype_patternClauses));
+//# 13474 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
+ let _3 = parseState.GetInput(3) :?> 'gentype_barCanBeRightBeforeNull in
let _4 = parseState.GetInput(4) :?> 'gentype_patternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4661 "src/Compiler/pars.fsy"
+//# 4851 "src/Compiler/pars.fsy"
let pat, guard = _1
let mNextBar = rhs parseState 3 |> Some
let clauses, mLast = _4 mNextBar
@@ -13087,17 +13488,18 @@ let _fsyacc_reductions = lazy [|
fun _mBar ->
(SynMatchClause(pat, guard, arbExpr ("patternClauses1", m.EndRange), m, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero) :: clauses), mLast
)
-//# 4661 "src/Compiler/pars.fsy"
+//# 4851 "src/Compiler/pars.fsy"
: 'gentype_patternClauses));
-//# 13092 "pars.fs"
+//# 13493 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
let _2 = parseState.GetInput(2) :?> range * SynExpr in
+ let _3 = parseState.GetInput(3) :?> 'gentype_barCanBeRightBeforeNull in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4670 "src/Compiler/pars.fsy"
+//# 4860 "src/Compiler/pars.fsy"
let pat, guard = _1
let mArrow, resultExpr = _2
let mLast = rhs parseState 3
@@ -13105,9 +13507,9 @@ let _fsyacc_reductions = lazy [|
fun mBar ->
[SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast
)
-//# 4670 "src/Compiler/pars.fsy"
+//# 4860 "src/Compiler/pars.fsy"
: 'gentype_patternClauses));
-//# 13110 "pars.fs"
+//# 13512 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
let _2 = parseState.GetInput(2) :?> range * SynExpr in
@@ -13115,73 +13517,73 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4678 "src/Compiler/pars.fsy"
+//# 4868 "src/Compiler/pars.fsy"
let pat, guard = _1
let mArrow, resultExpr = _2
let m = unionRanges resultExpr.Range pat.Range
fun mBar ->
[SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], m
)
-//# 4678 "src/Compiler/pars.fsy"
+//# 4868 "src/Compiler/pars.fsy"
: 'gentype_patternClauses));
-//# 13127 "pars.fs"
+//# 13529 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4685 "src/Compiler/pars.fsy"
+//# 4875 "src/Compiler/pars.fsy"
let pat, guard = _1
let patm = pat.Range
let m = guard |> Option.map (fun e -> unionRanges patm e.Range) |> Option.defaultValue patm
fun mBar ->
[SynMatchClause(pat, guard, arbExpr ("patternClauses2", m.EndRange), m, DebugPointAtTarget.Yes, { ArrowRange = None; BarRange = mBar })], m
)
-//# 4685 "src/Compiler/pars.fsy"
+//# 4875 "src/Compiler/pars.fsy"
: 'gentype_patternClauses));
-//# 13143 "pars.fs"
+//# 13545 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4693 "src/Compiler/pars.fsy"
+//# 4883 "src/Compiler/pars.fsy"
Some _2
)
-//# 4693 "src/Compiler/pars.fsy"
+//# 4883 "src/Compiler/pars.fsy"
: 'gentype_patternGuard));
-//# 13154 "pars.fs"
+//# 13556 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4696 "src/Compiler/pars.fsy"
+//# 4886 "src/Compiler/pars.fsy"
None
)
-//# 4696 "src/Compiler/pars.fsy"
+//# 4886 "src/Compiler/pars.fsy"
: 'gentype_patternGuard));
-//# 13164 "pars.fs"
+//# 13566 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4700 "src/Compiler/pars.fsy"
+//# 4890 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 1
let expr = _2 mArrow
mArrow, expr
)
-//# 4700 "src/Compiler/pars.fsy"
+//# 4890 "src/Compiler/pars.fsy"
: range * SynExpr));
-//# 13177 "pars.fs"
+//# 13579 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_ifExprThen in
let _2 = parseState.GetInput(2) :?> 'gentype_ifExprElifs in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4706 "src/Compiler/pars.fsy"
+//# 4896 "src/Compiler/pars.fsy"
let exprThen, mThen = _1
let mElse, elseExpr = _2
(fun exprGuard mIf isElif ->
@@ -13192,96 +13594,96 @@ let _fsyacc_reductions = lazy [|
let trivia = { IfKeyword = mIf; IsElif = isElif; ThenKeyword = mThen; ElseKeyword = mElse; IfToThenRange = mIfToThen }
SynExpr.IfThenElse(exprGuard, exprThen, elseExpr, spIfToThen, false, mIfToEndOfLastBranch, trivia))
)
-//# 4706 "src/Compiler/pars.fsy"
+//# 4896 "src/Compiler/pars.fsy"
: 'gentype_ifExprCases));
-//# 13197 "pars.fs"
+//# 13599 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4718 "src/Compiler/pars.fsy"
+//# 4908 "src/Compiler/pars.fsy"
_2, rhs parseState 1
)
-//# 4718 "src/Compiler/pars.fsy"
+//# 4908 "src/Compiler/pars.fsy"
: 'gentype_ifExprThen));
-//# 13208 "pars.fs"
+//# 13610 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4721 "src/Compiler/pars.fsy"
+//# 4911 "src/Compiler/pars.fsy"
let mThen = rhs parseState 1
arbExpr ("ifThen1", mThen.EndRange), mThen
)
-//# 4721 "src/Compiler/pars.fsy"
+//# 4911 "src/Compiler/pars.fsy"
: 'gentype_ifExprThen));
-//# 13220 "pars.fs"
+//# 13622 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4725 "src/Compiler/pars.fsy"
+//# 4915 "src/Compiler/pars.fsy"
_2, rhs parseState 1
)
-//# 4725 "src/Compiler/pars.fsy"
+//# 4915 "src/Compiler/pars.fsy"
: 'gentype_ifExprThen));
-//# 13231 "pars.fs"
+//# 13633 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4728 "src/Compiler/pars.fsy"
+//# 4918 "src/Compiler/pars.fsy"
let mThen = rhs parseState 1
arbExpr ("ifThen2", mThen.EndRange), mThen
)
-//# 4728 "src/Compiler/pars.fsy"
+//# 4918 "src/Compiler/pars.fsy"
: 'gentype_ifExprThen));
-//# 13243 "pars.fs"
+//# 13645 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4733 "src/Compiler/pars.fsy"
+//# 4923 "src/Compiler/pars.fsy"
None, None
)
-//# 4733 "src/Compiler/pars.fsy"
+//# 4923 "src/Compiler/pars.fsy"
: 'gentype_ifExprElifs));
-//# 13253 "pars.fs"
+//# 13655 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4736 "src/Compiler/pars.fsy"
+//# 4926 "src/Compiler/pars.fsy"
let mElse = rhs parseState 1
Some mElse, Some _2
)
-//# 4736 "src/Compiler/pars.fsy"
+//# 4926 "src/Compiler/pars.fsy"
: 'gentype_ifExprElifs));
-//# 13265 "pars.fs"
+//# 13667 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4740 "src/Compiler/pars.fsy"
+//# 4930 "src/Compiler/pars.fsy"
let mElse = rhs parseState 1
Some mElse, Some _2
)
-//# 4740 "src/Compiler/pars.fsy"
+//# 4930 "src/Compiler/pars.fsy"
: 'gentype_ifExprElifs));
-//# 13277 "pars.fs"
+//# 13679 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ifExprCases in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4744 "src/Compiler/pars.fsy"
+//# 4934 "src/Compiler/pars.fsy"
let mElif = rhs parseState 1
// verify if `ELIF` is not a merged token
let length = mElif.EndColumn - mElif.StartColumn
@@ -13292,57 +13694,57 @@ let _fsyacc_reductions = lazy [|
else
None, Some(_3 _2 mElif true)
)
-//# 4744 "src/Compiler/pars.fsy"
+//# 4934 "src/Compiler/pars.fsy"
: 'gentype_ifExprElifs));
-//# 13297 "pars.fs"
+//# 13699 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4755 "src/Compiler/pars.fsy"
+//# 4945 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElif())
None, Some(exprFromParseError _2)
)
-//# 4755 "src/Compiler/pars.fsy"
+//# 4945 "src/Compiler/pars.fsy"
: 'gentype_ifExprElifs));
-//# 13310 "pars.fs"
+//# 13712 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr list * range list in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4760 "src/Compiler/pars.fsy"
+//# 4950 "src/Compiler/pars.fsy"
let exprs, commas = _1
_3 :: exprs, (rhs parseState 2 :: commas)
)
-//# 4760 "src/Compiler/pars.fsy"
+//# 4950 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13323 "pars.fs"
+//# 13725 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr list * range list in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4764 "src/Compiler/pars.fsy"
+//# 4954 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 2
if not _3 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ())
let exprs, commas = _1
arbExpr ("tupleExpr1", commaRange.EndRange) :: exprs, commaRange :: commas
)
-//# 4764 "src/Compiler/pars.fsy"
+//# 4954 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13338 "pars.fs"
+//# 13740 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr list * range list in
let _4 = parseState.GetInput(4) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4770 "src/Compiler/pars.fsy"
+//# 4960 "src/Compiler/pars.fsy"
let exprs, commas = _1
let mComma1 = rhs parseState 2
let mComma2 = rhs parseState 3
@@ -13350,16 +13752,16 @@ let _fsyacc_reductions = lazy [|
let expr = arbExpr ("tupleExpr2", mComma1.EndRange)
_4 :: expr :: exprs, (mComma2 :: mComma1 :: commas)
)
-//# 4770 "src/Compiler/pars.fsy"
+//# 4960 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13355 "pars.fs"
+//# 13757 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr list * range list in
let _4 = parseState.GetInput(4) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4778 "src/Compiler/pars.fsy"
+//# 4968 "src/Compiler/pars.fsy"
let exprs, commas = _1
let mComma1 = rhs parseState 2
let mComma2 = rhs parseState 3
@@ -13369,42 +13771,42 @@ let _fsyacc_reductions = lazy [|
let expr2 = arbExpr ("tupleExpr4", mComma2.EndRange)
expr2 :: expr1 :: exprs, mComma2 :: mComma1 :: commas
)
-//# 4778 "src/Compiler/pars.fsy"
+//# 4968 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13374 "pars.fs"
+//# 13776 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4788 "src/Compiler/pars.fsy"
+//# 4978 "src/Compiler/pars.fsy"
let commaRange = rhs parseState 2
if not _3 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ())
[arbExpr ("tupleExpr5", commaRange.EndRange); _1], [commaRange]
)
-//# 4788 "src/Compiler/pars.fsy"
+//# 4978 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13388 "pars.fs"
+//# 13790 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4793 "src/Compiler/pars.fsy"
+//# 4983 "src/Compiler/pars.fsy"
[_3; _1], [rhs parseState 2]
)
-//# 4793 "src/Compiler/pars.fsy"
+//# 4983 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13400 "pars.fs"
+//# 13802 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _4 = parseState.GetInput(4) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4796 "src/Compiler/pars.fsy"
+//# 4986 "src/Compiler/pars.fsy"
let mComma1 = rhs parseState 2
let mComma2 = rhs parseState 3
reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ())
@@ -13413,111 +13815,111 @@ let _fsyacc_reductions = lazy [|
let expr2 = arbExpr ("tupleExpr7", mComma2.EndRange)
[expr2; expr1; _1], [mComma2; mComma1]
)
-//# 4796 "src/Compiler/pars.fsy"
+//# 4986 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13418 "pars.fs"
+//# 13820 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _4 = parseState.GetInput(4) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4805 "src/Compiler/pars.fsy"
+//# 4995 "src/Compiler/pars.fsy"
let mComma1 = rhs parseState 2
let mComma2 = rhs parseState 3
reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ())
let expr = arbExpr ("tupleExpr8", mComma1.EndRange)
[_4; expr; _1], [mComma2; mComma1]
)
-//# 4805 "src/Compiler/pars.fsy"
+//# 4995 "src/Compiler/pars.fsy"
: SynExpr list * range list));
-//# 13434 "pars.fs"
+//# 13836 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4813 "src/Compiler/pars.fsy"
+//# 5003 "src/Compiler/pars.fsy"
if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidPrefixOperator())
let m = (rhs2 parseState 1 2)
SynExpr.IndexFromEnd(_2, m)
)
-//# 4813 "src/Compiler/pars.fsy"
+//# 5003 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13448 "pars.fs"
+//# 13850 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4818 "src/Compiler/pars.fsy"
+//# 5008 "src/Compiler/pars.fsy"
mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) "~-" _2
)
-//# 4818 "src/Compiler/pars.fsy"
+//# 5008 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13459 "pars.fs"
+//# 13861 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4821 "src/Compiler/pars.fsy"
+//# 5011 "src/Compiler/pars.fsy"
if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator())
mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~" + (_1)) _2
)
-//# 4821 "src/Compiler/pars.fsy"
+//# 5011 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13472 "pars.fs"
+//# 13874 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4825 "src/Compiler/pars.fsy"
+//# 5015 "src/Compiler/pars.fsy"
if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator())
mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~" + (_1)) _2
)
-//# 4825 "src/Compiler/pars.fsy"
+//# 5015 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13485 "pars.fs"
+//# 13887 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4829 "src/Compiler/pars.fsy"
+//# 5019 "src/Compiler/pars.fsy"
if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator())
mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~" + (_1)) _2
)
-//# 4829 "src/Compiler/pars.fsy"
+//# 5019 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13498 "pars.fs"
+//# 13900 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4833 "src/Compiler/pars.fsy"
+//# 5023 "src/Compiler/pars.fsy"
SynExpr.AddressOf(true, _2, rhs parseState 1, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4833 "src/Compiler/pars.fsy"
+//# 5023 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13509 "pars.fs"
+//# 13911 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4836 "src/Compiler/pars.fsy"
+//# 5026 "src/Compiler/pars.fsy"
SynExpr.AddressOf(false, _2, rhs parseState 1, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4836 "src/Compiler/pars.fsy"
+//# 5026 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13520 "pars.fs"
+//# 13922 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -13526,14 +13928,14 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4839 "src/Compiler/pars.fsy"
+//# 5029 "src/Compiler/pars.fsy"
errorR (Error (FSComp.SR.parsNewExprMemberAccess (), rhs parseState 6))
let newExpr = SynExpr.New(false, _2, _4, unionRanges (rhs parseState 1) _4.Range)
_6 newExpr (lhs parseState) (rhs parseState 5)
)
-//# 4839 "src/Compiler/pars.fsy"
+//# 5029 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13536 "pars.fs"
+//# 13938 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -13541,125 +13943,125 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4844 "src/Compiler/pars.fsy"
+//# 5034 "src/Compiler/pars.fsy"
SynExpr.New(false, _2, _4, unionRanges (rhs parseState 1) _4.Range)
)
-//# 4844 "src/Compiler/pars.fsy"
+//# 5034 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13549 "pars.fs"
+//# 13951 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4847 "src/Compiler/pars.fsy"
+//# 5037 "src/Compiler/pars.fsy"
SynExpr.New(false, _2, arbExpr ("minusExpr", (rhs parseState 4)), unionRanges (rhs parseState 1) (_2).Range)
)
-//# 4847 "src/Compiler/pars.fsy"
+//# 5037 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13561 "pars.fs"
+//# 13963 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4850 "src/Compiler/pars.fsy"
+//# 5040 "src/Compiler/pars.fsy"
arbExpr ("minusExpr2", (rhs parseState 1))
)
-//# 4850 "src/Compiler/pars.fsy"
+//# 5040 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13571 "pars.fs"
+//# 13973 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4853 "src/Compiler/pars.fsy"
+//# 5043 "src/Compiler/pars.fsy"
SynExpr.InferredUpcast(_2, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4853 "src/Compiler/pars.fsy"
+//# 5043 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13582 "pars.fs"
+//# 13984 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4856 "src/Compiler/pars.fsy"
+//# 5046 "src/Compiler/pars.fsy"
SynExpr.InferredDowncast(_2, unionRanges (rhs parseState 1) _2.Range)
)
-//# 4856 "src/Compiler/pars.fsy"
+//# 5046 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13593 "pars.fs"
+//# 13995 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4859 "src/Compiler/pars.fsy"
+//# 5049 "src/Compiler/pars.fsy"
_1
)
-//# 4859 "src/Compiler/pars.fsy"
+//# 5049 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13604 "pars.fs"
+//# 14006 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4863 "src/Compiler/pars.fsy"
+//# 5053 "src/Compiler/pars.fsy"
SynExpr.App(ExprAtomicFlag.NonAtomic, false, _1, _2, unionRanges _1.Range _2.Range)
)
-//# 4863 "src/Compiler/pars.fsy"
+//# 5053 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13616 "pars.fs"
+//# 14018 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4866 "src/Compiler/pars.fsy"
+//# 5056 "src/Compiler/pars.fsy"
let arg, _ = _1
arg
)
-//# 4866 "src/Compiler/pars.fsy"
+//# 5056 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13628 "pars.fs"
+//# 14030 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4871 "src/Compiler/pars.fsy"
+//# 5061 "src/Compiler/pars.fsy"
let arg2, hpa2 = _2
if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator())
if hpa2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled())
mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) ("~" + (_1)) arg2
)
-//# 4871 "src/Compiler/pars.fsy"
+//# 5061 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13643 "pars.fs"
+//# 14045 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4877 "src/Compiler/pars.fsy"
+//# 5067 "src/Compiler/pars.fsy"
let arg, hpa = _1
if hpa then reportParseErrorAt arg.Range (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled())
arg
)
-//# 4877 "src/Compiler/pars.fsy"
+//# 5067 "src/Compiler/pars.fsy"
: SynExpr));
-//# 13656 "pars.fs"
+//# 14058 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4883 "src/Compiler/pars.fsy"
+//# 5073 "src/Compiler/pars.fsy"
let mUnderscore = rhs parseState 1
let mDot = rhs parseState 2
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot )
@@ -13667,15 +14069,15 @@ let _fsyacc_reductions = lazy [|
let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot }
SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false
)
-//# 4883 "src/Compiler/pars.fsy"
+//# 5073 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13672 "pars.fs"
+//# 14074 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4892 "src/Compiler/pars.fsy"
+//# 5082 "src/Compiler/pars.fsy"
let mUnderscore = rhs parseState 1
let mDot = rhs parseState 2
let mWhole = unionRanges mUnderscore mDot
@@ -13686,341 +14088,341 @@ let _fsyacc_reductions = lazy [|
let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot }
SynExpr.DotLambda(expr, mWhole, trivia), false
)
-//# 4892 "src/Compiler/pars.fsy"
+//# 5082 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13691 "pars.fs"
+//# 14093 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4905 "src/Compiler/pars.fsy"
+//# 5095 "src/Compiler/pars.fsy"
let mUnderscore = rhs parseState 1
if not _2 then reportParseErrorAt mUnderscore (FSComp.SR.parsUnexpectedEndOfFileExpression())
let expr = SynExpr.Ident(Ident("_", mUnderscore))
SynExpr.FromParseError(expr, mUnderscore), false
)
-//# 4905 "src/Compiler/pars.fsy"
+//# 5095 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13705 "pars.fs"
+//# 14107 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
let _3 = parseState.GetInput(3) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4913 "src/Compiler/pars.fsy"
+//# 5103 "src/Compiler/pars.fsy"
let arg1, _ = _1
let arg2, hpa = _3
SynExpr.App(ExprAtomicFlag.Atomic, false, arg1, arg2, unionRanges arg1.Range arg2.Range), hpa
)
-//# 4913 "src/Compiler/pars.fsy"
+//# 5103 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13719 "pars.fs"
+//# 14121 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
let _3 = parseState.GetInput(3) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4918 "src/Compiler/pars.fsy"
+//# 5108 "src/Compiler/pars.fsy"
let arg1, _ = _1
let arg2, _ = _3
SynExpr.App(ExprAtomicFlag.Atomic, false, arg1, arg2, unionRanges arg1.Range arg2.Range), true
)
-//# 4918 "src/Compiler/pars.fsy"
+//# 5108 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13733 "pars.fs"
+//# 14135 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
let _3 = parseState.GetInput(3) :?> range * range option * bool * SynType list * range list * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4923 "src/Compiler/pars.fsy"
+//# 5113 "src/Compiler/pars.fsy"
let arg1, _ = _1
let mLessThan, mGreaterThan, _, args, commas, mTypeArgs = _3
let mWholeExpr = unionRanges arg1.Range mTypeArgs
SynExpr.TypeApp(arg1, mLessThan, args, commas, mGreaterThan, mTypeArgs, mWholeExpr), false
)
-//# 4923 "src/Compiler/pars.fsy"
+//# 5113 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13748 "pars.fs"
+//# 14150 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4929 "src/Compiler/pars.fsy"
+//# 5119 "src/Compiler/pars.fsy"
let arg2, hpa2 = _2
if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator())
mkSynPrefixPrim (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) _1 arg2, hpa2
)
-//# 4929 "src/Compiler/pars.fsy"
+//# 5119 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13762 "pars.fs"
+//# 14164 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4934 "src/Compiler/pars.fsy"
+//# 5124 "src/Compiler/pars.fsy"
let id = mkSynId (lhs parseState) (_2).idText
let typar = SynTypar(id, TyparStaticReq.None, false)
let lhsm = rhs2 parseState 1 2
SynExpr.Typar(typar, lhsm), false
)
-//# 4934 "src/Compiler/pars.fsy"
+//# 5124 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13776 "pars.fs"
+//# 14178 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4940 "src/Compiler/pars.fsy"
+//# 5130 "src/Compiler/pars.fsy"
arbExpr ("unfinished identifier", rhs parseState 1), false
)
-//# 4940 "src/Compiler/pars.fsy"
+//# 5130 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13786 "pars.fs"
+//# 14188 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
let _3 = parseState.GetInput(3) :?> 'gentype_atomicExprQualification in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4943 "src/Compiler/pars.fsy"
+//# 5133 "src/Compiler/pars.fsy"
let arg1, hpa1 = _1
_3 arg1 (lhs parseState) (rhs parseState 2), hpa1
)
-//# 4943 "src/Compiler/pars.fsy"
+//# 5133 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13799 "pars.fs"
+//# 14201 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_atomicExprQualification in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4947 "src/Compiler/pars.fsy"
+//# 5137 "src/Compiler/pars.fsy"
let arg1 = SynExpr.Ident(ident("base", rhs parseState 1))
_3 arg1 (lhs parseState) (rhs parseState 2), false
)
-//# 4947 "src/Compiler/pars.fsy"
+//# 5137 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13811 "pars.fs"
+//# 14213 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_nameop in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4951 "src/Compiler/pars.fsy"
+//# 5141 "src/Compiler/pars.fsy"
let (SynIdent(ident, trivia)) = _2
SynExpr.LongIdent(true, SynLongIdent([ident], [], [trivia]), None, rhs parseState 2), false
)
-//# 4951 "src/Compiler/pars.fsy"
+//# 5141 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13823 "pars.fs"
+//# 14225 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr * bool in
let _3 = parseState.GetInput(3) :?> 'gentype_dynamicArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4955 "src/Compiler/pars.fsy"
+//# 5145 "src/Compiler/pars.fsy"
let m = rhs2 parseState 1 3
let mQmark = rhs parseState 2
let arg1, hpa1 = _1
SynExpr.Dynamic(arg1, mQmark, _3, m), hpa1
)
-//# 4955 "src/Compiler/pars.fsy"
+//# 5145 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13838 "pars.fs"
+//# 14240 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4961 "src/Compiler/pars.fsy"
+//# 5151 "src/Compiler/pars.fsy"
let m = rhs parseState 1
let ident = ident(MangledGlobalName, m)
SynExpr.LongIdent(false, SynLongIdent([ident], [], [Some(IdentTrivia.OriginalNotation "global")]), None, m), false
)
-//# 4961 "src/Compiler/pars.fsy"
+//# 5151 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13850 "pars.fs"
+//# 14252 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_identExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4966 "src/Compiler/pars.fsy"
+//# 5156 "src/Compiler/pars.fsy"
_1, false
)
-//# 4966 "src/Compiler/pars.fsy"
+//# 5156 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13861 "pars.fs"
+//# 14263 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_listExprElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4969 "src/Compiler/pars.fsy"
+//# 5159 "src/Compiler/pars.fsy"
_2 (lhs parseState), false
)
-//# 4969 "src/Compiler/pars.fsy"
+//# 5159 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13872 "pars.fs"
+//# 14274 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_listExprElements in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4972 "src/Compiler/pars.fsy"
+//# 5162 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket())
exprFromParseError (_2 (rhs2 parseState 1 2)), false
)
-//# 4972 "src/Compiler/pars.fsy"
+//# 5162 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13885 "pars.fs"
+//# 14287 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4976 "src/Compiler/pars.fsy"
+//# 5166 "src/Compiler/pars.fsy"
// silent recovery
SynExpr.ArrayOrList(false, [ ], lhs parseState), false
)
-//# 4976 "src/Compiler/pars.fsy"
+//# 5166 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13896 "pars.fs"
+//# 14298 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4980 "src/Compiler/pars.fsy"
+//# 5170 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket())
// silent recovery
exprFromParseError (SynExpr.ArrayOrList(false, [ ], rhs parseState 1)), false
)
-//# 4980 "src/Compiler/pars.fsy"
+//# 5170 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13909 "pars.fs"
+//# 14311 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynExpr list * range list in
let _4 = parseState.GetInput(4) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4985 "src/Compiler/pars.fsy"
+//# 5175 "src/Compiler/pars.fsy"
let exprs, commas = _3
let m = rhs2 parseState 1 4
SynExpr.Tuple(true, List.rev exprs, List.rev commas, m), false
)
-//# 4985 "src/Compiler/pars.fsy"
+//# 5175 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13923 "pars.fs"
+//# 14325 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynExpr list * range list in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4990 "src/Compiler/pars.fsy"
+//# 5180 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedBracket())
let exprs, commas = _3
let m = (rhs parseState 1, exprs) ||> unionRangeWithListBy (fun e -> e.Range)
SynExpr.Tuple(true, List.rev exprs, List.rev commas, m), false
)
-//# 4990 "src/Compiler/pars.fsy"
+//# 5180 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13938 "pars.fs"
+//# 14340 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 4996 "src/Compiler/pars.fsy"
+//# 5186 "src/Compiler/pars.fsy"
_1, false
)
-//# 4996 "src/Compiler/pars.fsy"
+//# 5186 "src/Compiler/pars.fsy"
: SynExpr * bool));
-//# 13949 "pars.fs"
+//# 14351 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_identOrOp in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5000 "src/Compiler/pars.fsy"
+//# 5190 "src/Compiler/pars.fsy"
let idm = rhs parseState 1
(fun e mLhs mDot -> mkSynDot mDot mLhs e _1)
)
-//# 5000 "src/Compiler/pars.fsy"
+//# 5190 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 13961 "pars.fs"
+//# 14363 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5004 "src/Compiler/pars.fsy"
+//# 5194 "src/Compiler/pars.fsy"
(fun e mLhs mDot ->
reportParseErrorAt (rhs parseState 3) (FSComp.SR.nrGlobalUsedOnlyAsFirstName())
let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover'
mkSynDotMissing mDot fixedLhsm e)
)
-//# 5004 "src/Compiler/pars.fsy"
+//# 5194 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 13974 "pars.fs"
+//# 14376 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5010 "src/Compiler/pars.fsy"
+//# 5200 "src/Compiler/pars.fsy"
(fun e mLhs mDot ->
reportParseErrorAt mDot (FSComp.SR.parsMissingQualificationAfterDot())
let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover'
mkSynDotMissing mDot fixedLhsm e)
)
-//# 5010 "src/Compiler/pars.fsy"
+//# 5200 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 13987 "pars.fs"
+//# 14389 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5015 "src/Compiler/pars.fsy"
+//# 5205 "src/Compiler/pars.fsy"
(fun e mLhs mDot ->
reportParseErrorAt mDot (FSComp.SR.parsMissingQualificationAfterDot())
let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover'
// Include 'e' in the returned expression but throw it away
mkSynDotMissing mDot fixedLhsm e)
)
-//# 5015 "src/Compiler/pars.fsy"
+//# 5205 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14002 "pars.fs"
+//# 14404 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
let _5 = parseState.GetInput(5) :?> int32 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5021 "src/Compiler/pars.fsy"
+//# 5211 "src/Compiler/pars.fsy"
(fun e mLhs mDot ->
if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError(lhs parseState)
SynExpr.LibraryOnlyUnionCaseFieldGet(e, mkSynCaseName mLhs opNameCons, (fst _5), mLhs))
)
-//# 5021 "src/Compiler/pars.fsy"
+//# 5211 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14016 "pars.fs"
+//# 14418 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5026 "src/Compiler/pars.fsy"
+//# 5216 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let rpr = rhs parseState 3
(fun e mLhs mDot ->
@@ -14036,219 +14438,219 @@ let _fsyacc_reductions = lazy [|
mlCompatWarning (FSComp.SR.parsParenFormIsForML()) (lhs parseState)
mkSynDotParenGet mLhs mDot e _2)
)
-//# 5026 "src/Compiler/pars.fsy"
+//# 5216 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14041 "pars.fs"
+//# 14443 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5042 "src/Compiler/pars.fsy"
+//# 5232 "src/Compiler/pars.fsy"
(fun e mLhs mDot -> mkSynDotBrackGet mLhs mDot e _2)
)
-//# 5042 "src/Compiler/pars.fsy"
+//# 5232 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14052 "pars.fs"
+//# 14454 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5045 "src/Compiler/pars.fsy"
+//# 5235 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket())
(fun e mLhs mDot -> exprFromParseError (mkSynDotBrackGet mLhs mDot e _2))
)
-//# 5045 "src/Compiler/pars.fsy"
+//# 5235 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14065 "pars.fs"
+//# 14467 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5049 "src/Compiler/pars.fsy"
+//# 5239 "src/Compiler/pars.fsy"
let mArg = rhs2 parseState 1 3
(fun e mLhs mDot -> mkSynDotBrackGet mLhs mDot e (arbExpr ("indexerExpr1", mArg)))
)
-//# 5049 "src/Compiler/pars.fsy"
+//# 5239 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14076 "pars.fs"
+//# 14478 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5053 "src/Compiler/pars.fsy"
+//# 5243 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket())
let mArg = (rhs parseState 1).EndRange
(fun e mLhs mDot -> exprFromParseError (mkSynDotBrackGet mLhs mDot e (arbExpr ("indexerExpr2", mArg))))
)
-//# 5053 "src/Compiler/pars.fsy"
+//# 5243 "src/Compiler/pars.fsy"
: 'gentype_atomicExprQualification));
-//# 14089 "pars.fs"
+//# 14491 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_constant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5060 "src/Compiler/pars.fsy"
+//# 5250 "src/Compiler/pars.fsy"
SynExpr.Const(fst _1, snd _1)
)
-//# 5060 "src/Compiler/pars.fsy"
+//# 5250 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14100 "pars.fs"
+//# 14502 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5063 "src/Compiler/pars.fsy"
+//# 5253 "src/Compiler/pars.fsy"
_1
)
-//# 5063 "src/Compiler/pars.fsy"
+//# 5253 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14111 "pars.fs"
+//# 14513 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_braceExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5066 "src/Compiler/pars.fsy"
+//# 5256 "src/Compiler/pars.fsy"
_1
)
-//# 5066 "src/Compiler/pars.fsy"
+//# 5256 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14122 "pars.fs"
+//# 14524 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_braceBarExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5069 "src/Compiler/pars.fsy"
+//# 5259 "src/Compiler/pars.fsy"
_1
)
-//# 5069 "src/Compiler/pars.fsy"
+//# 5259 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14133 "pars.fs"
+//# 14535 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interpolatedString in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5072 "src/Compiler/pars.fsy"
+//# 5262 "src/Compiler/pars.fsy"
let parts, synStringKind = _1
SynExpr.InterpolatedString(parts, synStringKind, rhs parseState 1)
)
-//# 5072 "src/Compiler/pars.fsy"
+//# 5262 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14145 "pars.fs"
+//# 14547 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5076 "src/Compiler/pars.fsy"
+//# 5266 "src/Compiler/pars.fsy"
SynExpr.Null(lhs parseState)
)
-//# 5076 "src/Compiler/pars.fsy"
+//# 5266 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14155 "pars.fs"
+//# 14557 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5079 "src/Compiler/pars.fsy"
+//# 5269 "src/Compiler/pars.fsy"
SynExpr.Const(SynConst.Bool false, lhs parseState)
)
-//# 5079 "src/Compiler/pars.fsy"
+//# 5269 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14165 "pars.fs"
+//# 14567 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5082 "src/Compiler/pars.fsy"
+//# 5272 "src/Compiler/pars.fsy"
SynExpr.Const(SynConst.Bool true, lhs parseState)
)
-//# 5082 "src/Compiler/pars.fsy"
+//# 5272 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14175 "pars.fs"
+//# 14577 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_quoteExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5085 "src/Compiler/pars.fsy"
+//# 5275 "src/Compiler/pars.fsy"
_1
)
-//# 5085 "src/Compiler/pars.fsy"
+//# 5275 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14186 "pars.fs"
+//# 14588 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_arrayExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5088 "src/Compiler/pars.fsy"
+//# 5278 "src/Compiler/pars.fsy"
_1
)
-//# 5088 "src/Compiler/pars.fsy"
+//# 5278 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14197 "pars.fs"
+//# 14599 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_beginEndExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5091 "src/Compiler/pars.fsy"
+//# 5281 "src/Compiler/pars.fsy"
_1
)
-//# 5091 "src/Compiler/pars.fsy"
+//# 5281 "src/Compiler/pars.fsy"
: SynExpr));
-//# 14208 "pars.fs"
+//# 14610 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5095 "src/Compiler/pars.fsy"
+//# 5285 "src/Compiler/pars.fsy"
SynExpr.Paren(_2, rhs parseState 1, Some(rhs parseState 3), rhs2 parseState 1 3)
)
-//# 5095 "src/Compiler/pars.fsy"
+//# 5285 "src/Compiler/pars.fsy"
: 'gentype_beginEndExpr));
-//# 14219 "pars.fs"
+//# 14621 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5098 "src/Compiler/pars.fsy"
+//# 5288 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBegin()); exprFromParseError _2
)
-//# 5098 "src/Compiler/pars.fsy"
+//# 5288 "src/Compiler/pars.fsy"
: 'gentype_beginEndExpr));
-//# 14231 "pars.fs"
+//# 14633 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5101 "src/Compiler/pars.fsy"
+//# 5291 "src/Compiler/pars.fsy"
(* silent recovery *) arbExpr ("beginEndExpr", (lhs parseState))
)
-//# 5101 "src/Compiler/pars.fsy"
+//# 5291 "src/Compiler/pars.fsy"
: 'gentype_beginEndExpr));
-//# 14241 "pars.fs"
+//# 14643 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5104 "src/Compiler/pars.fsy"
+//# 5294 "src/Compiler/pars.fsy"
mkSynUnit (lhs parseState)
)
-//# 5104 "src/Compiler/pars.fsy"
+//# 5294 "src/Compiler/pars.fsy"
: 'gentype_beginEndExpr));
-//# 14251 "pars.fs"
+//# 14653 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
@@ -14256,13 +14658,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5108 "src/Compiler/pars.fsy"
+//# 5298 "src/Compiler/pars.fsy"
if _1 <> _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuote(fst _1))
(SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, _2, false, lhs parseState))
)
-//# 5108 "src/Compiler/pars.fsy"
+//# 5298 "src/Compiler/pars.fsy"
: 'gentype_quoteExpr));
-//# 14265 "pars.fs"
+//# 14667 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in
@@ -14270,203 +14672,203 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5112 "src/Compiler/pars.fsy"
+//# 5302 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst _1))
let mExpr = rhs2 parseState 1 2
exprFromParseError (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, _2, false, mExpr))
)
-//# 5112 "src/Compiler/pars.fsy"
+//# 5302 "src/Compiler/pars.fsy"
: 'gentype_quoteExpr));
-//# 14280 "pars.fs"
+//# 14682 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * bool in
let _3 = parseState.GetInput(3) :?> string * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5117 "src/Compiler/pars.fsy"
+//# 5307 "src/Compiler/pars.fsy"
(* silent recovery *) SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, arbExpr ("quoteExpr", (rhs parseState 2)), false, lhs parseState)
)
-//# 5117 "src/Compiler/pars.fsy"
+//# 5307 "src/Compiler/pars.fsy"
: 'gentype_quoteExpr));
-//# 14292 "pars.fs"
+//# 14694 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * bool in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5120 "src/Compiler/pars.fsy"
+//# 5310 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst _1))
exprFromParseError (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, arbExpr ("quoteExpr2", (rhs parseState 1).EndRange), false, rhs parseState 1))
)
-//# 5120 "src/Compiler/pars.fsy"
+//# 5310 "src/Compiler/pars.fsy"
: 'gentype_quoteExpr));
-//# 14305 "pars.fs"
+//# 14707 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_arrayExprElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5125 "src/Compiler/pars.fsy"
+//# 5315 "src/Compiler/pars.fsy"
_2 (lhs parseState)
)
-//# 5125 "src/Compiler/pars.fsy"
+//# 5315 "src/Compiler/pars.fsy"
: 'gentype_arrayExpr));
-//# 14316 "pars.fs"
+//# 14718 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_arrayExprElements in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5128 "src/Compiler/pars.fsy"
+//# 5318 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar())
exprFromParseError (_2 (rhs2 parseState 1 2))
)
-//# 5128 "src/Compiler/pars.fsy"
+//# 5318 "src/Compiler/pars.fsy"
: 'gentype_arrayExpr));
-//# 14329 "pars.fs"
+//# 14731 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5132 "src/Compiler/pars.fsy"
+//# 5322 "src/Compiler/pars.fsy"
(* silent recovery *) SynExpr.ArrayOrList(true, [ ], lhs parseState)
)
-//# 5132 "src/Compiler/pars.fsy"
+//# 5322 "src/Compiler/pars.fsy"
: 'gentype_arrayExpr));
-//# 14339 "pars.fs"
+//# 14741 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5135 "src/Compiler/pars.fsy"
+//# 5325 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar())
(* silent recovery *)
exprFromParseError (SynExpr.ArrayOrList(true, [ ], rhs parseState 1))
)
-//# 5135 "src/Compiler/pars.fsy"
+//# 5325 "src/Compiler/pars.fsy"
: 'gentype_arrayExpr));
-//# 14352 "pars.fs"
+//# 14754 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5141 "src/Compiler/pars.fsy"
+//# 5331 "src/Compiler/pars.fsy"
SynExpr.Const(SynConst.Unit, (rhs2 parseState 1 2))
)
-//# 5141 "src/Compiler/pars.fsy"
+//# 5331 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14363 "pars.fs"
+//# 14765 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenExprBody in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5144 "src/Compiler/pars.fsy"
+//# 5334 "src/Compiler/pars.fsy"
let m = rhs2 parseState 1 3
SynExpr.Paren(_2 m, rhs parseState 1, Some(rhs parseState 3), m)
)
-//# 5144 "src/Compiler/pars.fsy"
+//# 5334 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14376 "pars.fs"
+//# 14778 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_parenExprBody in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_other_than_rparen_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5148 "src/Compiler/pars.fsy"
+//# 5338 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).End
SynExpr.Paren(exprFromParseError (_2 mLhs), rhs parseState 1, None, mLhs)
)
-//# 5148 "src/Compiler/pars.fsy"
+//# 5338 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14390 "pars.fs"
+//# 14792 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5153 "src/Compiler/pars.fsy"
+//# 5343 "src/Compiler/pars.fsy"
// silent recovery
SynExpr.Paren(arbExpr ("parenExpr1", (rhs parseState 1).EndRange), (rhs parseState 1), Some(rhs parseState 3), (rhs2 parseState 1 3))
)
-//# 5153 "src/Compiler/pars.fsy"
+//# 5343 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14402 "pars.fs"
+//# 14804 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5157 "src/Compiler/pars.fsy"
+//# 5347 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
arbExpr ("parenExpr2tcs", mLhs)
)
-//# 5157 "src/Compiler/pars.fsy"
+//# 5347 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14414 "pars.fs"
+//# 14816 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5162 "src/Compiler/pars.fsy"
+//# 5352 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
arbExpr ("parenExpr2mcs", mLhs)
)
-//# 5162 "src/Compiler/pars.fsy"
+//# 5352 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14426 "pars.fs"
+//# 14828 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5167 "src/Compiler/pars.fsy"
+//# 5357 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
arbExpr ("parenExpr2rbcs", mLhs)
)
-//# 5167 "src/Compiler/pars.fsy"
+//# 5357 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14438 "pars.fs"
+//# 14840 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5172 "src/Compiler/pars.fsy"
+//# 5362 "src/Compiler/pars.fsy"
let lparenRange = (rhs parseState 1)
reportParseErrorAt lparenRange (FSComp.SR.parsUnmatchedParen())
SynExpr.Paren(arbExpr ("parenExpr2obecs", lparenRange.EndRange), lparenRange, None, lparenRange)
)
-//# 5172 "src/Compiler/pars.fsy"
+//# 5362 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14450 "pars.fs"
+//# 14852 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5177 "src/Compiler/pars.fsy"
+//# 5367 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
arbExpr ("parenExpr2", (lhs parseState))
)
-//# 5177 "src/Compiler/pars.fsy"
+//# 5367 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14462 "pars.fs"
+//# 14864 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynExpr in
let _4 = parseState.GetInput(4) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5188 "src/Compiler/pars.fsy"
+//# 5378 "src/Compiler/pars.fsy"
let mComma = rhs parseState 2
let mLparen = rhs parseState 1
let mRparen = rhs parseState 3
@@ -14480,9 +14882,9 @@ let _fsyacc_reductions = lazy [|
| expr -> SynExpr.Tuple(false, [errorExpr; expr], [mComma], mTuple)
SynExpr.Paren(tupleExpr, mLparen, Some mRparen, rhs2 parseState 1 4)
)
-//# 5188 "src/Compiler/pars.fsy"
+//# 5378 "src/Compiler/pars.fsy"
: 'gentype_parenExpr));
-//# 14485 "pars.fs"
+//# 14887 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typars in
let _4 = parseState.GetInput(4) :?> 'gentype_classMemberSpfn in
@@ -14491,83 +14893,84 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5203 "src/Compiler/pars.fsy"
+//# 5393 "src/Compiler/pars.fsy"
(fun m -> SynExpr.TraitCall(_1, _4, _6, m))
)
-//# 5203 "src/Compiler/pars.fsy"
+//# 5393 "src/Compiler/pars.fsy"
: 'gentype_parenExprBody));
-//# 14499 "pars.fs"
+//# 14901 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5206 "src/Compiler/pars.fsy"
+//# 5396 "src/Compiler/pars.fsy"
(fun _m -> _1)
)
-//# 5206 "src/Compiler/pars.fsy"
+//# 5396 "src/Compiler/pars.fsy"
: 'gentype_parenExprBody));
-//# 14510 "pars.fs"
+//# 14912 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_inlineAssemblyExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5209 "src/Compiler/pars.fsy"
+//# 5399 "src/Compiler/pars.fsy"
_1
)
-//# 5209 "src/Compiler/pars.fsy"
+//# 5399 "src/Compiler/pars.fsy"
: 'gentype_parenExprBody));
-//# 14521 "pars.fs"
+//# 14923 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5213 "src/Compiler/pars.fsy"
+//# 5403 "src/Compiler/pars.fsy"
SynType.Var(_1, rhs parseState 1)
)
-//# 5213 "src/Compiler/pars.fsy"
+//# 5403 "src/Compiler/pars.fsy"
: 'gentype_typars));
-//# 14532 "pars.fs"
+//# 14934 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typarAlts in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5216 "src/Compiler/pars.fsy"
+//# 5406 "src/Compiler/pars.fsy"
let m = rhs2 parseState 1 3
SynType.Paren(_2, m)
)
-//# 5216 "src/Compiler/pars.fsy"
+//# 5406 "src/Compiler/pars.fsy"
: 'gentype_typars));
-//# 14545 "pars.fs"
+//# 14947 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typarAlts in
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5221 "src/Compiler/pars.fsy"
+//# 5411 "src/Compiler/pars.fsy"
let mOr = rhs parseState 2
- let m = unionRanges _1.Range _3.Range
+ let appType : SynType = _3
+ let m = unionRanges _1.Range appType.Range
SynType.Or(_1, _3, m, { OrKeyword = mOr })
)
-//# 5221 "src/Compiler/pars.fsy"
+//# 5411 "src/Compiler/pars.fsy"
: 'gentype_typarAlts));
-//# 14559 "pars.fs"
+//# 14962 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5226 "src/Compiler/pars.fsy"
+//# 5417 "src/Compiler/pars.fsy"
SynType.Var(_1, rhs parseState 1)
)
-//# 5226 "src/Compiler/pars.fsy"
+//# 5417 "src/Compiler/pars.fsy"
: 'gentype_typarAlts));
-//# 14570 "pars.fs"
+//# 14973 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_braceExprBody in
@@ -14575,13 +14978,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5230 "src/Compiler/pars.fsy"
+//# 5421 "src/Compiler/pars.fsy"
let m, r = _2
r (rhs2 parseState 1 3)
)
-//# 5230 "src/Compiler/pars.fsy"
+//# 5421 "src/Compiler/pars.fsy"
: 'gentype_braceExpr));
-//# 14584 "pars.fs"
+//# 14987 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_braceExprBody in
@@ -14589,194 +14992,195 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5234 "src/Compiler/pars.fsy"
+//# 5425 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace())
let m, r = _2
// Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions
r (unionRanges (rhs parseState 1) m)
)
-//# 5234 "src/Compiler/pars.fsy"
+//# 5425 "src/Compiler/pars.fsy"
: 'gentype_braceExpr));
-//# 14600 "pars.fs"
+//# 15003 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5240 "src/Compiler/pars.fsy"
+//# 5431 "src/Compiler/pars.fsy"
// silent recovery
arbExpr ("braceExpr", rhs2 parseState 1 3)
)
-//# 5240 "src/Compiler/pars.fsy"
+//# 5431 "src/Compiler/pars.fsy"
: 'gentype_braceExpr));
-//# 14613 "pars.fs"
+//# 15016 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5244 "src/Compiler/pars.fsy"
+//# 5435 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace())
// Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions
SynExpr.Record(None, None, [], rhs parseState 1)
)
-//# 5244 "src/Compiler/pars.fsy"
+//# 5435 "src/Compiler/pars.fsy"
: 'gentype_braceExpr));
-//# 14627 "pars.fs"
+//# 15030 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5249 "src/Compiler/pars.fsy"
+//# 5440 "src/Compiler/pars.fsy"
let m = rhs2 parseState 1 2
SynExpr.Record(None, None, [], m)
)
-//# 5249 "src/Compiler/pars.fsy"
+//# 5440 "src/Compiler/pars.fsy"
: 'gentype_braceExpr));
-//# 14640 "pars.fs"
+//# 15043 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recdExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5254 "src/Compiler/pars.fsy"
+//# 5445 "src/Compiler/pars.fsy"
(lhs parseState), (fun m -> let a, b, c = _1 in SynExpr.Record(a, b, c, m))
)
-//# 5254 "src/Compiler/pars.fsy"
+//# 5445 "src/Compiler/pars.fsy"
: 'gentype_braceExprBody));
-//# 14651 "pars.fs"
+//# 15054 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5257 "src/Compiler/pars.fsy"
+//# 5448 "src/Compiler/pars.fsy"
_1
)
-//# 5257 "src/Compiler/pars.fsy"
+//# 5448 "src/Compiler/pars.fsy"
: 'gentype_braceExprBody));
-//# 14662 "pars.fs"
+//# 15065 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_computationExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5260 "src/Compiler/pars.fsy"
+//# 5451 "src/Compiler/pars.fsy"
_1
)
-//# 5260 "src/Compiler/pars.fsy"
+//# 5451 "src/Compiler/pars.fsy"
: 'gentype_braceExprBody));
-//# 14673 "pars.fs"
+//# 15076 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5264 "src/Compiler/pars.fsy"
+//# 5455 "src/Compiler/pars.fsy"
(fun mLhs -> SynExpr.ArrayOrListComputed(false, _1, mLhs))
)
-//# 5264 "src/Compiler/pars.fsy"
+//# 5455 "src/Compiler/pars.fsy"
: 'gentype_listExprElements));
-//# 14684 "pars.fs"
+//# 15087 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5267 "src/Compiler/pars.fsy"
+//# 5458 "src/Compiler/pars.fsy"
(fun mLhs -> SynExpr.ArrayOrList(false, [ ], mLhs))
)
-//# 5267 "src/Compiler/pars.fsy"
+//# 5458 "src/Compiler/pars.fsy"
: 'gentype_listExprElements));
-//# 14694 "pars.fs"
+//# 15097 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5271 "src/Compiler/pars.fsy"
+//# 5462 "src/Compiler/pars.fsy"
(fun mLhs -> SynExpr.ArrayOrListComputed(true, _1, mLhs))
)
-//# 5271 "src/Compiler/pars.fsy"
+//# 5462 "src/Compiler/pars.fsy"
: 'gentype_arrayExprElements));
-//# 14705 "pars.fs"
+//# 15108 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5274 "src/Compiler/pars.fsy"
+//# 5465 "src/Compiler/pars.fsy"
(fun mLhs -> SynExpr.ArrayOrList(true, [ ], mLhs))
)
-//# 5274 "src/Compiler/pars.fsy"
+//# 5465 "src/Compiler/pars.fsy"
: 'gentype_arrayExprElements));
-//# 14715 "pars.fs"
+//# 15118 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5278 "src/Compiler/pars.fsy"
+//# 5469 "src/Compiler/pars.fsy"
_1.Range, (fun mLhs -> SynExpr.ComputationExpr(false, _1, mLhs))
)
-//# 5278 "src/Compiler/pars.fsy"
+//# 5469 "src/Compiler/pars.fsy"
: 'gentype_computationExpr));
-//# 14726 "pars.fs"
+//# 15129 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5282 "src/Compiler/pars.fsy"
+//# 5473 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 1
let expr = _2 mArrow
- SynExpr.YieldOrReturn((true, false), expr, unionRanges mArrow expr.Range)
+ let trivia: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = mArrow }
+ SynExpr.YieldOrReturn((true, false), expr, (unionRanges mArrow expr.Range), trivia)
)
-//# 5282 "src/Compiler/pars.fsy"
+//# 5473 "src/Compiler/pars.fsy"
: 'gentype_arrowThenExprR));
-//# 14739 "pars.fs"
+//# 15143 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5288 "src/Compiler/pars.fsy"
+//# 5480 "src/Compiler/pars.fsy"
_1, _3, true, DebugPointAtInOrTo.Yes(rhs parseState 2)
)
-//# 5288 "src/Compiler/pars.fsy"
+//# 5480 "src/Compiler/pars.fsy"
: 'gentype_forLoopBinder));
-//# 14751 "pars.fs"
+//# 15155 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5291 "src/Compiler/pars.fsy"
+//# 5483 "src/Compiler/pars.fsy"
let mIn = rhs parseState 2
if not _3 then reportParseErrorAt mIn (FSComp.SR.parsExpectedExpressionAfterToken ())
_1, arbExpr ("forLoopBinder1", mIn.EndRange), false, DebugPointAtInOrTo.Yes mIn
)
-//# 5291 "src/Compiler/pars.fsy"
+//# 5483 "src/Compiler/pars.fsy"
: 'gentype_forLoopBinder));
-//# 14765 "pars.fs"
+//# 15169 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5296 "src/Compiler/pars.fsy"
+//# 5488 "src/Compiler/pars.fsy"
let mPat = rhs parseState 1
if not _2 then reportParseErrorAt mPat (FSComp.SR.parsInOrEqualExpected ())
_1, arbExpr ("forLoopBinder2", mPat.EndRange), false, DebugPointAtInOrTo.Yes(rhs parseState 2)
)
-//# 5296 "src/Compiler/pars.fsy"
+//# 5488 "src/Compiler/pars.fsy"
: 'gentype_forLoopBinder));
-//# 14779 "pars.fs"
+//# 15183 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in
let _3 = parseState.GetInput(3) :?> SynExpr in
@@ -14785,34 +15189,34 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5302 "src/Compiler/pars.fsy"
+//# 5494 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
let spTo = DebugPointAtInOrTo.Yes(rhs parseState 4)
idOfPat parseState (rhs parseState 1) _1, Some mEquals, _3, _4, _5, spTo
)
-//# 5302 "src/Compiler/pars.fsy"
+//# 5494 "src/Compiler/pars.fsy"
: 'gentype_forLoopRange));
-//# 14795 "pars.fs"
+//# 15199 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5307 "src/Compiler/pars.fsy"
+//# 5499 "src/Compiler/pars.fsy"
true
)
-//# 5307 "src/Compiler/pars.fsy"
+//# 5499 "src/Compiler/pars.fsy"
: 'gentype_forLoopDirection));
-//# 14805 "pars.fs"
+//# 15209 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5309 "src/Compiler/pars.fsy"
+//# 5501 "src/Compiler/pars.fsy"
false
)
-//# 5309 "src/Compiler/pars.fsy"
+//# 5501 "src/Compiler/pars.fsy"
: 'gentype_forLoopDirection));
-//# 14815 "pars.fs"
+//# 15219 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_string in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_inlineAssemblyTypeArg in
@@ -14821,69 +15225,69 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5313 "src/Compiler/pars.fsy"
+//# 5505 "src/Compiler/pars.fsy"
if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning (lhs parseState)
let (s, _), sm = _2, rhs parseState 2
(fun m ->
let ilInstrs = ParseAssemblyCodeInstructions s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion parseState.LexBuffer.StrictIndentation sm
SynExpr.LibraryOnlyILAssembly(box ilInstrs, _3, List.rev _4, _5, m))
)
-//# 5313 "src/Compiler/pars.fsy"
+//# 5505 "src/Compiler/pars.fsy"
: 'gentype_inlineAssemblyExpr));
-//# 14833 "pars.fs"
+//# 15237 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_optCurriedArgExprs in
let _2 = parseState.GetInput(2) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5321 "src/Compiler/pars.fsy"
+//# 5513 "src/Compiler/pars.fsy"
_2 :: _1
)
-//# 5321 "src/Compiler/pars.fsy"
+//# 5513 "src/Compiler/pars.fsy"
: 'gentype_optCurriedArgExprs));
-//# 14845 "pars.fs"
+//# 15249 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5324 "src/Compiler/pars.fsy"
+//# 5516 "src/Compiler/pars.fsy"
[]
)
-//# 5324 "src/Compiler/pars.fsy"
+//# 5516 "src/Compiler/pars.fsy"
: 'gentype_optCurriedArgExprs));
-//# 14855 "pars.fs"
+//# 15259 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5328 "src/Compiler/pars.fsy"
+//# 5520 "src/Compiler/pars.fsy"
None
)
-//# 5328 "src/Compiler/pars.fsy"
+//# 5520 "src/Compiler/pars.fsy"
: 'gentype_opt_atomicExprAfterType));
-//# 14865 "pars.fs"
+//# 15269 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5331 "src/Compiler/pars.fsy"
+//# 5523 "src/Compiler/pars.fsy"
Some(_1)
)
-//# 5331 "src/Compiler/pars.fsy"
+//# 5523 "src/Compiler/pars.fsy"
: 'gentype_opt_atomicExprAfterType));
-//# 14876 "pars.fs"
+//# 15280 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5335 "src/Compiler/pars.fsy"
+//# 5527 "src/Compiler/pars.fsy"
[]
)
-//# 5335 "src/Compiler/pars.fsy"
+//# 5527 "src/Compiler/pars.fsy"
: 'gentype_opt_inlineAssemblyTypeArg));
-//# 14886 "pars.fs"
+//# 15290 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeKeyword in
let _3 = parseState.GetInput(3) :?> SynType in
@@ -14891,44 +15295,44 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5338 "src/Compiler/pars.fsy"
+//# 5530 "src/Compiler/pars.fsy"
[_3]
)
-//# 5338 "src/Compiler/pars.fsy"
+//# 5530 "src/Compiler/pars.fsy"
: 'gentype_opt_inlineAssemblyTypeArg));
-//# 14899 "pars.fs"
+//# 15303 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5342 "src/Compiler/pars.fsy"
+//# 5534 "src/Compiler/pars.fsy"
[]
)
-//# 5342 "src/Compiler/pars.fsy"
+//# 5534 "src/Compiler/pars.fsy"
: 'gentype_optInlineAssemblyReturnTypes));
-//# 14909 "pars.fs"
+//# 15313 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5345 "src/Compiler/pars.fsy"
+//# 5537 "src/Compiler/pars.fsy"
[_2]
)
-//# 5345 "src/Compiler/pars.fsy"
+//# 5537 "src/Compiler/pars.fsy"
: 'gentype_optInlineAssemblyReturnTypes));
-//# 14920 "pars.fs"
+//# 15324 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5348 "src/Compiler/pars.fsy"
+//# 5540 "src/Compiler/pars.fsy"
[]
)
-//# 5348 "src/Compiler/pars.fsy"
+//# 5540 "src/Compiler/pars.fsy"
: 'gentype_optInlineAssemblyReturnTypes));
-//# 14931 "pars.fs"
+//# 15335 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -14938,7 +15342,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5352 "src/Compiler/pars.fsy"
+//# 5544 "src/Compiler/pars.fsy"
let arg = match _4 with None -> mkSynUnit (lhs parseState) | Some e -> e
let l = List.rev _5
let dummyField = mkRecdField (SynLongIdent([], [], [])) // dummy identifier, it will be discarded
@@ -14947,21 +15351,21 @@ let _fsyacc_reductions = lazy [|
let bindings = List.tail l
(Some(_2, arg, rhs2 parseState 2 4, inheritsSep, rhs parseState 1), None, bindings)
)
-//# 5352 "src/Compiler/pars.fsy"
+//# 5544 "src/Compiler/pars.fsy"
: 'gentype_recdExpr));
-//# 14952 "pars.fs"
+//# 15356 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recdExprCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5361 "src/Compiler/pars.fsy"
+//# 5553 "src/Compiler/pars.fsy"
let a, b = _1
None, a, b
)
-//# 5361 "src/Compiler/pars.fsy"
+//# 5553 "src/Compiler/pars.fsy"
: 'gentype_recdExpr));
-//# 14964 "pars.fs"
+//# 15368 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> SynExpr in
@@ -14970,7 +15374,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5366 "src/Compiler/pars.fsy"
+//# 5558 "src/Compiler/pars.fsy"
match _1 with
| LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) ->
let f = mkRecdField f
@@ -14980,16 +15384,16 @@ let _fsyacc_reductions = lazy [|
(None, l)
| _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding())
)
-//# 5366 "src/Compiler/pars.fsy"
+//# 5558 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 14985 "pars.fs"
+//# 15389 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5376 "src/Compiler/pars.fsy"
+//# 5568 "src/Compiler/pars.fsy"
match _1 with
| LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) ->
let f = mkRecdField f
@@ -14998,41 +15402,41 @@ let _fsyacc_reductions = lazy [|
None, l
| _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding ())
)
-//# 5376 "src/Compiler/pars.fsy"
+//# 5568 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15003 "pars.fs"
+//# 15407 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5385 "src/Compiler/pars.fsy"
+//# 5577 "src/Compiler/pars.fsy"
let mExpr = rhs parseState 1
reportParseErrorAt mExpr (FSComp.SR.parsFieldBinding ())
Some(_1, (mExpr.EndRange, None)), []
)
-//# 5385 "src/Compiler/pars.fsy"
+//# 5577 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15016 "pars.fs"
+//# 15420 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5394 "src/Compiler/pars.fsy"
+//# 5586 "src/Compiler/pars.fsy"
let m = rhs parseState 1
reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName())
reportParseErrorAt m (FSComp.SR.parsFieldBinding())
let f = mkUnderscoreRecdField m
(None, [ SynExprRecordField(f, None, None, None) ])
)
-//# 5394 "src/Compiler/pars.fsy"
+//# 5586 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15030 "pars.fs"
+//# 15434 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5401 "src/Compiler/pars.fsy"
+//# 5593 "src/Compiler/pars.fsy"
let m = rhs parseState 1
reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName())
let f = mkUnderscoreRecdField m
@@ -15040,9 +15444,9 @@ let _fsyacc_reductions = lazy [|
reportParseErrorAt (rhs2 parseState 1 2) (FSComp.SR.parsFieldBinding())
(None, [ SynExprRecordField(f, Some mEquals, None, None) ])
)
-//# 5401 "src/Compiler/pars.fsy"
+//# 5593 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15045 "pars.fs"
+//# 15449 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynExpr in
let _4 = parseState.GetInput(4) :?> 'gentype_recdExprBindings in
@@ -15050,7 +15454,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5410 "src/Compiler/pars.fsy"
+//# 5602 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderscoreInvalidFieldName())
let f = mkUnderscoreRecdField (rhs parseState 1)
let mEquals = rhs parseState 2
@@ -15058,9 +15462,9 @@ let _fsyacc_reductions = lazy [|
let l = rebindRanges (f, Some mEquals, Some _3) l _5
(None, l)
)
-//# 5410 "src/Compiler/pars.fsy"
+//# 5602 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15063 "pars.fs"
+//# 15467 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recdBinding in
@@ -15069,26 +15473,26 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5419 "src/Compiler/pars.fsy"
+//# 5611 "src/Compiler/pars.fsy"
let l = List.rev _4
let l = rebindRanges _3 l _5
(Some(_1, (rhs parseState 2, None)), l)
)
-//# 5419 "src/Compiler/pars.fsy"
+//# 5611 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15079 "pars.fs"
+//# 15483 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_seps_recd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5424 "src/Compiler/pars.fsy"
+//# 5616 "src/Compiler/pars.fsy"
(Some(_1, (rhs parseState 2, None)), [])
)
-//# 5424 "src/Compiler/pars.fsy"
+//# 5616 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15091 "pars.fs"
+//# 15495 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_recdBinding in
@@ -15097,99 +15501,99 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5427 "src/Compiler/pars.fsy"
+//# 5619 "src/Compiler/pars.fsy"
let l = List.rev _4
let l = rebindRanges _3 l _5
(Some(_1, (rhs parseState 2, None)), l)
)
-//# 5427 "src/Compiler/pars.fsy"
+//# 5619 "src/Compiler/pars.fsy"
: 'gentype_recdExprCore));
-//# 15107 "pars.fs"
+//# 15511 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_seps_recd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5433 "src/Compiler/pars.fsy"
+//# 5625 "src/Compiler/pars.fsy"
Some _1
)
-//# 5433 "src/Compiler/pars.fsy"
+//# 5625 "src/Compiler/pars.fsy"
: 'gentype_opt_seps_recd));
-//# 15118 "pars.fs"
+//# 15522 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5436 "src/Compiler/pars.fsy"
+//# 5628 "src/Compiler/pars.fsy"
None
)
-//# 5436 "src/Compiler/pars.fsy"
+//# 5628 "src/Compiler/pars.fsy"
: 'gentype_opt_seps_recd));
-//# 15128 "pars.fs"
+//# 15532 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5440 "src/Compiler/pars.fsy"
+//# 5632 "src/Compiler/pars.fsy"
(rhs parseState 1), None
)
-//# 5440 "src/Compiler/pars.fsy"
+//# 5632 "src/Compiler/pars.fsy"
: 'gentype_seps_recd));
-//# 15138 "pars.fs"
+//# 15542 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5443 "src/Compiler/pars.fsy"
+//# 5635 "src/Compiler/pars.fsy"
let m = (rhs parseState 1)
m, Some m.End
)
-//# 5443 "src/Compiler/pars.fsy"
+//# 5635 "src/Compiler/pars.fsy"
: 'gentype_seps_recd));
-//# 15149 "pars.fs"
+//# 15553 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5447 "src/Compiler/pars.fsy"
+//# 5639 "src/Compiler/pars.fsy"
(rhs2 parseState 1 2), Some (rhs parseState 1).End
)
-//# 5447 "src/Compiler/pars.fsy"
+//# 5639 "src/Compiler/pars.fsy"
: 'gentype_seps_recd));
-//# 15159 "pars.fs"
+//# 15563 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5450 "src/Compiler/pars.fsy"
+//# 5642 "src/Compiler/pars.fsy"
(rhs2 parseState 1 2), Some (rhs parseState 2).End
)
-//# 5450 "src/Compiler/pars.fsy"
+//# 5642 "src/Compiler/pars.fsy"
: 'gentype_seps_recd));
-//# 15169 "pars.fs"
+//# 15573 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5456 "src/Compiler/pars.fsy"
+//# 5648 "src/Compiler/pars.fsy"
mkRecdField _1
)
-//# 5456 "src/Compiler/pars.fsy"
+//# 5648 "src/Compiler/pars.fsy"
: 'gentype_pathOrUnderscore));
-//# 15180 "pars.fs"
+//# 15584 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5459 "src/Compiler/pars.fsy"
+//# 5651 "src/Compiler/pars.fsy"
let m = rhs parseState 1
reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName())
mkUnderscoreRecdField m
)
-//# 5459 "src/Compiler/pars.fsy"
+//# 5651 "src/Compiler/pars.fsy"
: 'gentype_pathOrUnderscore));
-//# 15192 "pars.fs"
+//# 15596 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recdExprBindings in
let _2 = parseState.GetInput(2) :?> 'gentype_seps_recd in
@@ -15197,87 +15601,87 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5465 "src/Compiler/pars.fsy"
+//# 5657 "src/Compiler/pars.fsy"
(_3, Some _2) :: _1
)
-//# 5465 "src/Compiler/pars.fsy"
+//# 5657 "src/Compiler/pars.fsy"
: 'gentype_recdExprBindings));
-//# 15205 "pars.fs"
+//# 15609 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5468 "src/Compiler/pars.fsy"
+//# 5660 "src/Compiler/pars.fsy"
[]
)
-//# 5468 "src/Compiler/pars.fsy"
+//# 5660 "src/Compiler/pars.fsy"
: 'gentype_recdExprBindings));
-//# 15215 "pars.fs"
+//# 15619 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in
let _3 = parseState.GetInput(3) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5472 "src/Compiler/pars.fsy"
+//# 5664 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
(_1, Some mEquals, Some _3)
)
-//# 5472 "src/Compiler/pars.fsy"
+//# 5664 "src/Compiler/pars.fsy"
: 'gentype_recdBinding));
-//# 15228 "pars.fs"
+//# 15632 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5476 "src/Compiler/pars.fsy"
+//# 5668 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
(_1, Some mEquals, None)
)
-//# 5476 "src/Compiler/pars.fsy"
+//# 5668 "src/Compiler/pars.fsy"
: 'gentype_recdBinding));
-//# 15241 "pars.fs"
+//# 15645 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5481 "src/Compiler/pars.fsy"
+//# 5673 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 2
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
(_1, Some mEquals, None)
)
-//# 5481 "src/Compiler/pars.fsy"
+//# 5673 "src/Compiler/pars.fsy"
: 'gentype_recdBinding));
-//# 15255 "pars.fs"
+//# 15659 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5486 "src/Compiler/pars.fsy"
+//# 5678 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
(_1, None, None)
)
-//# 5486 "src/Compiler/pars.fsy"
+//# 5678 "src/Compiler/pars.fsy"
: 'gentype_recdBinding));
-//# 15267 "pars.fs"
+//# 15671 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in
let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5490 "src/Compiler/pars.fsy"
+//# 5682 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
(_1, None, None)
)
-//# 5490 "src/Compiler/pars.fsy"
+//# 5682 "src/Compiler/pars.fsy"
: 'gentype_recdBinding));
-//# 15280 "pars.fs"
+//# 15684 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objExprBaseCall in
let _2 = parseState.GetInput(2) :?> 'gentype_objExprBindings in
@@ -15286,15 +15690,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5501 "src/Compiler/pars.fsy"
+//# 5693 "src/Compiler/pars.fsy"
let mNewExpr = rhs parseState 1
let fullRange = match _4 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 4)
let mWithKwd, bindings, members = _2
fullRange, (fun m -> let (a, b) = _1 in SynExpr.ObjExpr(a, b, Some mWithKwd, bindings, members, _4, mNewExpr, m))
)
-//# 5501 "src/Compiler/pars.fsy"
+//# 5693 "src/Compiler/pars.fsy"
: 'gentype_objExpr));
-//# 15297 "pars.fs"
+//# 15701 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objExprBaseCall in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_OBLOCKSEP in
@@ -15302,26 +15706,26 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5507 "src/Compiler/pars.fsy"
+//# 5699 "src/Compiler/pars.fsy"
let mNewExpr = rhs parseState 1
let fullRange = match _3 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 3)
fullRange, (fun m -> let (a, b) = _1 in SynExpr.ObjExpr(a, b, None, [], [], _3, mNewExpr, m))
)
-//# 5507 "src/Compiler/pars.fsy"
+//# 5699 "src/Compiler/pars.fsy"
: 'gentype_objExpr));
-//# 15312 "pars.fs"
+//# 15716 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5512 "src/Compiler/pars.fsy"
+//# 5704 "src/Compiler/pars.fsy"
let mNewExpr = rhs parseState 1
(rhs2 parseState 1 2), (fun m -> let (a, b) = _2, None in SynExpr.ObjExpr(a, b, None, [], [], [], mNewExpr, m))
)
-//# 5512 "src/Compiler/pars.fsy"
+//# 5704 "src/Compiler/pars.fsy"
: 'gentype_objExpr));
-//# 15324 "pars.fs"
+//# 15728 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -15330,12 +15734,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5517 "src/Compiler/pars.fsy"
+//# 5709 "src/Compiler/pars.fsy"
(_2, Some(_4, Some(_5)))
)
-//# 5517 "src/Compiler/pars.fsy"
+//# 5709 "src/Compiler/pars.fsy"
: 'gentype_objExprBaseCall));
-//# 15338 "pars.fs"
+//# 15742 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in
@@ -15343,78 +15747,78 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5520 "src/Compiler/pars.fsy"
+//# 5712 "src/Compiler/pars.fsy"
(_2, Some(_4, None))
)
-//# 5520 "src/Compiler/pars.fsy"
+//# 5712 "src/Compiler/pars.fsy"
: 'gentype_objExprBaseCall));
-//# 15351 "pars.fs"
+//# 15755 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5523 "src/Compiler/pars.fsy"
+//# 5715 "src/Compiler/pars.fsy"
_2, None
)
-//# 5523 "src/Compiler/pars.fsy"
+//# 5715 "src/Compiler/pars.fsy"
: 'gentype_objExprBaseCall));
-//# 15362 "pars.fs"
+//# 15766 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objExprBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5528 "src/Compiler/pars.fsy"
+//# 5720 "src/Compiler/pars.fsy"
let mWithKwd, bindings, members = _1
Some mWithKwd, bindings, members
)
-//# 5528 "src/Compiler/pars.fsy"
+//# 5720 "src/Compiler/pars.fsy"
: 'gentype_opt_objExprBindings));
-//# 15374 "pars.fs"
+//# 15778 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5532 "src/Compiler/pars.fsy"
+//# 5724 "src/Compiler/pars.fsy"
None, [], []
)
-//# 5532 "src/Compiler/pars.fsy"
+//# 5724 "src/Compiler/pars.fsy"
: 'gentype_opt_objExprBindings));
-//# 15384 "pars.fs"
+//# 15788 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_localBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5536 "src/Compiler/pars.fsy"
+//# 5728 "src/Compiler/pars.fsy"
let mWithKwd = (rhs parseState 1)
let _localBindingsLastRange, localBindingsBuilder = _2
mWithKwd, (localBindingsBuilder PreXmlDoc.Empty [] None SynLeadingKeyword.Synthetic), []
)
-//# 5536 "src/Compiler/pars.fsy"
+//# 5728 "src/Compiler/pars.fsy"
: 'gentype_objExprBindings));
-//# 15397 "pars.fs"
+//# 15801 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_localBindings in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5541 "src/Compiler/pars.fsy"
+//# 5733 "src/Compiler/pars.fsy"
let mWithKwd = (rhs parseState 1)
let _localBindingsLastRange, localBindingsBuilder = _2
mWithKwd, (localBindingsBuilder PreXmlDoc.Empty [] None SynLeadingKeyword.Synthetic), []
)
-//# 5541 "src/Compiler/pars.fsy"
+//# 5733 "src/Compiler/pars.fsy"
: 'gentype_objExprBindings));
-//# 15410 "pars.fs"
+//# 15814 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationBlock in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_declEnd in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5546 "src/Compiler/pars.fsy"
+//# 5738 "src/Compiler/pars.fsy"
let mWithKwd = rhs parseState 1
let memberDefns =
_2 |>
@@ -15424,64 +15828,64 @@ let _fsyacc_reductions = lazy [|
| x -> errorR(Error(FSComp.SR.parsMemberIllegalInObjectImplementation(), x.Range)); None))
mWithKwd, [], memberDefns
)
-//# 5546 "src/Compiler/pars.fsy"
+//# 5738 "src/Compiler/pars.fsy"
: 'gentype_objExprBindings));
-//# 15429 "pars.fs"
+//# 15833 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objExprInterface in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5556 "src/Compiler/pars.fsy"
+//# 5748 "src/Compiler/pars.fsy"
_1 :: _2
)
-//# 5556 "src/Compiler/pars.fsy"
+//# 5748 "src/Compiler/pars.fsy"
: 'gentype_objExprInterfaces));
-//# 15441 "pars.fs"
+//# 15845 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5560 "src/Compiler/pars.fsy"
+//# 5752 "src/Compiler/pars.fsy"
[]
)
-//# 5560 "src/Compiler/pars.fsy"
+//# 5752 "src/Compiler/pars.fsy"
: 'gentype_opt_objExprInterfaces));
-//# 15451 "pars.fs"
+//# 15855 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_objExprInterface in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5563 "src/Compiler/pars.fsy"
+//# 5755 "src/Compiler/pars.fsy"
_1 :: _2
)
-//# 5563 "src/Compiler/pars.fsy"
+//# 5755 "src/Compiler/pars.fsy"
: 'gentype_opt_objExprInterfaces));
-//# 15463 "pars.fs"
+//# 15867 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5566 "src/Compiler/pars.fsy"
+//# 5758 "src/Compiler/pars.fsy"
(* silent recovery *) _2
)
-//# 5566 "src/Compiler/pars.fsy"
+//# 5758 "src/Compiler/pars.fsy"
: 'gentype_opt_objExprInterfaces));
-//# 15474 "pars.fs"
+//# 15878 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_interfaceMember in
- let _2 = parseState.GetInput(2) :?> 'gentype_appType in
+ let _2 = parseState.GetInput(2) :?> 'gentype_appTypeWithoutNull in
let _3 = parseState.GetInput(3) :?> 'gentype_opt_objExprBindings in
let _4 = parseState.GetInput(4) :?> 'gentype_opt_declEnd in
let _5 = parseState.GetInput(5) :?> 'gentype_opt_OBLOCKSEP in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5570 "src/Compiler/pars.fsy"
+//# 5762 "src/Compiler/pars.fsy"
let mWithKwd, bindings, members = _3
let m =
match List.tryLast members with
@@ -15491,39 +15895,39 @@ let _fsyacc_reductions = lazy [|
mkFileIndexRange mInterface.FileIndex mInterface.Start ms.Range.End
SynInterfaceImpl(_2, mWithKwd, bindings, members, m)
)
-//# 5570 "src/Compiler/pars.fsy"
+//# 5762 "src/Compiler/pars.fsy"
: 'gentype_objExprInterface));
-//# 15496 "pars.fs"
+//# 15900 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_braceBarExprCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5581 "src/Compiler/pars.fsy"
+//# 5773 "src/Compiler/pars.fsy"
let mStruct = rhs parseState 1
_2 (Some mStruct)
)
-//# 5581 "src/Compiler/pars.fsy"
+//# 5773 "src/Compiler/pars.fsy"
: 'gentype_braceBarExpr));
-//# 15508 "pars.fs"
+//# 15912 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_braceBarExprCore in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5585 "src/Compiler/pars.fsy"
+//# 5777 "src/Compiler/pars.fsy"
_1 None
)
-//# 5585 "src/Compiler/pars.fsy"
+//# 5777 "src/Compiler/pars.fsy"
: 'gentype_braceBarExpr));
-//# 15519 "pars.fs"
+//# 15923 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recdExprCore in
let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5589 "src/Compiler/pars.fsy"
+//# 5781 "src/Compiler/pars.fsy"
let orig, flds = _2
let flds =
flds |> List.choose (function
@@ -15537,16 +15941,16 @@ let _fsyacc_reductions = lazy [|
let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace
SynExpr.AnonRecd(mStruct.IsSome, orig, flds, m, { OpeningBraceRange = mLeftBrace }))
)
-//# 5589 "src/Compiler/pars.fsy"
+//# 5781 "src/Compiler/pars.fsy"
: 'gentype_braceBarExprCore));
-//# 15542 "pars.fs"
+//# 15946 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recdExprCore in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5603 "src/Compiler/pars.fsy"
+//# 5795 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar())
let orig, flds = _2
let flds =
@@ -15559,15 +15963,15 @@ let _fsyacc_reductions = lazy [|
let m = match mStruct with | None -> unionRanges mLeftBrace mExpr | Some mStruct -> unionRanges mStruct mExpr
SynExpr.AnonRecd(mStruct.IsSome, orig, flds, m, { OpeningBraceRange = mLeftBrace }))
)
-//# 5603 "src/Compiler/pars.fsy"
+//# 5795 "src/Compiler/pars.fsy"
: 'gentype_braceBarExprCore));
-//# 15564 "pars.fs"
+//# 15968 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5616 "src/Compiler/pars.fsy"
+//# 5808 "src/Compiler/pars.fsy"
// silent recovery
let mLeftBrace = rhs parseState 1
let mRightBrace = rhs parseState 3
@@ -15575,81 +15979,81 @@ let _fsyacc_reductions = lazy [|
let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace
arbExpr ("braceBarExpr", m))
)
-//# 5616 "src/Compiler/pars.fsy"
+//# 5808 "src/Compiler/pars.fsy"
: 'gentype_braceBarExprCore));
-//# 15580 "pars.fs"
+//# 15984 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5624 "src/Compiler/pars.fsy"
+//# 5816 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar())
let mLeftBrace = rhs parseState 1
(fun (mStruct: range option) ->
let m = match mStruct with | None -> mLeftBrace | Some mStruct -> unionRanges mStruct mLeftBrace
SynExpr.AnonRecd(mStruct.IsSome, None, [], m, { OpeningBraceRange = mLeftBrace }))
)
-//# 5624 "src/Compiler/pars.fsy"
+//# 5816 "src/Compiler/pars.fsy"
: 'gentype_braceBarExprCore));
-//# 15595 "pars.fs"
+//# 15999 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_bar_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5631 "src/Compiler/pars.fsy"
+//# 5823 "src/Compiler/pars.fsy"
let mLeftBrace = rhs parseState 1
let mRightBrace = rhs parseState 2
(fun (mStruct: range option) ->
let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace
SynExpr.AnonRecd(mStruct.IsSome, None, [], m, { OpeningBraceRange = mLeftBrace }))
)
-//# 5631 "src/Compiler/pars.fsy"
+//# 5823 "src/Compiler/pars.fsy"
: 'gentype_braceBarExprCore));
-//# 15610 "pars.fs"
+//# 16014 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
let _4 = parseState.GetInput(4) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5639 "src/Compiler/pars.fsy"
+//# 5831 "src/Compiler/pars.fsy"
let mAll = unionRanges (rhs parseState 1) _4.Range
let mArrow = Some(rhs parseState 3)
- mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 mArrow _4
+ mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mAll _2 mArrow _4
)
-//# 5639 "src/Compiler/pars.fsy"
+//# 5831 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15624 "pars.fs"
+//# 16028 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5644 "src/Compiler/pars.fsy"
+//# 5836 "src/Compiler/pars.fsy"
let mAll = rhs2 parseState 1 3
let mArrow = Some(rhs parseState 3)
- mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 mArrow (arbExpr ("anonLambdaExpr1", (rhs parseState 4)))
+ mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mAll _2 mArrow (arbExpr ("anonLambdaExpr1", (rhs parseState 4)))
)
-//# 5644 "src/Compiler/pars.fsy"
+//# 5836 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15637 "pars.fs"
+//# 16041 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExprBlockR in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5649 "src/Compiler/pars.fsy"
+//# 5841 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 3
let expr = _4 mArrow
let mAll = unionRanges (rhs parseState 1) expr.Range
- mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 (Some mArrow) expr
+ mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mAll _2 (Some mArrow) expr
)
-//# 5649 "src/Compiler/pars.fsy"
+//# 5841 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15652 "pars.fs"
+//# 16056 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExprBlockR in
@@ -15657,360 +16061,360 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5655 "src/Compiler/pars.fsy"
+//# 5847 "src/Compiler/pars.fsy"
if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody ())
let mArrow = rhs parseState 3
let expr = _4 mArrow
let mAll = unionRanges (rhs parseState 1) expr.Range
- exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 (Some mArrow) expr)
+ exprFromParseError (mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mAll _2 (Some mArrow) expr)
)
-//# 5655 "src/Compiler/pars.fsy"
+//# 5847 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15669 "pars.fs"
+//# 16073 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
let _4 = parseState.GetInput(4) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5662 "src/Compiler/pars.fsy"
+//# 5854 "src/Compiler/pars.fsy"
let mLambda = rhs2 parseState 1 3
reportParseErrorAt mLambda (FSComp.SR.parsMissingFunctionBody())
let mArrow = Some(rhs parseState 3)
- mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 mArrow (arbExpr ("anonLambdaExpr2", mLambda.EndRange))
+ mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mLambda _2 mArrow (arbExpr ("anonLambdaExpr2", mLambda.EndRange))
)
-//# 5662 "src/Compiler/pars.fsy"
+//# 5854 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15684 "pars.fs"
+//# 16088 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5668 "src/Compiler/pars.fsy"
+//# 5860 "src/Compiler/pars.fsy"
if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody())
let mLambda = rhs2 parseState 1 3
let mArrow = Some(rhs parseState 3)
- exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 mArrow (arbExpr ("anonLambdaExpr3", mLambda.EndRange)))
+ exprFromParseError (mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mLambda _2 mArrow (arbExpr ("anonLambdaExpr3", mLambda.EndRange)))
)
-//# 5668 "src/Compiler/pars.fsy"
+//# 5860 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15699 "pars.fs"
+//# 16103 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynPat list in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5674 "src/Compiler/pars.fsy"
+//# 5866 "src/Compiler/pars.fsy"
let mLambda = rhs2 parseState 1 2
- exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 None (arbExpr ("anonLambdaExpr4", mLambda.EndRange)))
+ exprFromParseError (mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false mLambda _2 None (arbExpr ("anonLambdaExpr4", mLambda.EndRange)))
)
-//# 5674 "src/Compiler/pars.fsy"
+//# 5866 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15711 "pars.fs"
+//# 16115 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5678 "src/Compiler/pars.fsy"
- exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs parseState 1) [] None (arbExpr ("anonLambdaExpr5", (rhs parseState 2))))
+//# 5870 "src/Compiler/pars.fsy"
+ exprFromParseError (mkSynFunMatchLambdas (getSynArgNameGenerator parseState.LexBuffer) false (rhs parseState 1) [] None (arbExpr ("anonLambdaExpr5", (rhs parseState 2))))
)
-//# 5678 "src/Compiler/pars.fsy"
+//# 5870 "src/Compiler/pars.fsy"
: 'gentype_anonLambdaExpr));
-//# 15721 "pars.fs"
+//# 16125 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5682 "src/Compiler/pars.fsy"
+//# 5874 "src/Compiler/pars.fsy"
let clauses, mLast = _2
let mAll = unionRanges (rhs parseState 1) mLast
SynExpr.MatchLambda(false, (rhs parseState 1), clauses, DebugPointAtBinding.NoneAtInvisible, mAll)
)
-//# 5682 "src/Compiler/pars.fsy"
+//# 5874 "src/Compiler/pars.fsy"
: 'gentype_anonMatchingExpr));
-//# 15734 "pars.fs"
+//# 16138 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5687 "src/Compiler/pars.fsy"
+//# 5879 "src/Compiler/pars.fsy"
let clauses, mLast = _2
let mAll = unionRanges (rhs parseState 1) mLast
SynExpr.MatchLambda(false, (rhs parseState 1), clauses, DebugPointAtBinding.NoneAtInvisible, mAll)
)
-//# 5687 "src/Compiler/pars.fsy"
+//# 5879 "src/Compiler/pars.fsy"
: 'gentype_anonMatchingExpr));
-//# 15747 "pars.fs"
+//# 16151 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5696 "src/Compiler/pars.fsy"
+//# 5888 "src/Compiler/pars.fsy"
_1
)
-//# 5696 "src/Compiler/pars.fsy"
+//# 5888 "src/Compiler/pars.fsy"
: 'gentype_typeWithTypeConstraints));
-//# 15758 "pars.fs"
+//# 16162 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_typeConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5699 "src/Compiler/pars.fsy"
+//# 5891 "src/Compiler/pars.fsy"
SynType.WithGlobalConstraints(_1, List.rev _3, lhs parseState)
)
-//# 5699 "src/Compiler/pars.fsy"
+//# 5891 "src/Compiler/pars.fsy"
: 'gentype_typeWithTypeConstraints));
-//# 15770 "pars.fs"
+//# 16174 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5703 "src/Compiler/pars.fsy"
+//# 5895 "src/Compiler/pars.fsy"
_1
)
-//# 5703 "src/Compiler/pars.fsy"
+//# 5895 "src/Compiler/pars.fsy"
: 'gentype_topTypeWithTypeConstraints));
-//# 15781 "pars.fs"
+//# 16185 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topType in
let _3 = parseState.GetInput(3) :?> 'gentype_typeConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5706 "src/Compiler/pars.fsy"
+//# 5898 "src/Compiler/pars.fsy"
let ty, arity = _1
// nb. it doesn't matter where the constraints go in the structure of the type.
SynType.WithGlobalConstraints(ty, List.rev _3, lhs parseState), arity
)
-//# 5706 "src/Compiler/pars.fsy"
+//# 5898 "src/Compiler/pars.fsy"
: 'gentype_topTypeWithTypeConstraints));
-//# 15795 "pars.fs"
+//# 16199 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5712 "src/Compiler/pars.fsy"
+//# 5904 "src/Compiler/pars.fsy"
None
)
-//# 5712 "src/Compiler/pars.fsy"
+//# 5904 "src/Compiler/pars.fsy"
: 'gentype_opt_topReturnTypeWithTypeConstraints));
-//# 15805 "pars.fs"
+//# 16209 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_topTypeWithTypeConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5715 "src/Compiler/pars.fsy"
+//# 5907 "src/Compiler/pars.fsy"
let mColon = rhs parseState 1
let ty, arity = _2
let arity = (match arity with SynValInfo([], rmdata)-> rmdata | _ -> SynInfo.unnamedRetVal)
Some(Some mColon, SynReturnInfo((ty, arity), rhs parseState 2))
)
-//# 5715 "src/Compiler/pars.fsy"
+//# 5907 "src/Compiler/pars.fsy"
: 'gentype_opt_topReturnTypeWithTypeConstraints));
-//# 15819 "pars.fs"
+//# 16223 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5721 "src/Compiler/pars.fsy"
+//# 5913 "src/Compiler/pars.fsy"
let mColon = rhs parseState 1
let ty, arity = SynType.FromParseError(mColon.EndRange), SynInfo.unnamedRetVal
Some(Some mColon, SynReturnInfo((ty, arity), mColon.EndRange))
)
-//# 5721 "src/Compiler/pars.fsy"
+//# 5913 "src/Compiler/pars.fsy"
: 'gentype_opt_topReturnTypeWithTypeConstraints));
-//# 15832 "pars.fs"
+//# 16236 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in
let _3 = parseState.GetInput(3) :?> 'gentype_topType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5727 "src/Compiler/pars.fsy"
+//# 5919 "src/Compiler/pars.fsy"
let dty, dmdata = _1
let rty, (SynValInfo(dmdatas, rmdata)) = _3
let mArrow = rhs parseState 2
SynType.Fun(dty, rty, lhs parseState, { ArrowRange = mArrow }), SynValInfo(dmdata :: dmdatas, rmdata)
)
-//# 5727 "src/Compiler/pars.fsy"
+//# 5919 "src/Compiler/pars.fsy"
: 'gentype_topType));
-//# 15847 "pars.fs"
+//# 16251 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5733 "src/Compiler/pars.fsy"
+//# 5925 "src/Compiler/pars.fsy"
let dty, dmdata = _1
let mArrow = rhs parseState 2
let rty = SynType.FromParseError(mArrow.EndRange)
SynType.Fun(dty, rty, lhs parseState, { ArrowRange = mArrow }), SynValInfo([dmdata], SynInfo.unnamedRetVal)
)
-//# 5733 "src/Compiler/pars.fsy"
+//# 5925 "src/Compiler/pars.fsy"
: 'gentype_topType));
-//# 15862 "pars.fs"
+//# 16266 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5739 "src/Compiler/pars.fsy"
+//# 5931 "src/Compiler/pars.fsy"
let ty, rmdata = _1
ty, (SynValInfo([], (match rmdata with [md] -> md | _ -> SynInfo.unnamedRetVal)))
)
-//# 5739 "src/Compiler/pars.fsy"
+//# 5931 "src/Compiler/pars.fsy"
: 'gentype_topType));
-//# 15874 "pars.fs"
+//# 16278 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in
let _3 = parseState.GetInput(3) :?> 'gentype_topTupleTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5744 "src/Compiler/pars.fsy"
+//# 5936 "src/Compiler/pars.fsy"
let t, argInfo = _1
let mStar = rhs parseState 2
let path = SynTupleTypeSegment.Type t :: SynTupleTypeSegment.Star mStar :: (List.map fst _3)
let mdata = argInfo :: (List.choose snd _3)
mkSynTypeTuple path, mdata
)
-//# 5744 "src/Compiler/pars.fsy"
+//# 5936 "src/Compiler/pars.fsy"
: 'gentype_topTupleType));
-//# 15890 "pars.fs"
+//# 16294 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5751 "src/Compiler/pars.fsy"
+//# 5943 "src/Compiler/pars.fsy"
let ty1, argInfo = _1
let mStar = rhs parseState 2
let ty2 = SynType.FromParseError(mStar.EndRange)
let path = [SynTupleTypeSegment.Type ty1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty2]
mkSynTypeTuple path, [argInfo; SynInfo.emptySynArgInfo]
)
-//# 5751 "src/Compiler/pars.fsy"
+//# 5943 "src/Compiler/pars.fsy"
: 'gentype_topTupleType));
-//# 15906 "pars.fs"
+//# 16310 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_topTupleTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5758 "src/Compiler/pars.fsy"
+//# 5950 "src/Compiler/pars.fsy"
let mStar = rhs parseState 1
let ty = SynType.FromParseError(mStar.EndRange)
reportParseErrorAt mStar (FSComp.SR.parsExpectingType ())
let path = SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Star mStar :: (List.map fst _2)
mkSynTypeTuple path, List.choose snd _2
)
-//# 5758 "src/Compiler/pars.fsy"
+//# 5950 "src/Compiler/pars.fsy"
: 'gentype_topTupleType));
-//# 15921 "pars.fs"
+//# 16325 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5765 "src/Compiler/pars.fsy"
+//# 5957 "src/Compiler/pars.fsy"
let ty, mdata = _1
ty, [mdata]
)
-//# 5765 "src/Compiler/pars.fsy"
+//# 5957 "src/Compiler/pars.fsy"
: 'gentype_topTupleType));
-//# 15933 "pars.fs"
+//# 16337 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in
let _3 = parseState.GetInput(3) :?> 'gentype_topTupleTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5770 "src/Compiler/pars.fsy"
+//# 5962 "src/Compiler/pars.fsy"
let t, argInfo = _1
let mStar = rhs parseState 2
(SynTupleTypeSegment.Type t, Some argInfo) :: (SynTupleTypeSegment.Star mStar, None) :: _3
)
-//# 5770 "src/Compiler/pars.fsy"
+//# 5962 "src/Compiler/pars.fsy"
: 'gentype_topTupleTypeElements));
-//# 15947 "pars.fs"
+//# 16351 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5775 "src/Compiler/pars.fsy"
+//# 5967 "src/Compiler/pars.fsy"
let ty1, argInfo = _1
let mStar = rhs parseState 2
let ty2 = SynType.FromParseError(mStar.EndRange)
[SynTupleTypeSegment.Type ty1, Some argInfo; SynTupleTypeSegment.Star mStar, None; SynTupleTypeSegment.Type ty2, Some SynInfo.emptySynArgInfo]
)
-//# 5775 "src/Compiler/pars.fsy"
+//# 5967 "src/Compiler/pars.fsy"
: 'gentype_topTupleTypeElements));
-//# 15962 "pars.fs"
+//# 16366 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_topTupleTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5781 "src/Compiler/pars.fsy"
+//# 5973 "src/Compiler/pars.fsy"
let mStar = rhs parseState 1
let ty = SynType.FromParseError(mStar.EndRange)
reportParseErrorAt mStar (FSComp.SR.parsExpectingType ())
(SynTupleTypeSegment.Type ty, None) :: (SynTupleTypeSegment.Star mStar, None) :: _2
)
-//# 5781 "src/Compiler/pars.fsy"
+//# 5973 "src/Compiler/pars.fsy"
: 'gentype_topTupleTypeElements));
-//# 15976 "pars.fs"
+//# 16380 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5787 "src/Compiler/pars.fsy"
+//# 5979 "src/Compiler/pars.fsy"
let t, argInfo = _1
[ SynTupleTypeSegment.Type t, Some argInfo ]
)
-//# 5787 "src/Compiler/pars.fsy"
+//# 5979 "src/Compiler/pars.fsy"
: 'gentype_topTupleTypeElements));
-//# 15988 "pars.fs"
+//# 16392 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
- let _2 = parseState.GetInput(2) :?> 'gentype_appType in
- let _4 = parseState.GetInput(4) :?> 'gentype_appType in
+ let _2 = parseState.GetInput(2) :?> 'gentype_appTypeCanBeNullable in
+ let _4 = parseState.GetInput(4) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5792 "src/Compiler/pars.fsy"
+//# 5984 "src/Compiler/pars.fsy"
match _2 with
| SynType.LongIdent(SynLongIdent([id], _, _)) ->
let m = unionRanges (rhs parseState 1) _4.Range
SynType.SignatureParameter(_1, false, Some id, _4, m), SynArgInfo(_1, false, Some id)
| _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType())
)
-//# 5792 "src/Compiler/pars.fsy"
+//# 5984 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16005 "pars.fs"
+//# 16409 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
- let _2 = parseState.GetInput(2) :?> 'gentype_appType in
+ let _2 = parseState.GetInput(2) :?> 'gentype_appTypeCanBeNullable in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5799 "src/Compiler/pars.fsy"
+//# 5991 "src/Compiler/pars.fsy"
match _2 with
| SynType.LongIdent(SynLongIdent([id], _, _)) ->
let mColon = rhs parseState 2
@@ -16019,23 +16423,23 @@ let _fsyacc_reductions = lazy [|
SynType.SignatureParameter(_1, false, Some id, ty, m), SynArgInfo(_1, false, Some id)
| _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType())
)
-//# 5799 "src/Compiler/pars.fsy"
+//# 5991 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16024 "pars.fs"
+//# 16428 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
let _3 = parseState.GetInput(3) :?> Ident in
- let _5 = parseState.GetInput(5) :?> 'gentype_appType in
+ let _5 = parseState.GetInput(5) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5808 "src/Compiler/pars.fsy"
+//# 6000 "src/Compiler/pars.fsy"
let m = unionRanges (rhs parseState 1) _5.Range
SynType.SignatureParameter(_1, true, Some _3, _5, m), SynArgInfo(_1, true, Some _3)
)
-//# 5808 "src/Compiler/pars.fsy"
+//# 6000 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16038 "pars.fs"
+//# 16442 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
let _3 = parseState.GetInput(3) :?> Ident in
@@ -16043,51 +16447,51 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5812 "src/Compiler/pars.fsy"
+//# 6004 "src/Compiler/pars.fsy"
let mColon = rhs parseState 4
let m = unionRanges (rhs parseState 1) mColon
let ty = SynType.FromParseError(mColon.EndRange)
SynType.SignatureParameter(_1, true, Some _3, ty, m), SynArgInfo(_1, true, Some _3)
)
-//# 5812 "src/Compiler/pars.fsy"
+//# 6004 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16054 "pars.fs"
+//# 16458 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_attributes in
- let _2 = parseState.GetInput(2) :?> 'gentype_appType in
+ let _2 = parseState.GetInput(2) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5818 "src/Compiler/pars.fsy"
+//# 6010 "src/Compiler/pars.fsy"
let m = unionRanges (rhs parseState 1) _2.Range
SynType.SignatureParameter(_1, false, None, _2, m), SynArgInfo(_1, false, None)
)
-//# 5818 "src/Compiler/pars.fsy"
+//# 6010 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16067 "pars.fs"
+//# 16471 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5822 "src/Compiler/pars.fsy"
+//# 6014 "src/Compiler/pars.fsy"
match _1 with
| SynType.LongIdent(SynLongIdent([id], _, _)) ->
let m = unionRanges (rhs parseState 1) _3.Range
SynType.SignatureParameter([], false, Some id, _3, m), SynArgInfo([], false, Some id)
| _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType())
)
-//# 5822 "src/Compiler/pars.fsy"
+//# 6014 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16083 "pars.fs"
+//# 16487 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5829 "src/Compiler/pars.fsy"
+//# 6021 "src/Compiler/pars.fsy"
match _1 with
| SynType.LongIdent(SynLongIdent([id], _, _)) ->
let mColon = rhs parseState 2
@@ -16096,84 +16500,84 @@ let _fsyacc_reductions = lazy [|
SynType.SignatureParameter([], false, Some id, ty, m), SynArgInfo([], false, Some id)
| _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType())
)
-//# 5829 "src/Compiler/pars.fsy"
+//# 6021 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16101 "pars.fs"
+//# 16505 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
- let _4 = parseState.GetInput(4) :?> 'gentype_appType in
+ let _4 = parseState.GetInput(4) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5838 "src/Compiler/pars.fsy"
+//# 6030 "src/Compiler/pars.fsy"
let m = unionRanges (rhs parseState 1) _4.Range
SynType.SignatureParameter([], true, Some _2, _4, m), SynArgInfo([], true, Some _2)
)
-//# 5838 "src/Compiler/pars.fsy"
+//# 6030 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16114 "pars.fs"
+//# 16518 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5842 "src/Compiler/pars.fsy"
+//# 6034 "src/Compiler/pars.fsy"
let mColon = rhs parseState 3
let m = unionRanges (rhs parseState 1) mColon
let ty = SynType.FromParseError(mColon.EndRange)
SynType.SignatureParameter([], true, Some _2, ty, m), SynArgInfo([], true, Some _2)
)
-//# 5842 "src/Compiler/pars.fsy"
+//# 6034 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16129 "pars.fs"
+//# 16533 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5848 "src/Compiler/pars.fsy"
+//# 6040 "src/Compiler/pars.fsy"
_1, SynArgInfo([], false, None)
)
-//# 5848 "src/Compiler/pars.fsy"
+//# 6040 "src/Compiler/pars.fsy"
: 'gentype_topAppType));
-//# 16140 "pars.fs"
+//# 16544 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
let _3 = parseState.GetInput(3) :?> 'gentype_invalidUseOfAppTypeFunction in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5854 "src/Compiler/pars.fsy"
+//# 6046 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 2
let m = unionRanges (rhs2 parseState 1 2) _3.Range
SynType.Fun(_1, _3, m, { ArrowRange = mArrow })
)
-//# 5854 "src/Compiler/pars.fsy"
+//# 6046 "src/Compiler/pars.fsy"
: 'gentype_invalidUseOfAppTypeFunction));
-//# 16154 "pars.fs"
+//# 16558 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5858 "src/Compiler/pars.fsy"
+//# 6051 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 2
let ty = SynType.FromParseError(mArrow.EndRange)
let m = rhs2 parseState 1 2
SynType.Fun(_1, ty, m, { ArrowRange = mArrow })
)
-//# 5858 "src/Compiler/pars.fsy"
+//# 6051 "src/Compiler/pars.fsy"
: 'gentype_invalidUseOfAppTypeFunction));
-//# 16169 "pars.fs"
+//# 16573 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
let _4 = parseState.GetInput(4) :?> 'gentype_invalidUseOfAppTypeFunction in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5863 "src/Compiler/pars.fsy"
+//# 6057 "src/Compiler/pars.fsy"
let mArrow1 = rhs parseState 2
let mArrow2 = rhs parseState 3
reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ())
@@ -16182,59 +16586,59 @@ let _fsyacc_reductions = lazy [|
let m2 = unionRanges mArrow2 _4.Range
SynType.Fun(_1, SynType.Fun(ty, _4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 })
)
-//# 5863 "src/Compiler/pars.fsy"
+//# 6057 "src/Compiler/pars.fsy"
: 'gentype_invalidUseOfAppTypeFunction));
-//# 16187 "pars.fs"
+//# 16591 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeWithoutNull in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5871 "src/Compiler/pars.fsy"
+//# 6066 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 2
let m = rhs2 parseState 1 3
SynType.Fun(_1, _3, m, { ArrowRange = mArrow })
)
-//# 5871 "src/Compiler/pars.fsy"
+//# 6066 "src/Compiler/pars.fsy"
: 'gentype_invalidUseOfAppTypeFunction));
-//# 16201 "pars.fs"
+//# 16605 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5879 "src/Compiler/pars.fsy"
+//# 6074 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 2
let m = unionRanges (rhs2 parseState 1 2) _3.Range
SynType.Fun(_1, _3, m, { ArrowRange = mArrow })
)
-//# 5879 "src/Compiler/pars.fsy"
+//# 6074 "src/Compiler/pars.fsy"
: SynType));
-//# 16215 "pars.fs"
+//# 16619 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5884 "src/Compiler/pars.fsy"
+//# 6079 "src/Compiler/pars.fsy"
let mArrow = rhs parseState 2
let ty = SynType.FromParseError(mArrow.EndRange)
let m = rhs2 parseState 1 2
SynType.Fun(_1, ty, m, { ArrowRange = mArrow })
)
-//# 5884 "src/Compiler/pars.fsy"
+//# 6079 "src/Compiler/pars.fsy"
: SynType));
-//# 16230 "pars.fs"
+//# 16634 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in
let _4 = parseState.GetInput(4) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5890 "src/Compiler/pars.fsy"
+//# 6085 "src/Compiler/pars.fsy"
let mArrow1 = rhs parseState 2
let mArrow2 = rhs parseState 3
reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ())
@@ -16243,298 +16647,298 @@ let _fsyacc_reductions = lazy [|
let m2 = unionRanges mArrow2 _4.Range
SynType.Fun(_1, SynType.Fun(ty, _4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 })
)
-//# 5890 "src/Compiler/pars.fsy"
+//# 6085 "src/Compiler/pars.fsy"
: SynType));
-//# 16248 "pars.fs"
+//# 16652 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5899 "src/Compiler/pars.fsy"
+//# 6094 "src/Compiler/pars.fsy"
_1
)
-//# 5899 "src/Compiler/pars.fsy"
+//# 6094 "src/Compiler/pars.fsy"
: SynType));
-//# 16259 "pars.fs"
+//# 16663 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5902 "src/Compiler/pars.fsy"
+//# 6097 "src/Compiler/pars.fsy"
checkEndOfFileError _2; _1
)
-//# 5902 "src/Compiler/pars.fsy"
+//# 6097 "src/Compiler/pars.fsy"
: SynType));
-//# 16271 "pars.fs"
+//# 16675 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5907 "src/Compiler/pars.fsy"
+//# 6102 "src/Compiler/pars.fsy"
let mStar = rhs parseState 2
let path = SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Star mStar :: _3
mkSynTypeTuple path
)
-//# 5907 "src/Compiler/pars.fsy"
+//# 6102 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16285 "pars.fs"
+//# 16689 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5912 "src/Compiler/pars.fsy"
+//# 6107 "src/Compiler/pars.fsy"
let mStar = rhs parseState 2
let ty = SynType.FromParseError(mStar.EndRange)
let path = [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty]
mkSynTypeTuple path
)
-//# 5912 "src/Compiler/pars.fsy"
+//# 6107 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16300 "pars.fs"
+//# 16704 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5918 "src/Compiler/pars.fsy"
+//# 6113 "src/Compiler/pars.fsy"
let mStar = rhs parseState 1
let ty = SynType.FromParseError(mStar.EndRange)
reportParseErrorAt mStar (FSComp.SR.parsExpectingType ())
let path = SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Star mStar :: _2
mkSynTypeTuple path
)
-//# 5918 "src/Compiler/pars.fsy"
+//# 6113 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16315 "pars.fs"
+//# 16719 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5925 "src/Compiler/pars.fsy"
+//# 6120 "src/Compiler/pars.fsy"
if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ())
let mSlash = rhs parseState 1
let path = SynTupleTypeSegment.Slash mSlash :: _2
mkSynTypeTuple path
)
-//# 5925 "src/Compiler/pars.fsy"
+//# 6120 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16330 "pars.fs"
+//# 16734 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5931 "src/Compiler/pars.fsy"
+//# 6126 "src/Compiler/pars.fsy"
if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ())
let mSlash = rhs parseState 1
let ty = SynType.FromParseError(mSlash.EndRange)
let path = [SynTupleTypeSegment.Slash mSlash; SynTupleTypeSegment.Type ty]
mkSynTypeTuple path
)
-//# 5931 "src/Compiler/pars.fsy"
+//# 6126 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16346 "pars.fs"
+//# 16750 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _2 = parseState.GetInput(2) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5938 "src/Compiler/pars.fsy"
+//# 6133 "src/Compiler/pars.fsy"
if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator())
let mSlash = rhs parseState 2
let path = SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Slash mSlash :: _3
mkSynTypeTuple path
)
-//# 5938 "src/Compiler/pars.fsy"
+//# 6133 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16362 "pars.fs"
+//# 16766 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _2 = parseState.GetInput(2) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5944 "src/Compiler/pars.fsy"
+//# 6139 "src/Compiler/pars.fsy"
if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ())
let mSlash = rhs parseState 2
let ty = SynType.FromParseError(mSlash.EndRange)
let path = [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Slash mSlash; SynTupleTypeSegment.Type ty]
mkSynTypeTuple path
)
-//# 5944 "src/Compiler/pars.fsy"
+//# 6139 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16379 "pars.fs"
+//# 16783 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5951 "src/Compiler/pars.fsy"
+//# 6146 "src/Compiler/pars.fsy"
_1
)
-//# 5951 "src/Compiler/pars.fsy"
+//# 6146 "src/Compiler/pars.fsy"
: 'gentype_tupleType));
-//# 16390 "pars.fs"
+//# 16794 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5955 "src/Compiler/pars.fsy"
+//# 6150 "src/Compiler/pars.fsy"
let mStar = rhs parseState 2
SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Star mStar :: _3
)
-//# 5955 "src/Compiler/pars.fsy"
+//# 6150 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16403 "pars.fs"
+//# 16807 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5959 "src/Compiler/pars.fsy"
+//# 6154 "src/Compiler/pars.fsy"
let mStar = rhs parseState 2
let ty = SynType.FromParseError(mStar.EndRange)
[SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty]
)
-//# 5959 "src/Compiler/pars.fsy"
+//# 6154 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16417 "pars.fs"
+//# 16821 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5964 "src/Compiler/pars.fsy"
+//# 6159 "src/Compiler/pars.fsy"
let mStar = rhs parseState 1
let ty = SynType.FromParseError(mStar.EndRange)
reportParseErrorAt mStar (FSComp.SR.parsExpectingType ())
SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Star mStar :: _2
)
-//# 5964 "src/Compiler/pars.fsy"
+//# 6159 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16431 "pars.fs"
+//# 16835 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _2 = parseState.GetInput(2) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5970 "src/Compiler/pars.fsy"
+//# 6165 "src/Compiler/pars.fsy"
if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ())
let mSlash = rhs parseState 2
SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Slash mSlash :: _3
)
-//# 5970 "src/Compiler/pars.fsy"
+//# 6165 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16446 "pars.fs"
+//# 16850 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
let _2 = parseState.GetInput(2) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5975 "src/Compiler/pars.fsy"
+//# 6170 "src/Compiler/pars.fsy"
if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ())
let mSlash = rhs parseState 2
let ty = SynType.FromParseError(mSlash.EndRange)
[SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Slash mSlash; SynTupleTypeSegment.Type ty]
)
-//# 5975 "src/Compiler/pars.fsy"
+//# 6170 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16462 "pars.fs"
+//# 16866 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5981 "src/Compiler/pars.fsy"
+//# 6176 "src/Compiler/pars.fsy"
if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ())
let mSlash = rhs parseState 1
let ty = SynType.FromParseError(mSlash.EndRange)
reportParseErrorAt mSlash (FSComp.SR.parsExpectingType ())
SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Slash mSlash :: _2
)
-//# 5981 "src/Compiler/pars.fsy"
+//# 6176 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16478 "pars.fs"
+//# 16882 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCanBeNullable in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5988 "src/Compiler/pars.fsy"
+//# 6183 "src/Compiler/pars.fsy"
[ SynTupleTypeSegment.Type _1 ]
)
-//# 5988 "src/Compiler/pars.fsy"
+//# 6183 "src/Compiler/pars.fsy"
: 'gentype_tupleOrQuotTypeElements));
-//# 16489 "pars.fs"
+//# 16893 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> 'gentype_intersectionConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5992 "src/Compiler/pars.fsy"
+//# 6187 "src/Compiler/pars.fsy"
let constraints, mAmpersands = _3
SynType.Intersection(Some _1, List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands })
)
-//# 5992 "src/Compiler/pars.fsy"
+//# 6187 "src/Compiler/pars.fsy"
: 'gentype_intersectionType));
-//# 16502 "pars.fs"
+//# 16906 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_atomType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_hashConstraint in
let _3 = parseState.GetInput(3) :?> 'gentype_intersectionConstraints in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 5996 "src/Compiler/pars.fsy"
+//# 6191 "src/Compiler/pars.fsy"
let constraints, mAmpersands = _3
SynType.Intersection(None, _1 :: List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands })
)
-//# 5996 "src/Compiler/pars.fsy"
+//# 6191 "src/Compiler/pars.fsy"
: 'gentype_intersectionType));
-//# 16515 "pars.fs"
+//# 16919 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6001 "src/Compiler/pars.fsy"
+//# 6196 "src/Compiler/pars.fsy"
SynType.LongIdent(_1)
)
-//# 6001 "src/Compiler/pars.fsy"
+//# 6196 "src/Compiler/pars.fsy"
: 'gentype_appTypeCon));
-//# 16526 "pars.fs"
+//# 16930 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6004 "src/Compiler/pars.fsy"
+//# 6199 "src/Compiler/pars.fsy"
SynType.Var(_1, lhs parseState)
)
-//# 6004 "src/Compiler/pars.fsy"
+//# 6199 "src/Compiler/pars.fsy"
: 'gentype_appTypeCon));
-//# 16537 "pars.fs"
+//# 16941 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in
let _2 = parseState.GetInput(2) :?> string in
@@ -16542,7 +16946,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6008 "src/Compiler/pars.fsy"
+//# 6203 "src/Compiler/pars.fsy"
if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator())
if _2 = "^-" then
let afterMinus = (rhs parseState 2).EndRange
@@ -16551,56 +16955,101 @@ let _fsyacc_reductions = lazy [|
SynType.MeasurePower(_1, SynRationalConst.Negate(_3, m), lhs parseState)
else SynType.MeasurePower(_1, _3, lhs parseState)
)
-//# 6008 "src/Compiler/pars.fsy"
+//# 6203 "src/Compiler/pars.fsy"
: 'gentype_appTypeConPower));
-//# 16556 "pars.fs"
+//# 16960 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6017 "src/Compiler/pars.fsy"
+//# 6212 "src/Compiler/pars.fsy"
_1
)
-//# 6017 "src/Compiler/pars.fsy"
+//# 6212 "src/Compiler/pars.fsy"
: 'gentype_appTypeConPower));
-//# 16567 "pars.fs"
+//# 16971 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 6216 "src/Compiler/pars.fsy"
+ SynType.WithNull(_1, false, lhs parseState, { BarRange = rhs parseState 2 })
+ )
+//# 6216 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeCanBeNullable));
+//# 16982 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 6219 "src/Compiler/pars.fsy"
+ _1
+ )
+//# 6219 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeCanBeNullable));
+//# 16993 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 6223 "src/Compiler/pars.fsy"
+ _1
+ )
+//# 6223 "src/Compiler/pars.fsy"
+ : SynType));
+//# 17004 "pars.fs"
+ (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
+ let _2 = parseState.GetInput(2) :?> 'gentype_appTypeCanBeNullable in
+ let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
+ Microsoft.FSharp.Core.Operators.box
+ (
+ (
+//# 6226 "src/Compiler/pars.fsy"
+ SynType.Paren(_2, lhs parseState)
+ )
+//# 6226 "src/Compiler/pars.fsy"
+ : SynType));
+//# 17016 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
let _2 = parseState.GetInput(2) :?> 'gentype_arrayTypeSuffix in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6021 "src/Compiler/pars.fsy"
+//# 6230 "src/Compiler/pars.fsy"
SynType.Array(_2, _1, lhs parseState)
)
-//# 6021 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16579 "pars.fs"
+//# 6230 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17028 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
let _3 = parseState.GetInput(3) :?> 'gentype_arrayTypeSuffix in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6024 "src/Compiler/pars.fsy"
+//# 6233 "src/Compiler/pars.fsy"
SynType.Array(_3, _1, lhs parseState)
)
-//# 6024 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16591 "pars.fs"
+//# 6233 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17040 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_appType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_appTypeWithoutNull in
let _2 = parseState.GetInput(2) :?> 'gentype_appTypeConPower in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6028 "src/Compiler/pars.fsy"
+//# 6237 "src/Compiler/pars.fsy"
SynType.App(_2, None, [_1], [], None, true, unionRanges (rhs parseState 1) _2.Range)
)
-//# 6028 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16603 "pars.fs"
+//# 6237 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17052 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_appTypePrefixArguments in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
@@ -16608,7 +17057,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6031 "src/Compiler/pars.fsy"
+//# 6240 "src/Compiler/pars.fsy"
let args, commas = _2
if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatError (FSComp.SR.mlCompatMultiPrefixTyparsNoLongerSupported()) (unionRanges (rhs parseState 1) _4.Range)
@@ -16616,377 +17065,377 @@ let _fsyacc_reductions = lazy [|
mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) _4.Range)
SynType.App(_4, None, args, commas, None, true, unionRanges (rhs parseState 1) _4.Range)
)
-//# 6031 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16621 "pars.fs"
+//# 6240 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17070 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_powerType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6039 "src/Compiler/pars.fsy"
+//# 6248 "src/Compiler/pars.fsy"
_1
)
-//# 6039 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16632 "pars.fs"
+//# 6248 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17081 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_intersectionType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6042 "src/Compiler/pars.fsy"
+//# 6251 "src/Compiler/pars.fsy"
parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (lhs parseState)
_1
)
-//# 6042 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16644 "pars.fs"
+//# 6251 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17093 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6046 "src/Compiler/pars.fsy"
+//# 6255 "src/Compiler/pars.fsy"
let tp, typ = _1, _3
let m = lhs parseState
SynType.WithGlobalConstraints(SynType.Var(tp, rhs parseState 1), [SynTypeConstraint.WhereTyparSubtypeOfType(tp, typ, m)], m)
)
-//# 6046 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16658 "pars.fs"
+//# 6255 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17107 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6051 "src/Compiler/pars.fsy"
+//# 6260 "src/Compiler/pars.fsy"
SynType.HashConstraint(_3, lhs parseState)
)
-//# 6051 "src/Compiler/pars.fsy"
- : 'gentype_appType));
-//# 16669 "pars.fs"
+//# 6260 "src/Compiler/pars.fsy"
+ : 'gentype_appTypeWithoutNull));
+//# 17118 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6055 "src/Compiler/pars.fsy"
+//# 6264 "src/Compiler/pars.fsy"
1
)
-//# 6055 "src/Compiler/pars.fsy"
+//# 6264 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16679 "pars.fs"
+//# 17128 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6058 "src/Compiler/pars.fsy"
+//# 6267 "src/Compiler/pars.fsy"
2
)
-//# 6058 "src/Compiler/pars.fsy"
+//# 6267 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16689 "pars.fs"
+//# 17138 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6061 "src/Compiler/pars.fsy"
+//# 6270 "src/Compiler/pars.fsy"
3
)
-//# 6061 "src/Compiler/pars.fsy"
+//# 6270 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16699 "pars.fs"
+//# 17148 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6064 "src/Compiler/pars.fsy"
+//# 6273 "src/Compiler/pars.fsy"
4
)
-//# 6064 "src/Compiler/pars.fsy"
+//# 6273 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16709 "pars.fs"
+//# 17158 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6067 "src/Compiler/pars.fsy"
+//# 6276 "src/Compiler/pars.fsy"
5
)
-//# 6067 "src/Compiler/pars.fsy"
+//# 6276 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16719 "pars.fs"
+//# 17168 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6070 "src/Compiler/pars.fsy"
+//# 6279 "src/Compiler/pars.fsy"
6
)
-//# 6070 "src/Compiler/pars.fsy"
+//# 6279 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16729 "pars.fs"
+//# 17178 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6073 "src/Compiler/pars.fsy"
+//# 6282 "src/Compiler/pars.fsy"
7
)
-//# 6073 "src/Compiler/pars.fsy"
+//# 6282 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16739 "pars.fs"
+//# 17188 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6076 "src/Compiler/pars.fsy"
+//# 6285 "src/Compiler/pars.fsy"
8
)
-//# 6076 "src/Compiler/pars.fsy"
+//# 6285 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16749 "pars.fs"
+//# 17198 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6079 "src/Compiler/pars.fsy"
+//# 6288 "src/Compiler/pars.fsy"
9
)
-//# 6079 "src/Compiler/pars.fsy"
+//# 6288 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16759 "pars.fs"
+//# 17208 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6082 "src/Compiler/pars.fsy"
+//# 6291 "src/Compiler/pars.fsy"
10
)
-//# 6082 "src/Compiler/pars.fsy"
+//# 6291 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16769 "pars.fs"
+//# 17218 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6085 "src/Compiler/pars.fsy"
+//# 6294 "src/Compiler/pars.fsy"
11
)
-//# 6085 "src/Compiler/pars.fsy"
+//# 6294 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16779 "pars.fs"
+//# 17228 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6088 "src/Compiler/pars.fsy"
+//# 6297 "src/Compiler/pars.fsy"
12
)
-//# 6088 "src/Compiler/pars.fsy"
+//# 6297 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16789 "pars.fs"
+//# 17238 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6091 "src/Compiler/pars.fsy"
+//# 6300 "src/Compiler/pars.fsy"
13
)
-//# 6091 "src/Compiler/pars.fsy"
+//# 6300 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16799 "pars.fs"
+//# 17248 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6094 "src/Compiler/pars.fsy"
+//# 6303 "src/Compiler/pars.fsy"
14
)
-//# 6094 "src/Compiler/pars.fsy"
+//# 6303 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16809 "pars.fs"
+//# 17258 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6097 "src/Compiler/pars.fsy"
+//# 6306 "src/Compiler/pars.fsy"
15
)
-//# 6097 "src/Compiler/pars.fsy"
+//# 6306 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16819 "pars.fs"
+//# 17268 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6100 "src/Compiler/pars.fsy"
+//# 6309 "src/Compiler/pars.fsy"
16
)
-//# 6100 "src/Compiler/pars.fsy"
+//# 6309 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16829 "pars.fs"
+//# 17278 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6103 "src/Compiler/pars.fsy"
+//# 6312 "src/Compiler/pars.fsy"
17
)
-//# 6103 "src/Compiler/pars.fsy"
+//# 6312 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16839 "pars.fs"
+//# 17288 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6106 "src/Compiler/pars.fsy"
+//# 6315 "src/Compiler/pars.fsy"
18
)
-//# 6106 "src/Compiler/pars.fsy"
+//# 6315 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16849 "pars.fs"
+//# 17298 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6109 "src/Compiler/pars.fsy"
+//# 6318 "src/Compiler/pars.fsy"
19
)
-//# 6109 "src/Compiler/pars.fsy"
+//# 6318 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16859 "pars.fs"
+//# 17308 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6112 "src/Compiler/pars.fsy"
+//# 6321 "src/Compiler/pars.fsy"
20
)
-//# 6112 "src/Compiler/pars.fsy"
+//# 6321 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16869 "pars.fs"
+//# 17318 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6115 "src/Compiler/pars.fsy"
+//# 6324 "src/Compiler/pars.fsy"
21
)
-//# 6115 "src/Compiler/pars.fsy"
+//# 6324 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16879 "pars.fs"
+//# 17328 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6118 "src/Compiler/pars.fsy"
+//# 6327 "src/Compiler/pars.fsy"
22
)
-//# 6118 "src/Compiler/pars.fsy"
+//# 6327 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16889 "pars.fs"
+//# 17338 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6121 "src/Compiler/pars.fsy"
+//# 6330 "src/Compiler/pars.fsy"
23
)
-//# 6121 "src/Compiler/pars.fsy"
+//# 6330 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16899 "pars.fs"
+//# 17348 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6124 "src/Compiler/pars.fsy"
+//# 6333 "src/Compiler/pars.fsy"
24
)
-//# 6124 "src/Compiler/pars.fsy"
+//# 6333 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16909 "pars.fs"
+//# 17358 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6127 "src/Compiler/pars.fsy"
+//# 6336 "src/Compiler/pars.fsy"
25
)
-//# 6127 "src/Compiler/pars.fsy"
+//# 6336 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16919 "pars.fs"
+//# 17368 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6130 "src/Compiler/pars.fsy"
+//# 6339 "src/Compiler/pars.fsy"
26
)
-//# 6130 "src/Compiler/pars.fsy"
+//# 6339 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16929 "pars.fs"
+//# 17378 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6133 "src/Compiler/pars.fsy"
+//# 6342 "src/Compiler/pars.fsy"
27
)
-//# 6133 "src/Compiler/pars.fsy"
+//# 6342 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16939 "pars.fs"
+//# 17388 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6136 "src/Compiler/pars.fsy"
+//# 6345 "src/Compiler/pars.fsy"
28
)
-//# 6136 "src/Compiler/pars.fsy"
+//# 6345 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16949 "pars.fs"
+//# 17398 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6139 "src/Compiler/pars.fsy"
+//# 6348 "src/Compiler/pars.fsy"
29
)
-//# 6139 "src/Compiler/pars.fsy"
+//# 6348 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16959 "pars.fs"
+//# 17408 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6142 "src/Compiler/pars.fsy"
+//# 6351 "src/Compiler/pars.fsy"
30
)
-//# 6142 "src/Compiler/pars.fsy"
+//# 6351 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16969 "pars.fs"
+//# 17418 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6145 "src/Compiler/pars.fsy"
+//# 6354 "src/Compiler/pars.fsy"
31
)
-//# 6145 "src/Compiler/pars.fsy"
+//# 6354 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16979 "pars.fs"
+//# 17428 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6148 "src/Compiler/pars.fsy"
+//# 6357 "src/Compiler/pars.fsy"
32
)
-//# 6148 "src/Compiler/pars.fsy"
+//# 6357 "src/Compiler/pars.fsy"
: 'gentype_arrayTypeSuffix));
-//# 16989 "pars.fs"
+//# 17438 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeArgActual in
let _3 = parseState.GetInput(3) :?> 'gentype_typeArgActual in
@@ -16994,69 +17443,69 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6152 "src/Compiler/pars.fsy"
+//# 6361 "src/Compiler/pars.fsy"
let typeArgs, commas = _4
_1 :: _3 :: List.rev typeArgs, (rhs parseState 2) :: (List.rev commas)
)
-//# 6152 "src/Compiler/pars.fsy"
+//# 6361 "src/Compiler/pars.fsy"
: 'gentype_appTypePrefixArguments));
-//# 17003 "pars.fs"
+//# 17452 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeArgListElements in
let _3 = parseState.GetInput(3) :?> 'gentype_typeArgActual in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6157 "src/Compiler/pars.fsy"
+//# 6366 "src/Compiler/pars.fsy"
let typeArgs, commas = _1
_3 :: typeArgs, (rhs parseState 2) :: commas
)
-//# 6157 "src/Compiler/pars.fsy"
+//# 6366 "src/Compiler/pars.fsy"
: 'gentype_typeArgListElements));
-//# 17016 "pars.fs"
+//# 17465 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeArgListElements in
let _3 = parseState.GetInput(3) :?> 'gentype_dummyTypeArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6161 "src/Compiler/pars.fsy"
+//# 6370 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs())
let typeArgs, commas = _1
_3 :: typeArgs, (rhs parseState 2) :: commas
)
-//# 6161 "src/Compiler/pars.fsy"
+//# 6370 "src/Compiler/pars.fsy"
: 'gentype_typeArgListElements));
-//# 17030 "pars.fs"
+//# 17479 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6166 "src/Compiler/pars.fsy"
+//# 6375 "src/Compiler/pars.fsy"
[], []
)
-//# 6166 "src/Compiler/pars.fsy"
+//# 6375 "src/Compiler/pars.fsy"
: 'gentype_typeArgListElements));
-//# 17040 "pars.fs"
+//# 17489 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_atomTypeOrAnonRecdType in
+ let _1 = parseState.GetInput(1) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6170 "src/Compiler/pars.fsy"
+//# 6379 "src/Compiler/pars.fsy"
_1
)
-//# 6170 "src/Compiler/pars.fsy"
+//# 6379 "src/Compiler/pars.fsy"
: 'gentype_powerType));
-//# 17051 "pars.fs"
+//# 17500 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _1 = parseState.GetInput(1) :?> 'gentype_atomTypeOrAnonRecdType in
+ let _1 = parseState.GetInput(1) :?> SynType in
let _2 = parseState.GetInput(2) :?> string in
let _3 = parseState.GetInput(3) :?> 'gentype_atomicRationalConstant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6173 "src/Compiler/pars.fsy"
+//# 6382 "src/Compiler/pars.fsy"
if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator())
if _2 = "^-" then
let afterMinus = (rhs parseState 2).EndRange
@@ -17065,9 +17514,9 @@ let _fsyacc_reductions = lazy [|
SynType.MeasurePower(_1, SynRationalConst.Negate(_3, m), lhs parseState)
else SynType.MeasurePower(_1, _3, lhs parseState)
)
-//# 6173 "src/Compiler/pars.fsy"
+//# 6382 "src/Compiler/pars.fsy"
: 'gentype_powerType));
-//# 17070 "pars.fs"
+//# 17519 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_appTypePrefixArguments in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
@@ -17075,7 +17524,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6186 "src/Compiler/pars.fsy"
+//# 6395 "src/Compiler/pars.fsy"
let args, commas = _2
if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatError (FSComp.SR.mlCompatMultiPrefixTyparsNoLongerSupported()) (unionRanges (rhs parseState 1) _4.Range)
@@ -17083,37 +17532,37 @@ let _fsyacc_reductions = lazy [|
mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) _4.Range)
SynType.App(_4, None, args, commas, None, true, unionRanges (rhs parseState 1) _4.Range)
)
-//# 6186 "src/Compiler/pars.fsy"
+//# 6395 "src/Compiler/pars.fsy"
: SynType));
-//# 17088 "pars.fs"
+//# 17537 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6194 "src/Compiler/pars.fsy"
+//# 6403 "src/Compiler/pars.fsy"
_1
)
-//# 6194 "src/Compiler/pars.fsy"
+//# 6403 "src/Compiler/pars.fsy"
: SynType));
-//# 17099 "pars.fs"
+//# 17548 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6198 "src/Compiler/pars.fsy"
+//# 6407 "src/Compiler/pars.fsy"
_1
)
-//# 6198 "src/Compiler/pars.fsy"
- : 'gentype_atomTypeOrAnonRecdType));
-//# 17110 "pars.fs"
+//# 6407 "src/Compiler/pars.fsy"
+ : SynType));
+//# 17559 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_anonRecdType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6201 "src/Compiler/pars.fsy"
+//# 6410 "src/Compiler/pars.fsy"
let flds, isStruct = _1
let flds2 =
flds |> List.choose (function
@@ -17121,227 +17570,227 @@ let _fsyacc_reductions = lazy [|
| _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None)
SynType.AnonRecd(isStruct, flds2, rhs parseState 1)
)
-//# 6201 "src/Compiler/pars.fsy"
- : 'gentype_atomTypeOrAnonRecdType));
-//# 17126 "pars.fs"
+//# 6410 "src/Compiler/pars.fsy"
+ : SynType));
+//# 17575 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _2 = parseState.GetInput(2) :?> 'gentype_atomType in
+ let _1 = parseState.GetInput(1) :?> 'gentype_hashConstraint in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6212 "src/Compiler/pars.fsy"
- SynType.HashConstraint(_2, lhs parseState)
+//# 6421 "src/Compiler/pars.fsy"
+ _1
)
-//# 6212 "src/Compiler/pars.fsy"
+//# 6421 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17137 "pars.fs"
+//# 17586 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_appTypeConPower in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6215 "src/Compiler/pars.fsy"
+//# 6424 "src/Compiler/pars.fsy"
_1
)
-//# 6215 "src/Compiler/pars.fsy"
+//# 6424 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17148 "pars.fs"
+//# 17597 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6218 "src/Compiler/pars.fsy"
+//# 6427 "src/Compiler/pars.fsy"
SynType.Anon(lhs parseState)
)
-//# 6218 "src/Compiler/pars.fsy"
+//# 6427 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17158 "pars.fs"
+//# 17607 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6221 "src/Compiler/pars.fsy"
+//# 6430 "src/Compiler/pars.fsy"
SynType.Paren(_2, lhs parseState)
)
-//# 6221 "src/Compiler/pars.fsy"
+//# 6430 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17170 "pars.fs"
+//# 17619 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynType in
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6224 "src/Compiler/pars.fsy"
+//# 6433 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen ())
SynType.Paren(_2, lhs parseState)
)
-//# 6224 "src/Compiler/pars.fsy"
+//# 6433 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17183 "pars.fs"
+//# 17632 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeCanBeNullable in
let _5 = parseState.GetInput(5) :?> 'gentype_tupleOrQuotTypeElements in
let _6 = parseState.GetInput(6) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6228 "src/Compiler/pars.fsy"
+//# 6437 "src/Compiler/pars.fsy"
let mStar = rhs parseState 4
let path = SynTupleTypeSegment.Type _3 :: SynTupleTypeSegment.Star mStar :: _5
let m = rhs2 parseState 1 6
SynType.Tuple(true, path, m)
)
-//# 6228 "src/Compiler/pars.fsy"
+//# 6437 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17199 "pars.fs"
+//# 17648 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeCanBeNullable in
let _5 = parseState.GetInput(5) :?> 'gentype_tupleOrQuotTypeElements in
let _6 = parseState.GetInput(6) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6234 "src/Compiler/pars.fsy"
+//# 6443 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen())
let mStar = rhs parseState 4
let path = SynTupleTypeSegment.Type _3 :: SynTupleTypeSegment.Star mStar :: _5
let m = rhs2 parseState 1 5
SynType.Tuple(true, path, m)
)
-//# 6234 "src/Compiler/pars.fsy"
+//# 6443 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17216 "pars.fs"
+//# 17665 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeCanBeNullable in
let _5 = parseState.GetInput(5) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6241 "src/Compiler/pars.fsy"
+//# 6450 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen())
SynType.Anon(lhs parseState)
)
-//# 6241 "src/Compiler/pars.fsy"
+//# 6450 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17229 "pars.fs"
+//# 17678 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- let _3 = parseState.GetInput(3) :?> 'gentype_appType in
+ let _3 = parseState.GetInput(3) :?> 'gentype_appTypeCanBeNullable in
let _4 = parseState.GetInput(4) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6245 "src/Compiler/pars.fsy"
+//# 6454 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen())
SynType.Anon(lhs parseState)
)
-//# 6245 "src/Compiler/pars.fsy"
+//# 6454 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17242 "pars.fs"
+//# 17691 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6249 "src/Compiler/pars.fsy"
+//# 6458 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen())
SynType.Anon(lhs parseState)
)
-//# 6249 "src/Compiler/pars.fsy"
+//# 6458 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17254 "pars.fs"
+//# 17703 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6253 "src/Compiler/pars.fsy"
+//# 6462 "src/Compiler/pars.fsy"
SynType.StaticConstant(_1, rhs parseState 1)
)
-//# 6253 "src/Compiler/pars.fsy"
+//# 6462 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17265 "pars.fs"
+//# 17714 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6256 "src/Compiler/pars.fsy"
+//# 6465 "src/Compiler/pars.fsy"
let m = rhs parseState 1
- SynType.StaticConstant(SynConst.String(null, SynStringKind.Regular, m), m)
+ SynType.StaticConstantNull(m)
)
-//# 6256 "src/Compiler/pars.fsy"
+//# 6465 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17276 "pars.fs"
+//# 17725 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> SynExpr * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6260 "src/Compiler/pars.fsy"
+//# 6469 "src/Compiler/pars.fsy"
let e, _ = _2
SynType.StaticConstantExpr(e, lhs parseState)
)
-//# 6260 "src/Compiler/pars.fsy"
+//# 6469 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17288 "pars.fs"
+//# 17737 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6264 "src/Compiler/pars.fsy"
+//# 6473 "src/Compiler/pars.fsy"
SynType.StaticConstant(SynConst.Bool false, lhs parseState)
)
-//# 6264 "src/Compiler/pars.fsy"
+//# 6473 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17298 "pars.fs"
+//# 17747 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6267 "src/Compiler/pars.fsy"
+//# 6476 "src/Compiler/pars.fsy"
SynType.StaticConstant(SynConst.Bool true, lhs parseState)
)
-//# 6267 "src/Compiler/pars.fsy"
+//# 6476 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17308 "pars.fs"
+//# 17757 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6270 "src/Compiler/pars.fsy"
+//# 6479 "src/Compiler/pars.fsy"
(* silent recovery *) SynType.Anon(lhs parseState)
)
-//# 6270 "src/Compiler/pars.fsy"
+//# 6479 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17319 "pars.fs"
+//# 17768 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in
let _2 = parseState.GetInput(2) :?> range * range option * SynType list * range list * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6273 "src/Compiler/pars.fsy"
+//# 6482 "src/Compiler/pars.fsy"
let mLessThan, mGreaterThan, args, commas, mWhole = _2
SynType.App(_1, Some(mLessThan), args, commas, mGreaterThan, false, unionRanges _1.Range mWhole)
)
-//# 6273 "src/Compiler/pars.fsy"
+//# 6482 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17332 "pars.fs"
+//# 17781 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomType in
let _3 = parseState.GetInput(3) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6277 "src/Compiler/pars.fsy"
+//# 6486 "src/Compiler/pars.fsy"
SynType.LongIdentApp(_1, _3, None, [], [], None, unionRanges (rhs parseState 1) _3.Range)
)
-//# 6277 "src/Compiler/pars.fsy"
+//# 6486 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17344 "pars.fs"
+//# 17793 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_atomType in
let _3 = parseState.GetInput(3) :?> SynLongIdent in
@@ -17349,52 +17798,52 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6280 "src/Compiler/pars.fsy"
+//# 6489 "src/Compiler/pars.fsy"
let mLessThan, mGreaterThan, args, commas, mWhole = _4
SynType.LongIdentApp(_1, _3, Some(mLessThan), args, commas, mGreaterThan, unionRanges _1.Range mWhole)
)
-//# 6280 "src/Compiler/pars.fsy"
+//# 6489 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17358 "pars.fs"
+//# 17807 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6284 "src/Compiler/pars.fsy"
+//# 6493 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken())
_1
)
-//# 6284 "src/Compiler/pars.fsy"
+//# 6493 "src/Compiler/pars.fsy"
: 'gentype_atomType));
-//# 17371 "pars.fs"
+//# 17820 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range * range option * bool * SynType list * range list * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6289 "src/Compiler/pars.fsy"
+//# 6498 "src/Compiler/pars.fsy"
let mLessThan, mGreaterThan, parsedOk, args, commas, mAll = _1
if parsedOk then // if someone has "foo
let _2 = parseState.GetInput(2) :?> range * range option * bool * SynType list * range list * range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6295 "src/Compiler/pars.fsy"
+//# 6504 "src/Compiler/pars.fsy"
let mLessThan, mGreaterThan, _, args, commas, mAll = _2
mLessThan, mGreaterThan, args, commas, mAll
)
-//# 6295 "src/Compiler/pars.fsy"
+//# 6504 "src/Compiler/pars.fsy"
: range * range option * SynType list * range list * range));
-//# 17397 "pars.fs"
+//# 17846 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in
@@ -17404,13 +17853,13 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6300 "src/Compiler/pars.fsy"
+//# 6509 "src/Compiler/pars.fsy"
let typeArgs, commas = _5
(rhs parseState 1), Some(rhs parseState 6), true, (_2 :: _4 :: List.rev typeArgs), (rhs parseState 3) :: (List.rev commas), lhs parseState
)
-//# 6300 "src/Compiler/pars.fsy"
+//# 6509 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17413 "pars.fs"
+//# 17862 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in
@@ -17420,7 +17869,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6304 "src/Compiler/pars.fsy"
+//# 6513 "src/Compiler/pars.fsy"
if not _6 then
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileTypeArgs())
else
@@ -17430,9 +17879,9 @@ let _fsyacc_reductions = lazy [|
let zeroWidthAtStartOfNextToken = nextToken.StartRange
(rhs parseState 1), None, false, (_2 :: _4 :: List.rev typeArgs), (rhs parseState 3) :: (List.rev commas), unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken
)
-//# 6304 "src/Compiler/pars.fsy"
+//# 6513 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17435 "pars.fs"
+//# 17884 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in
@@ -17440,15 +17889,15 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6314 "src/Compiler/pars.fsy"
+//# 6523 "src/Compiler/pars.fsy"
if not _4 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsMissingTypeArgs())
let nextToken = rhs parseState 4
let zeroWidthAtStartOfNextToken = nextToken.StartRange
(rhs parseState 1), None, false, [_2], [rhs parseState 3], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken
)
-//# 6314 "src/Compiler/pars.fsy"
+//# 6523 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17451 "pars.fs"
+//# 17900 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActual in
@@ -17456,12 +17905,12 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6320 "src/Compiler/pars.fsy"
+//# 6529 "src/Compiler/pars.fsy"
(rhs parseState 1), Some(rhs parseState 3), true, [_2], [], lhs parseState
)
-//# 6320 "src/Compiler/pars.fsy"
+//# 6529 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17464 "pars.fs"
+//# 17913 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActual in
@@ -17469,34 +17918,34 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6323 "src/Compiler/pars.fsy"
+//# 6532 "src/Compiler/pars.fsy"
let nextToken = rhs parseState 3
if not _3 then reportParseErrorAt nextToken (FSComp.SR.parsMissingTypeArgs())
let zeroWidthAtStartOfNextToken = nextToken.StartRange
(rhs parseState 1), None, false, [_2], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken
)
-//# 6323 "src/Compiler/pars.fsy"
+//# 6532 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17480 "pars.fs"
+//# 17929 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6329 "src/Compiler/pars.fsy"
+//# 6538 "src/Compiler/pars.fsy"
(rhs parseState 1), Some(rhs parseState 2), true, [], [], lhs parseState
)
-//# 6329 "src/Compiler/pars.fsy"
+//# 6538 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17492 "pars.fs"
+//# 17941 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6332 "src/Compiler/pars.fsy"
+//# 6541 "src/Compiler/pars.fsy"
if not _2 then
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsExpectedTypeAfterToken())
else
@@ -17505,83 +17954,83 @@ let _fsyacc_reductions = lazy [|
let zeroWidthAtStartOfNextToken = nextToken.StartRange
(rhs parseState 1), None, false, [], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken
)
-//# 6332 "src/Compiler/pars.fsy"
+//# 6541 "src/Compiler/pars.fsy"
: range * range option * bool * SynType list * range list * range));
-//# 17510 "pars.fs"
+//# 17959 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6342 "src/Compiler/pars.fsy"
+//# 6551 "src/Compiler/pars.fsy"
_1
)
-//# 6342 "src/Compiler/pars.fsy"
+//# 6551 "src/Compiler/pars.fsy"
: 'gentype_typeArgActual));
-//# 17521 "pars.fs"
+//# 17970 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
let _3 = parseState.GetInput(3) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6345 "src/Compiler/pars.fsy"
+//# 6554 "src/Compiler/pars.fsy"
SynType.StaticConstantNamed(_1, _3, unionRanges _1.Range _3.Range)
)
-//# 6345 "src/Compiler/pars.fsy"
+//# 6554 "src/Compiler/pars.fsy"
: 'gentype_typeArgActual));
-//# 17533 "pars.fs"
+//# 17982 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynType in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6348 "src/Compiler/pars.fsy"
+//# 6557 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs())
let dummy = SynType.StaticConstant(SynConst.Int32(0), rhs parseState 2)
SynType.StaticConstantNamed(_1, dummy, (rhs2 parseState 1 2))
)
-//# 6348 "src/Compiler/pars.fsy"
+//# 6557 "src/Compiler/pars.fsy"
: 'gentype_typeArgActual));
-//# 17547 "pars.fs"
+//# 17996 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_typeArgActual in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6355 "src/Compiler/pars.fsy"
+//# 6564 "src/Compiler/pars.fsy"
_1
)
-//# 6355 "src/Compiler/pars.fsy"
+//# 6564 "src/Compiler/pars.fsy"
: 'gentype_typeArgActualOrDummyIfEmpty));
-//# 17558 "pars.fs"
+//# 18007 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_dummyTypeArg in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6358 "src/Compiler/pars.fsy"
+//# 6567 "src/Compiler/pars.fsy"
reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMissingTypeArgs())
_1
)
-//# 6358 "src/Compiler/pars.fsy"
+//# 6567 "src/Compiler/pars.fsy"
: 'gentype_typeArgActualOrDummyIfEmpty));
-//# 17570 "pars.fs"
+//# 18019 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6363 "src/Compiler/pars.fsy"
+//# 6572 "src/Compiler/pars.fsy"
let m = rhs parseState 1
let dummyStatVal = SynType.StaticConstant(SynConst.Int32(0), m)
let dummyName = SynType.LongIdent(SynLongIdent([ident("", m)], [], [None]))
let dummyTypeArg = SynType.StaticConstantNamed(dummyName, dummyStatVal, m)
dummyTypeArg
)
-//# 6363 "src/Compiler/pars.fsy"
+//# 6572 "src/Compiler/pars.fsy"
: 'gentype_dummyTypeArg));
-//# 17584 "pars.fs"
+//# 18033 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in
@@ -17589,76 +18038,76 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6371 "src/Compiler/pars.fsy"
+//# 6580 "src/Compiler/pars.fsy"
let mLess = rhs parseState 1
let mGreater = rhs parseState 3
let trivia = { LessRange = mLess; GreaterRange = mGreater }
_2, trivia
)
-//# 6371 "src/Compiler/pars.fsy"
+//# 6580 "src/Compiler/pars.fsy"
: 'gentype_measureTypeArg));
-//# 17600 "pars.fs"
+//# 18049 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
let _3 = parseState.GetInput(3) :?> bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6377 "src/Compiler/pars.fsy"
+//# 6586 "src/Compiler/pars.fsy"
let mLess = rhs parseState 1
let mGreater = rhs parseState 3
let trivia = { LessRange = mLess; GreaterRange = mGreater }
SynMeasure.Anon(rhs parseState 2), trivia
)
-//# 6377 "src/Compiler/pars.fsy"
+//# 6586 "src/Compiler/pars.fsy"
: 'gentype_measureTypeArg));
-//# 17615 "pars.fs"
+//# 18064 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6384 "src/Compiler/pars.fsy"
+//# 6593 "src/Compiler/pars.fsy"
SynMeasure.Named(_1.LongIdent, _1.Range)
)
-//# 6384 "src/Compiler/pars.fsy"
+//# 6593 "src/Compiler/pars.fsy"
: 'gentype_measureTypeAtom));
-//# 17626 "pars.fs"
+//# 18075 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynTypar in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6387 "src/Compiler/pars.fsy"
+//# 6596 "src/Compiler/pars.fsy"
SynMeasure.Var(_1, lhs parseState)
)
-//# 6387 "src/Compiler/pars.fsy"
+//# 6596 "src/Compiler/pars.fsy"
: 'gentype_measureTypeAtom));
-//# 17637 "pars.fs"
+//# 18086 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6390 "src/Compiler/pars.fsy"
+//# 6599 "src/Compiler/pars.fsy"
let mParen = rhs2 parseState 1 3
SynMeasure.Paren(_2, mParen)
)
-//# 6390 "src/Compiler/pars.fsy"
+//# 6599 "src/Compiler/pars.fsy"
: 'gentype_measureTypeAtom));
-//# 17650 "pars.fs"
+//# 18099 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeAtom in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6395 "src/Compiler/pars.fsy"
+//# 6604 "src/Compiler/pars.fsy"
_1
)
-//# 6395 "src/Compiler/pars.fsy"
+//# 6604 "src/Compiler/pars.fsy"
: 'gentype_measureTypePower));
-//# 17661 "pars.fs"
+//# 18110 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeAtom in
let _2 = parseState.GetInput(2) :?> string in
@@ -17666,7 +18115,7 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6398 "src/Compiler/pars.fsy"
+//# 6607 "src/Compiler/pars.fsy"
if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
if _2 = "^-" then
let mOp = rhs parseState 2
@@ -17677,68 +18126,68 @@ let _fsyacc_reductions = lazy [|
SynMeasure.Power(_1, mCaret, SynRationalConst.Negate(_3, mNegate), lhs parseState)
else SynMeasure.Power(_1, rhs parseState 2, _3, lhs parseState)
)
-//# 6398 "src/Compiler/pars.fsy"
+//# 6607 "src/Compiler/pars.fsy"
: 'gentype_measureTypePower));
-//# 17682 "pars.fs"
+//# 18131 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> int32 * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6409 "src/Compiler/pars.fsy"
+//# 6618 "src/Compiler/pars.fsy"
if fst _1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure())
let m = rhs parseState 1
SynMeasure.One(m)
)
-//# 6409 "src/Compiler/pars.fsy"
+//# 6618 "src/Compiler/pars.fsy"
: 'gentype_measureTypePower));
-//# 17695 "pars.fs"
+//# 18144 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypePower in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6415 "src/Compiler/pars.fsy"
+//# 6624 "src/Compiler/pars.fsy"
[_1]
)
-//# 6415 "src/Compiler/pars.fsy"
+//# 6624 "src/Compiler/pars.fsy"
: 'gentype_measureTypeSeq));
-//# 17706 "pars.fs"
+//# 18155 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypePower in
let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeSeq in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6418 "src/Compiler/pars.fsy"
+//# 6627 "src/Compiler/pars.fsy"
_1 :: _2
)
-//# 6418 "src/Compiler/pars.fsy"
+//# 6627 "src/Compiler/pars.fsy"
: 'gentype_measureTypeSeq));
-//# 17718 "pars.fs"
+//# 18167 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeSeq in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6422 "src/Compiler/pars.fsy"
+//# 6631 "src/Compiler/pars.fsy"
SynMeasure.Seq(_1, lhs parseState)
)
-//# 6422 "src/Compiler/pars.fsy"
+//# 6631 "src/Compiler/pars.fsy"
: 'gentype_measureTypeExpr));
-//# 17729 "pars.fs"
+//# 18178 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeExpr in
let _3 = parseState.GetInput(3) :?> 'gentype_measureTypeExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6425 "src/Compiler/pars.fsy"
+//# 6634 "src/Compiler/pars.fsy"
SynMeasure.Product(_1, rhs parseState 2, _3, lhs parseState)
)
-//# 6425 "src/Compiler/pars.fsy"
+//# 6634 "src/Compiler/pars.fsy"
: 'gentype_measureTypeExpr));
-//# 17741 "pars.fs"
+//# 18190 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeExpr in
let _2 = parseState.GetInput(2) :?> string in
@@ -17746,1072 +18195,1031 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6428 "src/Compiler/pars.fsy"
+//# 6637 "src/Compiler/pars.fsy"
if _2 <> "*" && _2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
if _2 = "*" then SynMeasure.Product(_1, rhs parseState 2, _3, lhs parseState)
else SynMeasure.Divide(Some _1, rhs parseState 2, _3, lhs parseState)
)
-//# 6428 "src/Compiler/pars.fsy"
+//# 6637 "src/Compiler/pars.fsy"
: 'gentype_measureTypeExpr));
-//# 17756 "pars.fs"
+//# 18205 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6433 "src/Compiler/pars.fsy"
+//# 6642 "src/Compiler/pars.fsy"
if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure())
SynMeasure.Divide(None, rhs parseState 1, _2, lhs parseState)
)
-//# 6433 "src/Compiler/pars.fsy"
+//# 6642 "src/Compiler/pars.fsy"
: 'gentype_measureTypeExpr));
-//# 17769 "pars.fs"
+//# 18218 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6438 "src/Compiler/pars.fsy"
+//# 6647 "src/Compiler/pars.fsy"
let id = mkSynId (lhs parseState) (_2).idText
SynTypar(id, TyparStaticReq.None, false)
)
-//# 6438 "src/Compiler/pars.fsy"
+//# 6647 "src/Compiler/pars.fsy"
: SynTypar));
-//# 17781 "pars.fs"
+//# 18230 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
let _2 = parseState.GetInput(2) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6442 "src/Compiler/pars.fsy"
+//# 6651 "src/Compiler/pars.fsy"
if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.tcUnexpectedSymbolInTypeExpression(_1))
let id = mkSynId (lhs parseState) (_2).idText
SynTypar(id, TyparStaticReq.HeadType, false)
)
-//# 6442 "src/Compiler/pars.fsy"
+//# 6651 "src/Compiler/pars.fsy"
: SynTypar));
-//# 17795 "pars.fs"
+//# 18244 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6448 "src/Compiler/pars.fsy"
+//# 6657 "src/Compiler/pars.fsy"
ident(_1, rhs parseState 1)
)
-//# 6448 "src/Compiler/pars.fsy"
+//# 6657 "src/Compiler/pars.fsy"
: Ident));
-//# 17806 "pars.fs"
+//# 18255 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6453 "src/Compiler/pars.fsy"
+//# 6662 "src/Compiler/pars.fsy"
SynLongIdent([ident(MangledGlobalName, rhs parseState 1)], [], [Some(IdentTrivia.OriginalNotation "global")])
)
-//# 6453 "src/Compiler/pars.fsy"
+//# 6662 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 17816 "pars.fs"
+//# 18265 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6456 "src/Compiler/pars.fsy"
+//# 6665 "src/Compiler/pars.fsy"
SynLongIdent([_1], [], [None])
)
-//# 6456 "src/Compiler/pars.fsy"
+//# 6665 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 17827 "pars.fs"
+//# 18276 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
let _3 = parseState.GetInput(3) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6459 "src/Compiler/pars.fsy"
+//# 6668 "src/Compiler/pars.fsy"
let (SynLongIdent(lid, dotms, trivia)) = _1
SynLongIdent(lid @ [_3], dotms @ [rhs parseState 2], trivia @ [None])
)
-//# 6459 "src/Compiler/pars.fsy"
+//# 6668 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 17840 "pars.fs"
+//# 18289 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynLongIdent in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6463 "src/Compiler/pars.fsy"
+//# 6672 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken())
let (SynLongIdent(lid, dotms, trivia)) = _1
SynLongIdent(lid, dotms @ [rhs parseState 2], trivia)
)
-//# 6463 "src/Compiler/pars.fsy"
+//# 6672 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 17854 "pars.fs"
+//# 18303 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_operatorName in
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6471 "src/Compiler/pars.fsy"
+//# 6680 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let rpr = rhs parseState 3
ident(CompileOpName _2, rhs parseState 2), IdentTrivia.OriginalNotationWithParen(lpr, _2, rpr)
)
-//# 6471 "src/Compiler/pars.fsy"
+//# 6680 "src/Compiler/pars.fsy"
: 'gentype_opName));
-//# 17868 "pars.fs"
+//# 18317 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _3 = parseState.GetInput(3) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6476 "src/Compiler/pars.fsy"
+//# 6685 "src/Compiler/pars.fsy"
reportParseErrorAt (lhs parseState) (FSComp.SR.parsErrorParsingAsOperatorName())
let lpr = rhs parseState 1
let rpr = rhs parseState 3
ident(CompileOpName "****", rhs parseState 2), IdentTrivia.HasParenthesis(lpr, rpr)
)
-//# 6476 "src/Compiler/pars.fsy"
+//# 6685 "src/Compiler/pars.fsy"
: 'gentype_opName));
-//# 17882 "pars.fs"
+//# 18331 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6482 "src/Compiler/pars.fsy"
+//# 6691 "src/Compiler/pars.fsy"
let m = rhs parseState 1
let lpr = mkFileIndexRange m.FileIndex m.Start m.Start
let rpr = mkFileIndexRange m.FileIndex m.End m.End
ident(CompileOpName "*", rhs parseState 1), IdentTrivia.OriginalNotationWithParen(lpr, "*", rpr)
)
-//# 6482 "src/Compiler/pars.fsy"
+//# 6691 "src/Compiler/pars.fsy"
: 'gentype_opName));
-//# 17895 "pars.fs"
+//# 18344 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseNames in
let _4 = parseState.GetInput(4) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6489 "src/Compiler/pars.fsy"
+//# 6698 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let text = ("|" + String.concat "|" (List.rev _2) + "|")
let rpr = rhs parseState 4
ident(text, rhs2 parseState 2 3), IdentTrivia.HasParenthesis(lpr, rpr)
)
-//# 6489 "src/Compiler/pars.fsy"
+//# 6698 "src/Compiler/pars.fsy"
: 'gentype_opName));
-//# 17910 "pars.fs"
+//# 18359 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseNames in
let _6 = parseState.GetInput(6) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6496 "src/Compiler/pars.fsy"
+//# 6705 "src/Compiler/pars.fsy"
let lpr = rhs parseState 1
let text = ("|" + String.concat "|" (List.rev _2) + "|_|")
let rpr = rhs parseState 6
ident(text, rhs2 parseState 2 5), IdentTrivia.HasParenthesis(lpr, rpr)
)
-//# 6496 "src/Compiler/pars.fsy"
+//# 6705 "src/Compiler/pars.fsy"
: 'gentype_opName));
-//# 17925 "pars.fs"
+//# 18374 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6504 "src/Compiler/pars.fsy"
+//# 6713 "src/Compiler/pars.fsy"
if not (IsValidPrefixOperatorDefinitionName _1) then
reportParseErrorAt (lhs parseState) (FSComp.SR.parsInvalidPrefixOperatorDefinition())
_1
)
-//# 6504 "src/Compiler/pars.fsy"
+//# 6713 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 17938 "pars.fs"
+//# 18387 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6509 "src/Compiler/pars.fsy"
+//# 6718 "src/Compiler/pars.fsy"
_1
)
-//# 6509 "src/Compiler/pars.fsy"
+//# 6718 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 17949 "pars.fs"
+//# 18398 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6512 "src/Compiler/pars.fsy"
+//# 6721 "src/Compiler/pars.fsy"
_1
)
-//# 6512 "src/Compiler/pars.fsy"
+//# 6721 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 17960 "pars.fs"
+//# 18409 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6515 "src/Compiler/pars.fsy"
+//# 6724 "src/Compiler/pars.fsy"
_1
)
-//# 6515 "src/Compiler/pars.fsy"
+//# 6724 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 17971 "pars.fs"
+//# 18420 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6518 "src/Compiler/pars.fsy"
+//# 6727 "src/Compiler/pars.fsy"
_1
)
-//# 6518 "src/Compiler/pars.fsy"
+//# 6727 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 17982 "pars.fs"
+//# 18431 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6521 "src/Compiler/pars.fsy"
+//# 6730 "src/Compiler/pars.fsy"
_1
)
-//# 6521 "src/Compiler/pars.fsy"
+//# 6730 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 17993 "pars.fs"
+//# 18442 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6524 "src/Compiler/pars.fsy"
+//# 6733 "src/Compiler/pars.fsy"
_1
)
-//# 6524 "src/Compiler/pars.fsy"
+//# 6733 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18004 "pars.fs"
+//# 18453 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6527 "src/Compiler/pars.fsy"
+//# 6736 "src/Compiler/pars.fsy"
_1
)
-//# 6527 "src/Compiler/pars.fsy"
+//# 6736 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18015 "pars.fs"
+//# 18464 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6530 "src/Compiler/pars.fsy"
+//# 6739 "src/Compiler/pars.fsy"
"$"
)
-//# 6530 "src/Compiler/pars.fsy"
+//# 6739 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18025 "pars.fs"
+//# 18474 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6533 "src/Compiler/pars.fsy"
+//# 6742 "src/Compiler/pars.fsy"
_1
)
-//# 6533 "src/Compiler/pars.fsy"
+//# 6742 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18036 "pars.fs"
+//# 18485 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6536 "src/Compiler/pars.fsy"
+//# 6745 "src/Compiler/pars.fsy"
"-"
)
-//# 6536 "src/Compiler/pars.fsy"
+//# 6745 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18046 "pars.fs"
+//# 18495 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6539 "src/Compiler/pars.fsy"
+//# 6748 "src/Compiler/pars.fsy"
"*"
)
-//# 6539 "src/Compiler/pars.fsy"
+//# 6748 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18056 "pars.fs"
+//# 18505 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6542 "src/Compiler/pars.fsy"
+//# 6751 "src/Compiler/pars.fsy"
"="
)
-//# 6542 "src/Compiler/pars.fsy"
+//# 6751 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18066 "pars.fs"
+//# 18515 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6545 "src/Compiler/pars.fsy"
+//# 6754 "src/Compiler/pars.fsy"
"or"
)
-//# 6545 "src/Compiler/pars.fsy"
+//# 6754 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18076 "pars.fs"
+//# 18525 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6548 "src/Compiler/pars.fsy"
+//# 6757 "src/Compiler/pars.fsy"
"<"
)
-//# 6548 "src/Compiler/pars.fsy"
+//# 6757 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18087 "pars.fs"
+//# 18536 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6551 "src/Compiler/pars.fsy"
+//# 6760 "src/Compiler/pars.fsy"
">"
)
-//# 6551 "src/Compiler/pars.fsy"
+//# 6760 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18098 "pars.fs"
+//# 18547 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6554 "src/Compiler/pars.fsy"
+//# 6763 "src/Compiler/pars.fsy"
"?"
)
-//# 6554 "src/Compiler/pars.fsy"
+//# 6763 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18108 "pars.fs"
+//# 18557 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6557 "src/Compiler/pars.fsy"
+//# 6766 "src/Compiler/pars.fsy"
"&"
)
-//# 6557 "src/Compiler/pars.fsy"
+//# 6766 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18118 "pars.fs"
+//# 18567 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6560 "src/Compiler/pars.fsy"
+//# 6769 "src/Compiler/pars.fsy"
"&&"
)
-//# 6560 "src/Compiler/pars.fsy"
+//# 6769 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18128 "pars.fs"
+//# 18577 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6563 "src/Compiler/pars.fsy"
+//# 6772 "src/Compiler/pars.fsy"
"||"
)
-//# 6563 "src/Compiler/pars.fsy"
+//# 6772 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18138 "pars.fs"
+//# 18587 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6566 "src/Compiler/pars.fsy"
+//# 6775 "src/Compiler/pars.fsy"
":="
)
-//# 6566 "src/Compiler/pars.fsy"
+//# 6775 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18148 "pars.fs"
+//# 18597 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6569 "src/Compiler/pars.fsy"
+//# 6778 "src/Compiler/pars.fsy"
if _1 <> ".[]" && _1 <> ".()" && _1 <> ".()<-" then
deprecatedOperator (lhs parseState)
_1
)
-//# 6569 "src/Compiler/pars.fsy"
+//# 6778 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18161 "pars.fs"
+//# 18610 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6574 "src/Compiler/pars.fsy"
+//# 6783 "src/Compiler/pars.fsy"
_1
)
-//# 6574 "src/Compiler/pars.fsy"
+//# 6783 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18172 "pars.fs"
+//# 18621 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6577 "src/Compiler/pars.fsy"
+//# 6786 "src/Compiler/pars.fsy"
".."
)
-//# 6577 "src/Compiler/pars.fsy"
+//# 6786 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18182 "pars.fs"
+//# 18631 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6580 "src/Compiler/pars.fsy"
+//# 6789 "src/Compiler/pars.fsy"
".. .."
)
-//# 6580 "src/Compiler/pars.fsy"
+//# 6789 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18192 "pars.fs"
+//# 18641 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * bool in
let _2 = parseState.GetInput(2) :?> string * bool in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6583 "src/Compiler/pars.fsy"
+//# 6792 "src/Compiler/pars.fsy"
if _1 <> _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuotationName(fst _1))
fst _1
)
-//# 6583 "src/Compiler/pars.fsy"
+//# 6792 "src/Compiler/pars.fsy"
: 'gentype_operatorName));
-//# 18205 "pars.fs"
+//# 18654 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6589 "src/Compiler/pars.fsy"
+//# 6798 "src/Compiler/pars.fsy"
if not (String.isLeadingIdentifierCharacterUpperCase _1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseMustBeginWithUpperCase())
if (_1.IndexOf('|') <> -1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseContainsPipe())
_1
)
-//# 6589 "src/Compiler/pars.fsy"
+//# 6798 "src/Compiler/pars.fsy"
: 'gentype_activePatternCaseName));
-//# 18218 "pars.fs"
+//# 18667 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6596 "src/Compiler/pars.fsy"
+//# 6805 "src/Compiler/pars.fsy"
[_2]
)
-//# 6596 "src/Compiler/pars.fsy"
+//# 6805 "src/Compiler/pars.fsy"
: 'gentype_activePatternCaseNames));
-//# 18229 "pars.fs"
+//# 18678 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_activePatternCaseNames in
let _3 = parseState.GetInput(3) :?> 'gentype_activePatternCaseName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6599 "src/Compiler/pars.fsy"
+//# 6808 "src/Compiler/pars.fsy"
_3 :: _1
)
-//# 6599 "src/Compiler/pars.fsy"
+//# 6808 "src/Compiler/pars.fsy"
: 'gentype_activePatternCaseNames));
-//# 18241 "pars.fs"
+//# 18690 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6604 "src/Compiler/pars.fsy"
+//# 6813 "src/Compiler/pars.fsy"
SynIdent(_1, None)
)
-//# 6604 "src/Compiler/pars.fsy"
+//# 6813 "src/Compiler/pars.fsy"
: 'gentype_identOrOp));
-//# 18252 "pars.fs"
+//# 18701 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6607 "src/Compiler/pars.fsy"
+//# 6816 "src/Compiler/pars.fsy"
let ident, trivia = _1
SynIdent(ident, Some trivia)
)
-//# 6607 "src/Compiler/pars.fsy"
+//# 6816 "src/Compiler/pars.fsy"
: 'gentype_identOrOp));
-//# 18264 "pars.fs"
+//# 18713 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6614 "src/Compiler/pars.fsy"
+//# 6823 "src/Compiler/pars.fsy"
SynLongIdent([_1], [], [None])
)
-//# 6614 "src/Compiler/pars.fsy"
+//# 6823 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 18275 "pars.fs"
+//# 18724 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6617 "src/Compiler/pars.fsy"
+//# 6826 "src/Compiler/pars.fsy"
let ident, trivia = _1
SynLongIdent([ident], [], [Some trivia])
)
-//# 6617 "src/Compiler/pars.fsy"
+//# 6826 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 18287 "pars.fs"
+//# 18736 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> SynLongIdent in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6621 "src/Compiler/pars.fsy"
+//# 6830 "src/Compiler/pars.fsy"
prependIdentInLongIdentWithTrivia (SynIdent(_1, None)) (rhs parseState 2) _3
)
-//# 6621 "src/Compiler/pars.fsy"
+//# 6830 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 18299 "pars.fs"
+//# 18748 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6624 "src/Compiler/pars.fsy"
+//# 6833 "src/Compiler/pars.fsy"
if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIdentifierExpected())
SynLongIdent([_1], [rhs parseState 2], [None])
)
-//# 6624 "src/Compiler/pars.fsy"
+//# 6833 "src/Compiler/pars.fsy"
: SynLongIdent));
-//# 18312 "pars.fs"
+//# 18761 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_identOrOp in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6630 "src/Compiler/pars.fsy"
+//# 6839 "src/Compiler/pars.fsy"
_1
)
-//# 6630 "src/Compiler/pars.fsy"
+//# 6839 "src/Compiler/pars.fsy"
: 'gentype_nameop));
-//# 18323 "pars.fs"
+//# 18772 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6634 "src/Compiler/pars.fsy"
+//# 6843 "src/Compiler/pars.fsy"
if _1.idText = "" then
SynExpr.FromParseError(SynExpr.Ident(_1), _1.idRange)
else
SynExpr.Ident(_1)
)
-//# 6634 "src/Compiler/pars.fsy"
+//# 6843 "src/Compiler/pars.fsy"
: 'gentype_identExpr));
-//# 18337 "pars.fs"
+//# 18786 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_opName in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6640 "src/Compiler/pars.fsy"
+//# 6849 "src/Compiler/pars.fsy"
let m = lhs parseState
let ident, trivia = _1
SynExpr.LongIdent(false, SynLongIdent([ident], [], [Some trivia]), None, m)
)
-//# 6640 "src/Compiler/pars.fsy"
+//# 6849 "src/Compiler/pars.fsy"
: 'gentype_identExpr));
-//# 18350 "pars.fs"
+//# 18799 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6645 "src/Compiler/pars.fsy"
+//# 6854 "src/Compiler/pars.fsy"
)
-//# 6645 "src/Compiler/pars.fsy"
+//# 6854 "src/Compiler/pars.fsy"
: 'gentype_topSeparator));
-//# 18360 "pars.fs"
+//# 18809 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6646 "src/Compiler/pars.fsy"
+//# 6855 "src/Compiler/pars.fsy"
)
-//# 6646 "src/Compiler/pars.fsy"
+//# 6855 "src/Compiler/pars.fsy"
: 'gentype_topSeparator));
-//# 18370 "pars.fs"
+//# 18819 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6647 "src/Compiler/pars.fsy"
+//# 6856 "src/Compiler/pars.fsy"
)
-//# 6647 "src/Compiler/pars.fsy"
+//# 6856 "src/Compiler/pars.fsy"
: 'gentype_topSeparator));
-//# 18380 "pars.fs"
+//# 18829 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6650 "src/Compiler/pars.fsy"
+//# 6859 "src/Compiler/pars.fsy"
)
-//# 6650 "src/Compiler/pars.fsy"
+//# 6859 "src/Compiler/pars.fsy"
: 'gentype_topSeparators));
-//# 18391 "pars.fs"
+//# 18840 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in
let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6651 "src/Compiler/pars.fsy"
+//# 6860 "src/Compiler/pars.fsy"
)
-//# 6651 "src/Compiler/pars.fsy"
+//# 6860 "src/Compiler/pars.fsy"
: 'gentype_topSeparators));
-//# 18403 "pars.fs"
+//# 18852 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in
let _2 = parseState.GetInput(2) :?> 'gentype_opt_topSeparators in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6654 "src/Compiler/pars.fsy"
+//# 6863 "src/Compiler/pars.fsy"
)
-//# 6654 "src/Compiler/pars.fsy"
+//# 6863 "src/Compiler/pars.fsy"
: 'gentype_opt_topSeparators));
-//# 18415 "pars.fs"
+//# 18864 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6655 "src/Compiler/pars.fsy"
+//# 6864 "src/Compiler/pars.fsy"
)
-//# 6655 "src/Compiler/pars.fsy"
+//# 6864 "src/Compiler/pars.fsy"
: 'gentype_opt_topSeparators));
-//# 18425 "pars.fs"
+//# 18874 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6659 "src/Compiler/pars.fsy"
-
+//# 6868 "src/Compiler/pars.fsy"
+ None
)
-//# 6659 "src/Compiler/pars.fsy"
+//# 6868 "src/Compiler/pars.fsy"
: 'gentype_seps));
-//# 18435 "pars.fs"
+//# 18884 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6660 "src/Compiler/pars.fsy"
-
+//# 6869 "src/Compiler/pars.fsy"
+ Some (rhs parseState 1)
)
-//# 6660 "src/Compiler/pars.fsy"
+//# 6869 "src/Compiler/pars.fsy"
: 'gentype_seps));
-//# 18445 "pars.fs"
+//# 18894 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6661 "src/Compiler/pars.fsy"
-
+//# 6870 "src/Compiler/pars.fsy"
+ Some (rhs parseState 2)
)
-//# 6661 "src/Compiler/pars.fsy"
+//# 6870 "src/Compiler/pars.fsy"
: 'gentype_seps));
-//# 18455 "pars.fs"
+//# 18904 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6662 "src/Compiler/pars.fsy"
-
+//# 6871 "src/Compiler/pars.fsy"
+ Some (rhs parseState 1)
)
-//# 6662 "src/Compiler/pars.fsy"
+//# 6871 "src/Compiler/pars.fsy"
: 'gentype_seps));
-//# 18465 "pars.fs"
+//# 18914 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6667 "src/Compiler/pars.fsy"
+//# 6876 "src/Compiler/pars.fsy"
)
-//# 6667 "src/Compiler/pars.fsy"
+//# 6876 "src/Compiler/pars.fsy"
: 'gentype_declEnd));
-//# 18476 "pars.fs"
+//# 18925 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6669 "src/Compiler/pars.fsy"
+//# 6878 "src/Compiler/pars.fsy"
)
-//# 6669 "src/Compiler/pars.fsy"
+//# 6878 "src/Compiler/pars.fsy"
: 'gentype_declEnd));
-//# 18486 "pars.fs"
+//# 18935 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6671 "src/Compiler/pars.fsy"
+//# 6880 "src/Compiler/pars.fsy"
)
-//# 6671 "src/Compiler/pars.fsy"
+//# 6880 "src/Compiler/pars.fsy"
: 'gentype_declEnd));
-//# 18496 "pars.fs"
+//# 18945 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6676 "src/Compiler/pars.fsy"
+//# 6885 "src/Compiler/pars.fsy"
)
-//# 6676 "src/Compiler/pars.fsy"
+//# 6885 "src/Compiler/pars.fsy"
: 'gentype_opt_declEnd));
-//# 18507 "pars.fs"
+//# 18956 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6678 "src/Compiler/pars.fsy"
+//# 6887 "src/Compiler/pars.fsy"
)
-//# 6678 "src/Compiler/pars.fsy"
+//# 6887 "src/Compiler/pars.fsy"
: 'gentype_opt_declEnd));
-//# 18517 "pars.fs"
+//# 18966 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6680 "src/Compiler/pars.fsy"
+//# 6889 "src/Compiler/pars.fsy"
)
-//# 6680 "src/Compiler/pars.fsy"
+//# 6889 "src/Compiler/pars.fsy"
: 'gentype_opt_declEnd));
-//# 18527 "pars.fs"
+//# 18976 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6682 "src/Compiler/pars.fsy"
+//# 6891 "src/Compiler/pars.fsy"
)
-//# 6682 "src/Compiler/pars.fsy"
+//# 6891 "src/Compiler/pars.fsy"
: 'gentype_opt_declEnd));
-//# 18537 "pars.fs"
+//# 18986 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6685 "src/Compiler/pars.fsy"
+//# 6894 "src/Compiler/pars.fsy"
)
-//# 6685 "src/Compiler/pars.fsy"
+//# 6894 "src/Compiler/pars.fsy"
: 'gentype_opt_ODECLEND));
-//# 18548 "pars.fs"
+//# 18997 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6686 "src/Compiler/pars.fsy"
+//# 6895 "src/Compiler/pars.fsy"
)
-//# 6686 "src/Compiler/pars.fsy"
+//# 6895 "src/Compiler/pars.fsy"
: 'gentype_opt_ODECLEND));
-//# 18558 "pars.fs"
+//# 19007 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6689 "src/Compiler/pars.fsy"
+//# 6898 "src/Compiler/pars.fsy"
deprecatedWithError (FSComp.SR.parsNoEqualShouldFollowNamespace()) (lhs parseState); ()
)
-//# 6689 "src/Compiler/pars.fsy"
+//# 6898 "src/Compiler/pars.fsy"
: 'gentype_deprecated_opt_equals));
-//# 18568 "pars.fs"
+//# 19017 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6690 "src/Compiler/pars.fsy"
+//# 6899 "src/Compiler/pars.fsy"
)
-//# 6690 "src/Compiler/pars.fsy"
+//# 6899 "src/Compiler/pars.fsy"
: 'gentype_deprecated_opt_equals));
-//# 18578 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 6694 "src/Compiler/pars.fsy"
- let mEquals = rhs parseState 1
- Some mEquals
- )
-//# 6694 "src/Compiler/pars.fsy"
- : 'gentype_opt_equals));
-//# 18589 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 6696 "src/Compiler/pars.fsy"
- None
- )
-//# 6696 "src/Compiler/pars.fsy"
- : 'gentype_opt_equals));
-//# 18599 "pars.fs"
+//# 19027 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6699 "src/Compiler/pars.fsy"
+//# 6902 "src/Compiler/pars.fsy"
)
-//# 6699 "src/Compiler/pars.fsy"
+//# 6902 "src/Compiler/pars.fsy"
: 'gentype_opt_OBLOCKSEP));
-//# 18609 "pars.fs"
+//# 19037 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6700 "src/Compiler/pars.fsy"
+//# 6903 "src/Compiler/pars.fsy"
)
-//# 6700 "src/Compiler/pars.fsy"
+//# 6903 "src/Compiler/pars.fsy"
: 'gentype_opt_OBLOCKSEP));
-//# 18619 "pars.fs"
+//# 19047 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_seps in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6703 "src/Compiler/pars.fsy"
+//# 6906 "src/Compiler/pars.fsy"
)
-//# 6703 "src/Compiler/pars.fsy"
+//# 6906 "src/Compiler/pars.fsy"
: 'gentype_opt_seps));
-//# 18630 "pars.fs"
+//# 19058 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6704 "src/Compiler/pars.fsy"
+//# 6907 "src/Compiler/pars.fsy"
)
-//# 6704 "src/Compiler/pars.fsy"
+//# 6907 "src/Compiler/pars.fsy"
: 'gentype_opt_seps));
-//# 18640 "pars.fs"
+//# 19068 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6707 "src/Compiler/pars.fsy"
+//# 6910 "src/Compiler/pars.fsy"
true
)
-//# 6707 "src/Compiler/pars.fsy"
+//# 6910 "src/Compiler/pars.fsy"
: 'gentype_opt_rec));
-//# 18650 "pars.fs"
+//# 19078 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6708 "src/Compiler/pars.fsy"
+//# 6911 "src/Compiler/pars.fsy"
false
)
-//# 6708 "src/Compiler/pars.fsy"
+//# 6911 "src/Compiler/pars.fsy"
: 'gentype_opt_rec));
-//# 18660 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 6711 "src/Compiler/pars.fsy"
-
- )
-//# 6711 "src/Compiler/pars.fsy"
- : 'gentype_opt_bar));
-//# 18670 "pars.fs"
+//# 19088 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6712 "src/Compiler/pars.fsy"
-
- )
-//# 6712 "src/Compiler/pars.fsy"
- : 'gentype_opt_bar));
-//# 18680 "pars.fs"
- (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
- Microsoft.FSharp.Core.Operators.box
- (
- (
-//# 6715 "src/Compiler/pars.fsy"
+//# 6914 "src/Compiler/pars.fsy"
Some(rhs parseState 1)
)
-//# 6715 "src/Compiler/pars.fsy"
+//# 6914 "src/Compiler/pars.fsy"
: 'gentype_opt_inline));
-//# 18690 "pars.fs"
+//# 19098 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6716 "src/Compiler/pars.fsy"
+//# 6915 "src/Compiler/pars.fsy"
None
)
-//# 6716 "src/Compiler/pars.fsy"
+//# 6915 "src/Compiler/pars.fsy"
: 'gentype_opt_inline));
-//# 18700 "pars.fs"
+//# 19108 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6719 "src/Compiler/pars.fsy"
+//# 6918 "src/Compiler/pars.fsy"
Some(rhs parseState 1)
)
-//# 6719 "src/Compiler/pars.fsy"
+//# 6918 "src/Compiler/pars.fsy"
: 'gentype_opt_mutable));
-//# 18710 "pars.fs"
+//# 19118 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6720 "src/Compiler/pars.fsy"
+//# 6919 "src/Compiler/pars.fsy"
None
)
-//# 6720 "src/Compiler/pars.fsy"
+//# 6919 "src/Compiler/pars.fsy"
: 'gentype_opt_mutable));
-//# 18720 "pars.fs"
+//# 19128 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6724 "src/Compiler/pars.fsy"
+//# 6923 "src/Compiler/pars.fsy"
)
-//# 6724 "src/Compiler/pars.fsy"
+//# 6923 "src/Compiler/pars.fsy"
: 'gentype_doToken));
-//# 18730 "pars.fs"
+//# 19138 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6725 "src/Compiler/pars.fsy"
+//# 6924 "src/Compiler/pars.fsy"
)
-//# 6725 "src/Compiler/pars.fsy"
+//# 6924 "src/Compiler/pars.fsy"
: 'gentype_doToken));
-//# 18740 "pars.fs"
+//# 19148 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6729 "src/Compiler/pars.fsy"
+//# 6928 "src/Compiler/pars.fsy"
rhs parseState 1
)
-//# 6729 "src/Compiler/pars.fsy"
+//# 6928 "src/Compiler/pars.fsy"
: 'gentype_doneDeclEnd));
-//# 18750 "pars.fs"
+//# 19158 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6731 "src/Compiler/pars.fsy"
+//# 6930 "src/Compiler/pars.fsy"
_1
)
-//# 6731 "src/Compiler/pars.fsy"
+//# 6930 "src/Compiler/pars.fsy"
: 'gentype_doneDeclEnd));
-//# 18761 "pars.fs"
+//# 19169 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6735 "src/Compiler/pars.fsy"
+//# 6934 "src/Compiler/pars.fsy"
if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatError (FSComp.SR.mlCompatStructEndNoLongerSupported()) (lhs parseState)
else
mlCompatWarning (FSComp.SR.parsSyntaxModuleStructEndDeprecated()) (lhs parseState)
)
-//# 6735 "src/Compiler/pars.fsy"
+//# 6934 "src/Compiler/pars.fsy"
: 'gentype_structOrBegin));
-//# 18775 "pars.fs"
+//# 19183 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6740 "src/Compiler/pars.fsy"
+//# 6939 "src/Compiler/pars.fsy"
)
-//# 6740 "src/Compiler/pars.fsy"
+//# 6939 "src/Compiler/pars.fsy"
: 'gentype_structOrBegin));
-//# 18785 "pars.fs"
+//# 19193 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6744 "src/Compiler/pars.fsy"
+//# 6943 "src/Compiler/pars.fsy"
if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatError (FSComp.SR.mlCompatSigEndNoLongerSupported())(lhs parseState)
else
mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState)
)
-//# 6744 "src/Compiler/pars.fsy"
+//# 6943 "src/Compiler/pars.fsy"
: 'gentype_sigOrBegin));
-//# 18799 "pars.fs"
+//# 19207 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6749 "src/Compiler/pars.fsy"
+//# 6948 "src/Compiler/pars.fsy"
)
-//# 6749 "src/Compiler/pars.fsy"
+//# 6948 "src/Compiler/pars.fsy"
: 'gentype_sigOrBegin));
-//# 18809 "pars.fs"
+//# 19217 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6753 "src/Compiler/pars.fsy"
+//# 6952 "src/Compiler/pars.fsy"
if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then
mlCompatError (FSComp.SR.mlCompatSigColonNoLongerSupported())(lhs parseState)
else
@@ -18819,77 +19227,77 @@ let _fsyacc_reductions = lazy [|
None
)
-//# 6753 "src/Compiler/pars.fsy"
+//# 6952 "src/Compiler/pars.fsy"
: 'gentype_colonOrEquals));
-//# 18824 "pars.fs"
+//# 19232 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6760 "src/Compiler/pars.fsy"
+//# 6959 "src/Compiler/pars.fsy"
let mEquals = rhs parseState 1
Some mEquals
)
-//# 6760 "src/Compiler/pars.fsy"
+//# 6959 "src/Compiler/pars.fsy"
: 'gentype_colonOrEquals));
-//# 18835 "pars.fs"
+//# 19243 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6766 "src/Compiler/pars.fsy"
+//# 6965 "src/Compiler/pars.fsy"
let (s, synStringKind, _) = _1
s, synStringKind
)
-//# 6766 "src/Compiler/pars.fsy"
+//# 6965 "src/Compiler/pars.fsy"
: 'gentype_string));
-//# 18847 "pars.fs"
+//# 19255 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6770 "src/Compiler/pars.fsy"
+//# 6969 "src/Compiler/pars.fsy"
_1
)
-//# 6770 "src/Compiler/pars.fsy"
+//# 6969 "src/Compiler/pars.fsy"
: 'gentype_sourceIdentifier));
-//# 18858 "pars.fs"
+//# 19266 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6774 "src/Compiler/pars.fsy"
+//# 6973 "src/Compiler/pars.fsy"
(_1, None)
)
-//# 6774 "src/Compiler/pars.fsy"
+//# 6973 "src/Compiler/pars.fsy"
: 'gentype_interpolatedStringFill));
-//# 18869 "pars.fs"
+//# 19277 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> SynExpr in
let _3 = parseState.GetInput(3) :?> Ident in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6777 "src/Compiler/pars.fsy"
+//# 6976 "src/Compiler/pars.fsy"
(_1, Some _3)
)
-//# 6777 "src/Compiler/pars.fsy"
+//# 6976 "src/Compiler/pars.fsy"
: 'gentype_interpolatedStringFill));
-//# 18881 "pars.fs"
+//# 19289 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6781 "src/Compiler/pars.fsy"
+//# 6980 "src/Compiler/pars.fsy"
[ SynInterpolatedStringPart.String(fst _1, rhs parseState 1) ]
)
-//# 6781 "src/Compiler/pars.fsy"
+//# 6980 "src/Compiler/pars.fsy"
: 'gentype_interpolatedStringParts));
-//# 18892 "pars.fs"
+//# 19300 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringFill in
@@ -18897,27 +19305,27 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6784 "src/Compiler/pars.fsy"
- SynInterpolatedStringPart.String(fst _1, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3
+//# 6983 "src/Compiler/pars.fsy"
+ SynInterpolatedStringPart.String(fst _1, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3
)
-//# 6784 "src/Compiler/pars.fsy"
+//# 6983 "src/Compiler/pars.fsy"
: 'gentype_interpolatedStringParts));
-//# 18905 "pars.fs"
+//# 19313 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringParts in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6787 "src/Compiler/pars.fsy"
+//# 6986 "src/Compiler/pars.fsy"
let rbrace = parseState.InputEndPosition 1
let lbrace = parseState.InputStartPosition 2
reportParseErrorAt (mkSynRange rbrace lbrace) (FSComp.SR.parsEmptyFillInInterpolatedString())
SynInterpolatedStringPart.String(fst _1, rhs parseState 1) :: _2
)
-//# 6787 "src/Compiler/pars.fsy"
+//# 6986 "src/Compiler/pars.fsy"
: 'gentype_interpolatedStringParts));
-//# 18920 "pars.fs"
+//# 19328 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringFill in
@@ -18925,371 +19333,371 @@ let _fsyacc_reductions = lazy [|
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6797 "src/Compiler/pars.fsy"
+//# 6996 "src/Compiler/pars.fsy"
let s, synStringKind, _ = _1
SynInterpolatedStringPart.String(s, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3, synStringKind
)
-//# 6797 "src/Compiler/pars.fsy"
+//# 6996 "src/Compiler/pars.fsy"
: 'gentype_interpolatedString));
-//# 18934 "pars.fs"
+//# 19342 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6801 "src/Compiler/pars.fsy"
+//# 7000 "src/Compiler/pars.fsy"
let s, synStringKind, _ = _1
[ SynInterpolatedStringPart.String(s, rhs parseState 1) ], synStringKind
)
-//# 6801 "src/Compiler/pars.fsy"
+//# 7000 "src/Compiler/pars.fsy"
: 'gentype_interpolatedString));
-//# 18946 "pars.fs"
+//# 19354 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in
let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringParts in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6805 "src/Compiler/pars.fsy"
+//# 7004 "src/Compiler/pars.fsy"
let s, synStringKind, _ = _1
let rbrace = parseState.InputEndPosition 1
let lbrace = parseState.InputStartPosition 2
reportParseErrorAt (mkSynRange rbrace lbrace) (FSComp.SR.parsEmptyFillInInterpolatedString())
SynInterpolatedStringPart.String(s, rhs parseState 1) :: _2, synStringKind
)
-//# 6805 "src/Compiler/pars.fsy"
+//# 7004 "src/Compiler/pars.fsy"
: 'gentype_interpolatedString));
-//# 18962 "pars.fs"
+//# 19370 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6812 "src/Compiler/pars.fsy"
+//# 7011 "src/Compiler/pars.fsy"
)
-//# 6812 "src/Compiler/pars.fsy"
+//# 7011 "src/Compiler/pars.fsy"
: 'gentype_opt_HIGH_PRECEDENCE_APP));
-//# 18972 "pars.fs"
+//# 19380 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6813 "src/Compiler/pars.fsy"
+//# 7012 "src/Compiler/pars.fsy"
)
-//# 6813 "src/Compiler/pars.fsy"
+//# 7012 "src/Compiler/pars.fsy"
: 'gentype_opt_HIGH_PRECEDENCE_APP));
-//# 18982 "pars.fs"
+//# 19390 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6814 "src/Compiler/pars.fsy"
+//# 7013 "src/Compiler/pars.fsy"
)
-//# 6814 "src/Compiler/pars.fsy"
+//# 7013 "src/Compiler/pars.fsy"
: 'gentype_opt_HIGH_PRECEDENCE_APP));
-//# 18992 "pars.fs"
+//# 19400 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6817 "src/Compiler/pars.fsy"
+//# 7016 "src/Compiler/pars.fsy"
)
-//# 6817 "src/Compiler/pars.fsy"
+//# 7016 "src/Compiler/pars.fsy"
: 'gentype_opt_HIGH_PRECEDENCE_TYAPP));
-//# 19002 "pars.fs"
+//# 19410 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6818 "src/Compiler/pars.fsy"
+//# 7017 "src/Compiler/pars.fsy"
)
-//# 6818 "src/Compiler/pars.fsy"
+//# 7017 "src/Compiler/pars.fsy"
: 'gentype_opt_HIGH_PRECEDENCE_TYAPP));
-//# 19012 "pars.fs"
+//# 19420 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6822 "src/Compiler/pars.fsy"
+//# 7021 "src/Compiler/pars.fsy"
)
-//# 6822 "src/Compiler/pars.fsy"
+//# 7021 "src/Compiler/pars.fsy"
: 'gentype_typeKeyword));
-//# 19023 "pars.fs"
+//# 19431 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6823 "src/Compiler/pars.fsy"
+//# 7022 "src/Compiler/pars.fsy"
)
-//# 6823 "src/Compiler/pars.fsy"
+//# 7022 "src/Compiler/pars.fsy"
: 'gentype_typeKeyword));
-//# 19033 "pars.fs"
+//# 19441 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6824 "src/Compiler/pars.fsy"
+//# 7023 "src/Compiler/pars.fsy"
)
-//# 6824 "src/Compiler/pars.fsy"
+//# 7023 "src/Compiler/pars.fsy"
: 'gentype_typeKeyword));
-//# 19043 "pars.fs"
+//# 19451 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_moduleKeyword in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6828 "src/Compiler/pars.fsy"
+//# 7027 "src/Compiler/pars.fsy"
)
-//# 6828 "src/Compiler/pars.fsy"
+//# 7027 "src/Compiler/pars.fsy"
: 'gentype_moduleKeyword));
-//# 19054 "pars.fs"
+//# 19462 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6829 "src/Compiler/pars.fsy"
+//# 7028 "src/Compiler/pars.fsy"
)
-//# 6829 "src/Compiler/pars.fsy"
+//# 7028 "src/Compiler/pars.fsy"
: 'gentype_moduleKeyword));
-//# 19064 "pars.fs"
+//# 19472 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6830 "src/Compiler/pars.fsy"
+//# 7029 "src/Compiler/pars.fsy"
)
-//# 6830 "src/Compiler/pars.fsy"
+//# 7029 "src/Compiler/pars.fsy"
: 'gentype_moduleKeyword));
-//# 19074 "pars.fs"
+//# 19482 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_rbrace in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6833 "src/Compiler/pars.fsy"
+//# 7032 "src/Compiler/pars.fsy"
)
-//# 6833 "src/Compiler/pars.fsy"
+//# 7032 "src/Compiler/pars.fsy"
: 'gentype_rbrace));
-//# 19085 "pars.fs"
+//# 19493 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6834 "src/Compiler/pars.fsy"
+//# 7033 "src/Compiler/pars.fsy"
)
-//# 6834 "src/Compiler/pars.fsy"
+//# 7033 "src/Compiler/pars.fsy"
: 'gentype_rbrace));
-//# 19095 "pars.fs"
+//# 19503 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6835 "src/Compiler/pars.fsy"
+//# 7034 "src/Compiler/pars.fsy"
)
-//# 6835 "src/Compiler/pars.fsy"
+//# 7034 "src/Compiler/pars.fsy"
: 'gentype_rbrace));
-//# 19106 "pars.fs"
+//# 19514 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6838 "src/Compiler/pars.fsy"
+//# 7037 "src/Compiler/pars.fsy"
)
-//# 6838 "src/Compiler/pars.fsy"
+//# 7037 "src/Compiler/pars.fsy"
: 'gentype_bar_rbrace));
-//# 19116 "pars.fs"
+//# 19524 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_rparen in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6841 "src/Compiler/pars.fsy"
+//# 7040 "src/Compiler/pars.fsy"
)
-//# 6841 "src/Compiler/pars.fsy"
+//# 7040 "src/Compiler/pars.fsy"
: 'gentype_rparen));
-//# 19127 "pars.fs"
+//# 19535 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6842 "src/Compiler/pars.fsy"
+//# 7041 "src/Compiler/pars.fsy"
)
-//# 6842 "src/Compiler/pars.fsy"
+//# 7041 "src/Compiler/pars.fsy"
: 'gentype_rparen));
-//# 19137 "pars.fs"
+//# 19545 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6843 "src/Compiler/pars.fsy"
+//# 7042 "src/Compiler/pars.fsy"
)
-//# 6843 "src/Compiler/pars.fsy"
+//# 7042 "src/Compiler/pars.fsy"
: 'gentype_rparen));
-//# 19147 "pars.fs"
+//# 19555 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6846 "src/Compiler/pars.fsy"
+//# 7045 "src/Compiler/pars.fsy"
)
-//# 6846 "src/Compiler/pars.fsy"
+//# 7045 "src/Compiler/pars.fsy"
: 'gentype_oblockend));
-//# 19158 "pars.fs"
+//# 19566 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6847 "src/Compiler/pars.fsy"
+//# 7046 "src/Compiler/pars.fsy"
)
-//# 6847 "src/Compiler/pars.fsy"
+//# 7046 "src/Compiler/pars.fsy"
: 'gentype_oblockend));
-//# 19168 "pars.fs"
+//# 19576 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> range in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6848 "src/Compiler/pars.fsy"
+//# 7047 "src/Compiler/pars.fsy"
)
-//# 6848 "src/Compiler/pars.fsy"
+//# 7047 "src/Compiler/pars.fsy"
: 'gentype_oblockend));
-//# 19179 "pars.fs"
+//# 19587 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6851 "src/Compiler/pars.fsy"
+//# 7050 "src/Compiler/pars.fsy"
false
)
-//# 6851 "src/Compiler/pars.fsy"
+//# 7050 "src/Compiler/pars.fsy"
: 'gentype_ends_other_than_rparen_coming_soon_or_recover));
-//# 19189 "pars.fs"
+//# 19597 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6852 "src/Compiler/pars.fsy"
+//# 7051 "src/Compiler/pars.fsy"
false
)
-//# 6852 "src/Compiler/pars.fsy"
+//# 7051 "src/Compiler/pars.fsy"
: 'gentype_ends_other_than_rparen_coming_soon_or_recover));
-//# 19199 "pars.fs"
+//# 19607 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6853 "src/Compiler/pars.fsy"
+//# 7052 "src/Compiler/pars.fsy"
false
)
-//# 6853 "src/Compiler/pars.fsy"
+//# 7052 "src/Compiler/pars.fsy"
: 'gentype_ends_other_than_rparen_coming_soon_or_recover));
-//# 19209 "pars.fs"
+//# 19617 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6854 "src/Compiler/pars.fsy"
+//# 7053 "src/Compiler/pars.fsy"
false
)
-//# 6854 "src/Compiler/pars.fsy"
+//# 7053 "src/Compiler/pars.fsy"
: 'gentype_ends_other_than_rparen_coming_soon_or_recover));
-//# 19219 "pars.fs"
+//# 19627 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6855 "src/Compiler/pars.fsy"
+//# 7054 "src/Compiler/pars.fsy"
_1
)
-//# 6855 "src/Compiler/pars.fsy"
+//# 7054 "src/Compiler/pars.fsy"
: 'gentype_ends_other_than_rparen_coming_soon_or_recover));
-//# 19230 "pars.fs"
+//# 19638 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6858 "src/Compiler/pars.fsy"
+//# 7057 "src/Compiler/pars.fsy"
false
)
-//# 6858 "src/Compiler/pars.fsy"
+//# 7057 "src/Compiler/pars.fsy"
: 'gentype_ends_coming_soon_or_recover));
-//# 19240 "pars.fs"
+//# 19648 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6859 "src/Compiler/pars.fsy"
+//# 7058 "src/Compiler/pars.fsy"
false
)
-//# 6859 "src/Compiler/pars.fsy"
+//# 7058 "src/Compiler/pars.fsy"
: 'gentype_ends_coming_soon_or_recover));
-//# 19250 "pars.fs"
+//# 19658 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6860 "src/Compiler/pars.fsy"
+//# 7059 "src/Compiler/pars.fsy"
false
)
-//# 6860 "src/Compiler/pars.fsy"
+//# 7059 "src/Compiler/pars.fsy"
: 'gentype_ends_coming_soon_or_recover));
-//# 19260 "pars.fs"
+//# 19668 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6861 "src/Compiler/pars.fsy"
+//# 7060 "src/Compiler/pars.fsy"
false
)
-//# 6861 "src/Compiler/pars.fsy"
+//# 7060 "src/Compiler/pars.fsy"
: 'gentype_ends_coming_soon_or_recover));
-//# 19270 "pars.fs"
+//# 19678 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6862 "src/Compiler/pars.fsy"
+//# 7061 "src/Compiler/pars.fsy"
false
)
-//# 6862 "src/Compiler/pars.fsy"
+//# 7061 "src/Compiler/pars.fsy"
: 'gentype_ends_coming_soon_or_recover));
-//# 19280 "pars.fs"
+//# 19688 "pars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 6863 "src/Compiler/pars.fsy"
+//# 7062 "src/Compiler/pars.fsy"
_1
)
-//# 6863 "src/Compiler/pars.fsy"
+//# 7062 "src/Compiler/pars.fsy"
: 'gentype_ends_coming_soon_or_recover));
|]
-//# 19292 "pars.fs"
+//# 19700 "pars.fs"
let tables : Internal.Utilities.Text.Parsing.Tables<_> =
{ reductions = _fsyacc_reductions.Value;
endOfInputTag = _fsyacc_endOfInputTag;
@@ -19308,7 +19716,7 @@ let tables : Internal.Utilities.Text.Parsing.Tables<_> =
match parse_error_rich with
| Some f -> f ctxt
| None -> parse_error ctxt.Message);
- numTerminals = 206;
+ numTerminals = 207;
productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable }
let engine lexer lexbuf startState = tables.Interpret(lexer, lexbuf, startState)
let signatureFile lexer lexbuf : ParsedSigFile =
diff --git a/src/fcs-fable/codegen/pars.fsi b/src/fcs-fable/codegen/pars.fsi
index a3934b99e4..f2fd3e5356 100644
--- a/src/fcs-fable/codegen/pars.fsi
+++ b/src/fcs-fable/codegen/pars.fsi
@@ -45,6 +45,7 @@ type token =
| TYPE_IS_HERE
| MODULE_COMING_SOON
| MODULE_IS_HERE
+ | BAR_JUST_BEFORE_NULL
| EXTERN
| VOID
| PUBLIC
@@ -249,6 +250,7 @@ type tokenId =
| TOKEN_TYPE_IS_HERE
| TOKEN_MODULE_COMING_SOON
| TOKEN_MODULE_IS_HERE
+ | TOKEN_BAR_JUST_BEFORE_NULL
| TOKEN_EXTERN
| TOKEN_VOID
| TOKEN_PUBLIC
@@ -529,6 +531,7 @@ type nonTerminalId =
| NONTERM_explicitValTyparDeclsCore
| NONTERM_explicitValTyparDecls
| NONTERM_opt_explicitValTyparDecls
+ | NONTERM_hashConstraint
| NONTERM_opt_typeConstraints
| NONTERM_typeConstraints
| NONTERM_intersectionConstraints
@@ -579,10 +582,9 @@ type nonTerminalId =
| NONTERM_atomicRationalConstant
| NONTERM_constant
| NONTERM_bindingPattern
- | NONTERM_simplePattern
- | NONTERM_simplePatternCommaList
| NONTERM_opt_simplePatterns
| NONTERM_simplePatterns
+ | NONTERM_barCanBeRightBeforeNull
| NONTERM_headBindingPattern
| NONTERM_tuplePatternElements
| NONTERM_conjPatternElements
@@ -680,7 +682,9 @@ type nonTerminalId =
| NONTERM_intersectionType
| NONTERM_appTypeCon
| NONTERM_appTypeConPower
- | NONTERM_appType
+ | NONTERM_appTypeCanBeNullable
+ | NONTERM_appTypeNullableInParens
+ | NONTERM_appTypeWithoutNull
| NONTERM_arrayTypeSuffix
| NONTERM_appTypePrefixArguments
| NONTERM_typeArgListElements
@@ -717,11 +721,9 @@ type nonTerminalId =
| NONTERM_opt_declEnd
| NONTERM_opt_ODECLEND
| NONTERM_deprecated_opt_equals
- | NONTERM_opt_equals
| NONTERM_opt_OBLOCKSEP
| NONTERM_opt_seps
| NONTERM_opt_rec
- | NONTERM_opt_bar
| NONTERM_opt_inline
| NONTERM_opt_mutable
| NONTERM_doToken
diff --git a/src/fcs-fable/codegen/pppars.fs b/src/fcs-fable/codegen/pppars.fs
index 3abdaac384..440d819eb3 100644
--- a/src/fcs-fable/codegen/pppars.fs
+++ b/src/fcs-fable/codegen/pppars.fs
@@ -2,12 +2,15 @@
module internal FSharp.Compiler.PPParser
#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type
open FSharp.Compiler.ParseHelpers
+open FSharp.Compiler.LexerStore
open Internal.Utilities.Text.Lexing
open Internal.Utilities.Text.Parsing.ParseHelpers
//# 3 "src/Compiler/pppars.fsy"
open FSharp.Compiler.DiagnosticsLogger
+#nowarn "3261" // the generated code would need to properly annotate nulls, e.g. changing System.Object to `obj|null`
+
let dummy = IfdefId("DUMMY")
let doNothing _ dflt=
@@ -19,7 +22,7 @@ let fail (ps : Internal.Utilities.Text.Parsing.IParseState) i e =
errorR(Error(e,m))
dummy
-//# 22 "pppars.fs"
+//# 25 "pppars.fs"
// This type is the type of tokens accepted by the parser
type token =
| OP_NOT
@@ -138,7 +141,7 @@ let _fsyacc_reductionSymbolCounts = [|1us;1us;1us;3us;1us;3us;1us;2us;3us;3us;2u
let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;3us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;|]
let _fsyacc_immediateActions = [|65535us;49152us;16385us;16386us;65535us;65535us;65535us;16387us;16388us;65535us;65535us;16389us;16390us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16394us;65535us;16395us;16396us;16397us;65535us;16399us;65535us;16400us;16401us;16402us;|]
let _fsyacc_reductions = lazy [|
-//# 141 "pppars.fs"
+//# 144 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> LexerIfdefExpression in
Microsoft.FSharp.Core.Operators.box
@@ -147,207 +150,207 @@ let _fsyacc_reductions = lazy [|
raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
)
: 'gentype__startstart));
-//# 150 "pppars.fs"
+//# 153 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_Full in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 36 "src/Compiler/pppars.fsy"
+//# 38 "src/Compiler/pppars.fsy"
_1
)
-//# 36 "src/Compiler/pppars.fsy"
+//# 38 "src/Compiler/pppars.fsy"
: LexerIfdefExpression ));
-//# 161 "pppars.fs"
+//# 164 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 39 "src/Compiler/pppars.fsy"
+//# 41 "src/Compiler/pppars.fsy"
doNothing parseState ()
)
-//# 39 "src/Compiler/pppars.fsy"
+//# 41 "src/Compiler/pppars.fsy"
: 'gentype_Recover));
-//# 171 "pppars.fs"
+//# 174 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Expr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 42 "src/Compiler/pppars.fsy"
+//# 44 "src/Compiler/pppars.fsy"
_2
)
-//# 42 "src/Compiler/pppars.fsy"
+//# 44 "src/Compiler/pppars.fsy"
: 'gentype_Full));
-//# 182 "pppars.fs"
+//# 185 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 43 "src/Compiler/pppars.fsy"
+//# 45 "src/Compiler/pppars.fsy"
fail parseState 1 (FSComp.SR.ppparsMissingToken("#if/#elif"))
)
-//# 43 "src/Compiler/pppars.fsy"
+//# 45 "src/Compiler/pppars.fsy"
: 'gentype_Full));
-//# 193 "pppars.fs"
+//# 196 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Expr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 46 "src/Compiler/pppars.fsy"
+//# 48 "src/Compiler/pppars.fsy"
_2
)
-//# 46 "src/Compiler/pppars.fsy"
+//# 48 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 204 "pppars.fs"
+//# 207 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> string in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 47 "src/Compiler/pppars.fsy"
+//# 49 "src/Compiler/pppars.fsy"
IfdefId(_1)
)
-//# 47 "src/Compiler/pppars.fsy"
+//# 49 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 215 "pppars.fs"
+//# 218 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Expr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 48 "src/Compiler/pppars.fsy"
+//# 50 "src/Compiler/pppars.fsy"
IfdefNot(_2)
)
-//# 48 "src/Compiler/pppars.fsy"
+//# 50 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 226 "pppars.fs"
+//# 229 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_Expr in
let _3 = parseState.GetInput(3) :?> 'gentype_Expr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 49 "src/Compiler/pppars.fsy"
+//# 51 "src/Compiler/pppars.fsy"
IfdefAnd(_1,_3)
)
-//# 49 "src/Compiler/pppars.fsy"
+//# 51 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 238 "pppars.fs"
+//# 241 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_Expr in
let _3 = parseState.GetInput(3) :?> 'gentype_Expr in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 50 "src/Compiler/pppars.fsy"
+//# 52 "src/Compiler/pppars.fsy"
IfdefOr(_1,_3)
)
-//# 50 "src/Compiler/pppars.fsy"
+//# 52 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 250 "pppars.fs"
+//# 253 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 52 "src/Compiler/pppars.fsy"
+//# 54 "src/Compiler/pppars.fsy"
fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("&&"))
)
-//# 52 "src/Compiler/pppars.fsy"
+//# 54 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 261 "pppars.fs"
+//# 264 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 53 "src/Compiler/pppars.fsy"
+//# 55 "src/Compiler/pppars.fsy"
fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("||"))
)
-//# 53 "src/Compiler/pppars.fsy"
+//# 55 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 272 "pppars.fs"
+//# 275 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 54 "src/Compiler/pppars.fsy"
+//# 56 "src/Compiler/pppars.fsy"
fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("!"))
)
-//# 54 "src/Compiler/pppars.fsy"
+//# 56 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 283 "pppars.fs"
+//# 286 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 55 "src/Compiler/pppars.fsy"
+//# 57 "src/Compiler/pppars.fsy"
doNothing parseState dummy
)
-//# 55 "src/Compiler/pppars.fsy"
+//# 57 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 293 "pppars.fs"
+//# 296 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Expr in
let _3 = parseState.GetInput(3) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 56 "src/Compiler/pppars.fsy"
+//# 58 "src/Compiler/pppars.fsy"
fail parseState 3 (FSComp.SR.ppparsMissingToken(")"))
)
-//# 56 "src/Compiler/pppars.fsy"
+//# 58 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 305 "pppars.fs"
+//# 308 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 57 "src/Compiler/pppars.fsy"
+//# 59 "src/Compiler/pppars.fsy"
fail parseState 2 (FSComp.SR.ppparsIncompleteExpression())
)
-//# 57 "src/Compiler/pppars.fsy"
+//# 59 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 316 "pppars.fs"
+//# 319 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _2 = parseState.GetInput(2) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 58 "src/Compiler/pppars.fsy"
+//# 60 "src/Compiler/pppars.fsy"
fail parseState 1 (FSComp.SR.ppparsUnexpectedToken(")"))
)
-//# 58 "src/Compiler/pppars.fsy"
+//# 60 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 327 "pppars.fs"
+//# 330 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
let _1 = parseState.GetInput(1) :?> 'gentype_Expr in
let _2 = parseState.GetInput(2) :?> 'gentype_Recover in
Microsoft.FSharp.Core.Operators.box
(
(
-//# 59 "src/Compiler/pppars.fsy"
+//# 61 "src/Compiler/pppars.fsy"
fail parseState 2 (FSComp.SR.ppparsIncompleteExpression())
)
-//# 59 "src/Compiler/pppars.fsy"
+//# 61 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
-//# 339 "pppars.fs"
+//# 342 "pppars.fs"
(fun (parseState : Internal.Utilities.Text.Parsing.IParseState) ->
Microsoft.FSharp.Core.Operators.box
(
(
-//# 60 "src/Compiler/pppars.fsy"
+//# 62 "src/Compiler/pppars.fsy"
fail parseState 1 (FSComp.SR.ppparsIncompleteExpression())
)
-//# 60 "src/Compiler/pppars.fsy"
+//# 62 "src/Compiler/pppars.fsy"
: 'gentype_Expr));
|]
-//# 350 "pppars.fs"
+//# 353 "pppars.fs"
let tables : Internal.Utilities.Text.Parsing.Tables<_> =
{ reductions = _fsyacc_reductions.Value;
endOfInputTag = _fsyacc_endOfInputTag;
diff --git a/src/fcs-fable/codegen/pppars.fsi b/src/fcs-fable/codegen/pppars.fsi
index 04ae14e888..7aab07d1c5 100644
--- a/src/fcs-fable/codegen/pppars.fsi
+++ b/src/fcs-fable/codegen/pppars.fsi
@@ -1,6 +1,7 @@
// Signature file for parser generated by fsyacc
module internal FSharp.Compiler.PPParser
open FSharp.Compiler.ParseHelpers
+open FSharp.Compiler.LexerStore
type token =
| OP_NOT
| OP_AND
diff --git a/src/fcs-fable/fcs-fable.fsproj b/src/fcs-fable/fcs-fable.fsproj
index ec9d66a412..94b28ae312 100644
--- a/src/fcs-fable/fcs-fable.fsproj
+++ b/src/fcs-fable/fcs-fable.fsproj
@@ -6,6 +6,7 @@
netstandard2.0
+ $(DefineConstants);NO_CHECKNULLS
$(DefineConstants);FABLE_COMPILER
$(DefineConstants);COMPILER
$(DefineConstants);FX_NO_WEAKTABLE
@@ -27,8 +28,11 @@
+
+
+
@@ -41,8 +45,6 @@
-
-
@@ -61,6 +63,8 @@
+
+
@@ -81,6 +85,8 @@
+
+
@@ -93,6 +99,8 @@
+
+
@@ -149,6 +157,8 @@
+
+
@@ -175,6 +185,7 @@
+
@@ -182,6 +193,7 @@
+
@@ -226,12 +238,15 @@
-
-
+
+
+
-
-
+
+
+
+
@@ -342,6 +357,10 @@
+
+
+
+
@@ -360,6 +379,11 @@
+
+
+
+
+
@@ -371,6 +395,8 @@
+
+
@@ -381,7 +407,7 @@
-
+
diff --git a/src/fcs-fable/service_slim.fs b/src/fcs-fable/service_slim.fs
index 33643df0f4..57e106e09f 100644
--- a/src/fcs-fable/service_slim.fs
+++ b/src/fcs-fable/service_slim.fs
@@ -154,7 +154,7 @@ module internal ParseAndCheck =
topAttrsOpt: TopAttribs option, tcImplFilesOpt: CheckedImplFile list option, compilerState) =
let assemblyRef = mkSimpleAssemblyRef "stdin"
let access = tcState.TcEnvFromImpls.AccessRights
- let symbolUses = Choice2Of2 TcSymbolUses.Empty
+ let symbolUses = Choice2Of2 (async { return seq { } })
let dependencyFiles = parseResults |> Seq.map (fun x -> x.DependencyFiles) |> Array.concat
let getAssemblyData () = None
let details = (compilerState.tcGlobals, compilerState.tcImports, tcState.Ccu, tcState.CcuSig, symbolUses, topAttrsOpt,
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/il.fs b/src/fcs-fable/src/Compiler/AbstractIL/il.fs
index 9528f2c01c..ad63a53a57 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/il.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/il.fs
@@ -56,10 +56,10 @@ type PrimaryAssembly =
static member IsPossiblePrimaryAssembly(fileName: string) =
let name = System.IO.Path.GetFileNameWithoutExtension(fileName)
- String.Compare(name, "mscorlib", true) <> 0
- || String.Compare(name, "System.Runtime", true) <> 0
- || String.Compare(name, "netstandard", true) <> 0
- || String.Compare(name, "System.Private.CoreLib", true) <> 0
+ String.Equals(name, "System.Runtime", StringComparison.OrdinalIgnoreCase)
+ || String.Equals(name, "mscorlib", StringComparison.OrdinalIgnoreCase)
+ || String.Equals(name, "netstandard", StringComparison.OrdinalIgnoreCase)
+ || String.Equals(name, "System.Private.CoreLib", StringComparison.OrdinalIgnoreCase)
// --------------------------------------------------------------------
// Utilities: type names
@@ -92,22 +92,24 @@ let rec splitNamespaceAux (nm: string) =
| -1 -> [ nm ]
| idx ->
let s1, s2 = splitNameAt nm idx
- let s1 = memoizeNamespacePartTable.GetOrAdd(s1, id)
+ let s1 = memoizeNamespacePartTable.GetOrAdd(s1, s1)
s1 :: splitNamespaceAux s2
+// Cache this as a delegate.
+let splitNamespaceAuxDelegate = Func splitNamespaceAux
+
let splitNamespace nm =
- memoizeNamespaceTable.GetOrAdd(nm, splitNamespaceAux)
+ memoizeNamespaceTable.GetOrAdd(nm, splitNamespaceAuxDelegate)
// ++GLOBAL MUTABLE STATE (concurrency-safe)
let memoizeNamespaceArrayTable = ConcurrentDictionary()
+// Cache this as a delegate.
+let splitNamespaceToArrayDelegate =
+ Func(splitNamespace >> Array.ofList)
+
let splitNamespaceToArray nm =
- memoizeNamespaceArrayTable.GetOrAdd(
- nm,
- fun nm ->
- let x = Array.ofList (splitNamespace nm)
- x
- )
+ memoizeNamespaceArrayTable.GetOrAdd(nm, splitNamespaceToArrayDelegate)
let splitILTypeName (nm: string) =
match nm.LastIndexOf '.' with
@@ -158,15 +160,23 @@ let splitTypeNameRightAux (nm: string) =
let s1, s2 = splitNameAt nm idx
Some s1, s2
+// Cache this as a delegate.
+let splitTypeNameRightAuxDelegate =
+ Func splitTypeNameRightAux
+
let splitTypeNameRight nm =
- memoizeNamespaceRightTable.GetOrAdd(nm, splitTypeNameRightAux)
+ memoizeNamespaceRightTable.GetOrAdd(nm, splitTypeNameRightAuxDelegate)
// --------------------------------------------------------------------
// Ordered lists with a lookup table
// --------------------------------------------------------------------
/// This is used to store event, property and field maps.
-type LazyOrderedMultiMap<'Key, 'Data when 'Key: equality>(keyf: 'Data -> 'Key, lazyItems: InterruptibleLazy<'Data list>) =
+type LazyOrderedMultiMap<'Key, 'Data when 'Key: equality
+#if !NO_CHECKNULLS
+ and 'Key:not null
+#endif
+ >(keyf: 'Data -> 'Key, lazyItems: InterruptibleLazy<'Data list>) =
let quickMap =
lazyItems
@@ -473,11 +483,11 @@ type ILAssemblyRef(data) =
override x.GetHashCode() = uniqueStamp
override x.Equals yobj =
- ((yobj :?> ILAssemblyRef).UniqueStamp = uniqueStamp)
+ ((!!yobj :?> ILAssemblyRef).UniqueStamp = uniqueStamp)
interface IComparable with
override x.CompareTo yobj =
- compare (yobj :?> ILAssemblyRef).UniqueStamp uniqueStamp
+ compare (!!yobj :?> ILAssemblyRef).UniqueStamp uniqueStamp
static member Create(name, hash, publicKey, retargetable, version, locale) =
ILAssemblyRef
@@ -512,7 +522,8 @@ type ILAssemblyRef(data) =
let retargetable = aname.Flags = AssemblyNameFlags.Retargetable
- ILAssemblyRef.Create(aname.Name, None, publicKey, retargetable, version, locale)
+ let name = match aname.Name with | null -> aname.FullName | name -> name
+ ILAssemblyRef.Create(name, None, publicKey, retargetable, version, locale)
#endif //!FABLE_COMPILER
member aref.QualifiedName =
@@ -743,7 +754,7 @@ type ILTypeRef =
override x.GetHashCode() = x.hashCode
override x.Equals yobj =
- let y = (yobj :?> ILTypeRef)
+ let y = (!!yobj :?> ILTypeRef)
(x.ApproxId = y.ApproxId)
&& (x.Scope = y.Scope)
@@ -786,7 +797,7 @@ type ILTypeRef =
interface IComparable with
override x.CompareTo yobj =
- let y = (yobj :?> ILTypeRef)
+ let y = (!!yobj :?> ILTypeRef)
let c = compare x.ApproxId y.ApproxId
if c <> 0 then
@@ -809,7 +820,7 @@ type ILTypeRef =
member tref.AddQualifiedNameExtension basic =
let sco = tref.Scope.QualifiedName
- if sco = "" then
+ if String.IsNullOrEmpty(sco) then
basic
else
String.concat ", " [ basic; sco ]
@@ -821,7 +832,7 @@ type ILTypeRef =
member x.DebugText = x.ToString()
/// For debugging
- override x.ToString() = x.FullName
+ override x.ToString() : string = x.FullName
and [] ILTypeSpec =
{
@@ -873,7 +884,7 @@ and ["
+ x.TypeRef.FullName + if isNil x.GenericArgs then "" else "<...>"
and [] ILType =
| Void
@@ -1015,8 +1026,9 @@ type ILMethodRef =
[]
member x.DebugText = x.ToString()
- override x.ToString() =
- x.DeclaringTypeRef.ToString() + "::" + x.Name + "(...)"
+ member x.FullName = x.DeclaringTypeRef.FullName + "::" + x.Name + "(...)"
+
+ override x.ToString() = x.FullName
[]
type ILFieldRef =
@@ -1031,7 +1043,7 @@ type ILFieldRef =
member x.DebugText = x.ToString()
override x.ToString() =
- x.DeclaringTypeRef.ToString() + "::" + x.Name
+ x.DeclaringTypeRef.FullName + "::" + x.Name
[]
type ILMethodSpec =
@@ -1070,7 +1082,7 @@ type ILMethodSpec =
[]
member x.DebugText = x.ToString()
- override x.ToString() = x.MethodRef.ToString() + "(...)"
+ override x.ToString() = x.MethodRef.FullName + "(...)"
[]
type ILFieldSpec =
@@ -1211,7 +1223,7 @@ type ILAttribute =
[]
member x.DebugText = x.ToString()
- override x.ToString() = x.Method.ToString() + "(...)"
+ override x.ToString() = x.Method.MethodRef.FullName
[]
type ILAttributes(array: ILAttribute[]) =
@@ -1256,6 +1268,9 @@ let storeILCustomAttrs (attrs: ILAttributes) =
else
ILAttributesStored.Given attrs
+let mkILCustomAttrsComputed f =
+ ILAttributesStored.Reader(fun _ -> f ())
+
let mkILCustomAttrsReader f = ILAttributesStored.Reader f
type ILCodeLabel = int
@@ -1566,7 +1581,7 @@ type ILFieldInit =
| ILFieldInit.UInt64 u64 -> box u64
| ILFieldInit.Single ieee32 -> box ieee32
| ILFieldInit.Double ieee64 -> box ieee64
- | ILFieldInit.Null -> (null :> Object)
+ | ILFieldInit.Null -> (null :> objnull)
// --------------------------------------------------------------------
// Native Types, for marshalling to the native C interface.
@@ -1851,9 +1866,10 @@ type ILGenericParameterDef =
Name: string
Constraints: ILTypes
Variance: ILGenericVariance
- HasReferenceTypeConstraint: bool
+ HasReferenceTypeConstraint: bool
HasNotNullableValueTypeConstraint: bool
HasDefaultConstructorConstraint: bool
+ HasAllowsRefStruct: bool
CustomAttrsStored: ILAttributesStored
MetadataIndex: int32
}
@@ -1897,6 +1913,23 @@ let inline conditionalAdd condition flagToAdd source =
let NoMetadataIdx = -1
+type InterfaceImpl =
+ { Idx: int; Type: ILType; mutable CustomAttrsStored: ILAttributesStored }
+
+ member x.CustomAttrs =
+ match x.CustomAttrsStored with
+ | ILAttributesStored.Reader f ->
+ let res = ILAttributes(f x.Idx)
+ x.CustomAttrsStored <- ILAttributesStored.Given res
+ res
+ | ILAttributesStored.Given attrs -> attrs
+
+ static member Create(ilType: ILType, customAttrsStored: ILAttributesStored) =
+ { Idx = NoMetadataIdx; Type = ilType; CustomAttrsStored = customAttrsStored }
+
+ static member Create(ilType: ILType) = InterfaceImpl.Create(ilType, emptyILCustomAttrsStored)
+
+
[]
type ILMethodDef
(
@@ -2609,13 +2642,21 @@ let convertInitSemantics (init: ILTypeInit) =
| ILTypeInit.BeforeField -> TypeAttributes.BeforeFieldInit
| ILTypeInit.OnAny -> enum 0
+[]
+type ILTypeDefAdditionalFlags =
+ | None = 0
+ | IsKnownToBeAttribute = 1
+ /// The type can contain extension methods,
+ /// or this information may not be available at the time the ILTypeDef is created
+ | CanContainExtensionMethods = 2
+
[]
type ILTypeDef
(
name: string,
attributes: TypeAttributes,
layout: ILTypeDefLayout,
- implements: ILTypes,
+ implements: InterruptibleLazy,
genericParams: ILGenericParameterDefs,
extends: ILType option,
methods: ILMethodDefs,
@@ -2624,7 +2665,7 @@ type ILTypeDef
methodImpls: ILMethodImplDefs,
events: ILEventDefs,
properties: ILPropertyDefs,
- isKnownToBeAttribute: bool,
+ additionalFlags: ILTypeDefAdditionalFlags,
securityDeclsStored: ILSecurityDeclsStored,
customAttrsStored: ILAttributesStored,
metadataIndex: int32
@@ -2632,6 +2673,8 @@ type ILTypeDef
let mutable customAttrsStored = customAttrsStored
+ let hasFlag flag = additionalFlags &&& flag = flag
+
new(name,
attributes,
layout,
@@ -2644,7 +2687,7 @@ type ILTypeDef
methodImpls,
events,
properties,
- isKnownToBeAttribute,
+ additionalFlags,
securityDecls,
customAttrs) =
ILTypeDef(
@@ -2660,9 +2703,9 @@ type ILTypeDef
methodImpls,
events,
properties,
- isKnownToBeAttribute,
+ additionalFlags,
storeILSecurityDecls securityDecls,
- storeILCustomAttrs customAttrs,
+ customAttrs,
NoMetadataIdx
)
@@ -2692,7 +2735,10 @@ type ILTypeDef
member _.Properties = properties
- member _.IsKnownToBeAttribute = isKnownToBeAttribute
+ member _.IsKnownToBeAttribute = hasFlag ILTypeDefAdditionalFlags.IsKnownToBeAttribute
+
+ member _.CanContainExtensionMethods =
+ hasFlag ILTypeDefAdditionalFlags.CanContainExtensionMethods
member _.CustomAttrsStored = customAttrsStored
@@ -2712,7 +2758,7 @@ type ILTypeDef
?methodImpls,
?events,
?properties,
- ?isKnownToBeAttribute,
+ ?newAdditionalFlags,
?customAttrs,
?securityDecls
) =
@@ -2730,11 +2776,11 @@ type ILTypeDef
methodImpls = defaultArg methodImpls x.MethodImpls,
events = defaultArg events x.Events,
properties = defaultArg properties x.Properties,
- isKnownToBeAttribute = defaultArg isKnownToBeAttribute x.IsKnownToBeAttribute,
- customAttrs = defaultArg customAttrs x.CustomAttrs
+ additionalFlags = defaultArg newAdditionalFlags additionalFlags,
+ customAttrs = defaultArg customAttrs (x.CustomAttrsStored)
)
- member x.CustomAttrs =
+ member x.CustomAttrs: ILAttributes =
match customAttrsStored with
| ILAttributesStored.Reader f ->
let res = ILAttributes(f x.MetadataIndex)
@@ -2875,35 +2921,17 @@ and [] ILPreTypeDef =
/// This is a memory-critical class. Very many of these objects get allocated and held to represent the contents of .NET assemblies.
and [] ILPreTypeDefImpl(nameSpace: string list, name: string, metadataIndex: int32, storage: ILTypeDefStored) =
- let mutable store: ILTypeDef = Unchecked.defaultof<_>
- let mutable storage = storage
+ let stored =
+ lazy
+ match storage with
+ | ILTypeDefStored.Given td -> td
+ | ILTypeDefStored.Computed f -> f ()
+ | ILTypeDefStored.Reader f -> f metadataIndex
interface ILPreTypeDef with
member _.Namespace = nameSpace
member _.Name = name
-
- member x.GetTypeDef() =
- match box store with
- | null ->
- let syncObj = storage
- Monitor.Enter(syncObj)
-
- try
- match box store with
- | null ->
- let value =
- match storage with
- | ILTypeDefStored.Given td -> td
- | ILTypeDefStored.Computed f -> f ()
- | ILTypeDefStored.Reader f -> f metadataIndex
-
- store <- value
- storage <- Unchecked.defaultof<_>
- value
- | _ -> store
- finally
- Monitor.Exit(syncObj)
- | _ -> store
+ member x.GetTypeDef() = stored.Value
and ILTypeDefStored =
| Given of ILTypeDef
@@ -3268,6 +3296,7 @@ let mkILSimpleTypar nm =
HasReferenceTypeConstraint = false
HasNotNullableValueTypeConstraint = false
HasDefaultConstructorConstraint = false
+ HasAllowsRefStruct = false
CustomAttrsStored = storeILCustomAttrs emptyILCustomAttrs
MetadataIndex = NoMetadataIdx
}
@@ -3316,6 +3345,8 @@ let mkILTypeDefs l = mkILTypeDefsFromArray (Array.ofList l)
let mkILTypeDefsComputed f = ILTypeDefs f
let emptyILTypeDefs = mkILTypeDefsFromArray [||]
+let emptyILInterfaceImpls = InterruptibleLazy.FromValue([])
+
// --------------------------------------------------------------------
// Operations on method tables.
// --------------------------------------------------------------------
@@ -3437,6 +3468,11 @@ type ILGlobals(primaryScopeRef: ILScopeRef, equivPrimaryAssemblyRefs: ILAssembly
let mkSysILTypeRef nm = mkILTyRef (primaryScopeRef, nm)
+ let byteIlType = ILType.Value(mkILNonGenericTySpec (mkSysILTypeRef tname_Byte))
+
+ let stringIlType =
+ mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_String))
+
member _.primaryAssemblyScopeRef = primaryScopeRef
member x.primaryAssemblyRef =
@@ -3454,7 +3490,7 @@ type ILGlobals(primaryScopeRef: ILScopeRef, equivPrimaryAssemblyRefs: ILAssembly
member val typ_Object = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Object))
- member val typ_String = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_String))
+ member val typ_String = stringIlType
member val typ_Array = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Array))
@@ -3468,7 +3504,11 @@ type ILGlobals(primaryScopeRef: ILScopeRef, equivPrimaryAssemblyRefs: ILAssembly
member val typ_Int64 = ILType.Value(mkILNonGenericTySpec (mkSysILTypeRef tname_Int64))
- member val typ_Byte = ILType.Value(mkILNonGenericTySpec (mkSysILTypeRef tname_Byte))
+ member val typ_Byte = byteIlType
+
+ member val typ_ByteArray = ILType.Array(ILArrayShape.SingleDimensional, byteIlType)
+
+ member val typ_StringArray = ILType.Array(ILArrayShape.SingleDimensional, stringIlType)
member val typ_UInt16 = ILType.Value(mkILNonGenericTySpec (mkSysILTypeRef tname_UInt16))
@@ -3972,6 +4012,29 @@ let mdef_code2code f (md: ILMethodDef) =
let b = MethodBody.IL(notlazy ilCode)
md.With(body = notlazy b)
+let appendInstrsToCode (instrs: ILInstr list) (c2: ILCode) =
+ let instrs = Array.ofList instrs
+
+ match
+ c2.Instrs
+ |> Array.tryFindIndexBack (fun instr ->
+ match instr with
+ | I_ret -> true
+ | _ -> false)
+ with
+ | Some 0 ->
+ { c2 with
+ Instrs = Array.concat [| instrs; c2.Instrs |]
+ }
+ | Some index ->
+ { c2 with
+ Instrs = Array.concat [| c2.Instrs[.. index - 1]; instrs; c2.Instrs[index..] |]
+ }
+ | None ->
+ { c2 with
+ Instrs = Array.append c2.Instrs instrs
+ }
+
let prependInstrsToCode (instrs: ILInstr list) (c2: ILCode) =
let instrs = Array.ofList instrs
let n = instrs.Length
@@ -4005,6 +4068,9 @@ let prependInstrsToCode (instrs: ILInstr list) (c2: ILCode) =
Instrs = Array.append instrs c2.Instrs
}
+let appendInstrsToMethod newCode md =
+ mdef_code2code (appendInstrsToCode newCode) md
+
let prependInstrsToMethod newCode md =
mdef_code2code (prependInstrsToCode newCode) md
@@ -4188,7 +4254,7 @@ let mkILSimpleStorageCtor (baseTySpec, ty, extraParams, flds, access, tag, impor
let mkILStorageCtor (preblock, ty, flds, access, tag, imports) =
mkILStorageCtorWithParamNames (preblock, ty, [], addParamNames flds, access, tag, imports)
-let mkILGenericClass (nm, access, genparams, extends, impl, methods, fields, nestedTypes, props, events, attrs, init) =
+let mkILGenericClass (nm, access, genparams, extends, impls, methods, fields, nestedTypes, props, events, attrs, init) =
let attributes =
convertTypeAccessFlags access
||| TypeAttributes.AutoLayout
@@ -4202,17 +4268,17 @@ let mkILGenericClass (nm, access, genparams, extends, impl, methods, fields, nes
name = nm,
attributes = attributes,
genericParams = genparams,
- implements = impl,
+ implements = InterruptibleLazy.FromValue(impls),
layout = ILTypeDefLayout.Auto,
extends = Some extends,
methods = methods,
fields = fields,
nestedTypes = nestedTypes,
- customAttrs = attrs,
+ customAttrs = storeILCustomAttrs attrs,
methodImpls = emptyILMethodImpls,
properties = props,
events = events,
- isKnownToBeAttribute = false,
+ additionalFlags = ILTypeDefAdditionalFlags.None,
securityDecls = emptyILSecurityDecls
)
@@ -4226,17 +4292,17 @@ let mkRawDataValueTypeDef (iltyp_ValueType: ILType) (nm, size, pack) =
||| TypeAttributes.ExplicitLayout
||| TypeAttributes.BeforeFieldInit
||| TypeAttributes.AnsiClass),
- implements = [],
+ implements = emptyILInterfaceImpls,
extends = Some iltyp_ValueType,
layout = ILTypeDefLayout.Explicit { Size = Some size; Pack = Some pack },
methods = emptyILMethods,
fields = emptyILFields,
nestedTypes = emptyILTypeDefs,
- customAttrs = emptyILCustomAttrs,
+ customAttrs = emptyILCustomAttrsStored,
methodImpls = emptyILMethodImpls,
properties = emptyILProperties,
events = emptyILEvents,
- isKnownToBeAttribute = false,
+ additionalFlags = ILTypeDefAdditionalFlags.None,
securityDecls = emptyILSecurityDecls
)
@@ -4352,7 +4418,7 @@ let buildILCode (_methName: string) lab2pc instrs tryspecs localspecs : ILCode =
// Detecting Delegates
// --------------------------------------------------------------------
-let mkILDelegateMethods access (ilg: ILGlobals) (iltyp_AsyncCallback, iltyp_IAsyncResult) (parms, rtv: ILReturn) =
+let mkILDelegateMethods access (ilg: ILGlobals) (iltyp_AsyncCallback, iltyp_IAsyncResult) (params_, rtv: ILReturn) =
let retTy = rtv.Type
let one nm args ret =
@@ -4375,10 +4441,10 @@ let mkILDelegateMethods access (ilg: ILGlobals) (iltyp_AsyncCallback, iltyp_IAsy
[
ctor
- one "Invoke" parms retTy
+ one "Invoke" params_ retTy
one
"BeginInvoke"
- (parms
+ (params_
@ [
mkILParamNamed ("callback", iltyp_AsyncCallback)
mkILParamNamed ("objects", ilg.typ_Object)
@@ -5546,7 +5612,7 @@ and refsOfILMethodImpl s m =
and refsOfILTypeDef s (td: ILTypeDef) =
refsOfILTypeDefs s td.NestedTypes
refsOfILGenericParams s td.GenericParams
- refsOfILTypes s td.Implements
+ refsOfILTypes s (td.Implements.Value |> List.map _.Type)
Option.iter (refsOfILType s) td.Extends
refsOfILMethodDefs s td.Methods
refsOfILFieldDefs s (td.Fields.AsList())
@@ -5656,10 +5722,9 @@ let resolveILMethodRefWithRescope r (td: ILTypeDef) (mref: ILMethodRef) =
possibles
|> List.filter (fun md ->
mref.CallingConv = md.CallingConv
- &&
- // REVIEW: this uses equality on ILType. For CMOD_OPTIONAL this is not going to be correct
- (md.Parameters, argTypes)
- ||> List.lengthsEqAndForall2 (fun p1 p2 -> r p1.Type = p2)
+ && (md.Parameters, argTypes)
+ ||> List.lengthsEqAndForall2 (fun p1 p2 -> r p1.Type = p2)
+ && md.GenericParams.Length = mref.GenericArity
&&
// REVIEW: this uses equality on ILType. For CMOD_OPTIONAL this is not going to be correct
r md.Return.Type = retType)
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/il.fsi b/src/fcs-fable/src/Compiler/AbstractIL/il.fsi
index 660b08a4a5..86a05a145e 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/il.fsi
+++ b/src/fcs-fable/src/Compiler/AbstractIL/il.fsi
@@ -4,6 +4,7 @@
module rec FSharp.Compiler.AbstractIL.IL
+open System
open FSharp.Compiler.IO
open System.Collections.Generic
open System.Reflection
@@ -19,7 +20,7 @@ type internal PrimaryAssembly =
member Name: string
/// Checks if an assembly resolution may represent a primary assembly that actually contains the
- /// definition of Sytem.Object. Note that the chosen target primary assembly may not actually be the one
+ /// definition of System.Object. Note that the chosen target primary assembly may not actually be the one
/// that contains the definition of System.Object - it is just the one we are choosing to emit for.
static member IsPossiblePrimaryAssembly: fileName: string -> bool
@@ -238,6 +239,8 @@ type ILTypeRef =
member internal EqualsWithPrimaryScopeRef: ILScopeRef * obj -> bool
+ override ToString: unit -> string
+
interface System.IComparable
/// Type specs and types.
@@ -326,6 +329,15 @@ type ILCallingSignature =
ArgTypes: ILTypes
ReturnType: ILType }
+type InterfaceImpl =
+ { Idx: int
+ Type: ILType
+ mutable CustomAttrsStored: ILAttributesStored }
+
+ member CustomAttrs: ILAttributes
+ static member Create: ilType: ILType * customAttrsStored: ILAttributesStored -> InterfaceImpl
+ static member Create: ilType: ILType -> InterfaceImpl
+
/// Actual generic parameters are always types.
type ILGenericArgs = ILType list
@@ -665,7 +677,7 @@ type ILFieldInit =
| Double of double
| Null
- member AsObject: unit -> obj
+ member AsObject: unit -> objnull
[]
type internal ILNativeVariant =
@@ -870,7 +882,13 @@ type ILAttributes =
/// Represents the efficiency-oriented storage of ILAttributes in another item.
[]
-type ILAttributesStored
+type ILAttributesStored =
+ /// Computed by ilread.fs based on metadata index
+ | Reader of (int32 -> ILAttribute[])
+ /// Already computed
+ | Given of ILAttributes
+
+ member GetCustomAttrs: int32 -> ILAttributes
/// Method parameters and return values.
[]
@@ -1014,6 +1032,9 @@ type ILGenericParameterDef =
/// Indicates the type argument must have a public nullary constructor.
HasDefaultConstructorConstraint: bool
+ /// Indicates the type parameter allows ref struct, i.e. an anti constraint.
+ HasAllowsRefStruct: bool
+
/// Do not use this
CustomAttrsStored: ILAttributesStored
@@ -1071,6 +1092,8 @@ type ILMethodDef =
member IsEntryPoint: bool
member GenericParams: ILGenericParameterDefs
member CustomAttrs: ILAttributes
+ member MetadataIndex: int32
+ member CustomAttrsStored: ILAttributesStored
member ParameterTypes: ILTypes
member IsIL: bool
member Code: ILCode option
@@ -1244,6 +1267,10 @@ type ILFieldDef =
member CustomAttrs: ILAttributes
+ member MetadataIndex: int32
+
+ member CustomAttrsStored: ILAttributesStored
+
member IsStatic: bool
member IsSpecialName: bool
@@ -1327,6 +1354,8 @@ type ILEventDef =
member FireMethod: ILMethodRef option
member OtherMethods: ILMethodRef list
member CustomAttrs: ILAttributes
+ member MetadataIndex: int32
+ member CustomAttrsStored: ILAttributesStored
member IsSpecialName: bool
member IsRTSpecialName: bool
@@ -1389,6 +1418,8 @@ type ILPropertyDef =
member Init: ILFieldInit option
member Args: ILTypes
member CustomAttrs: ILAttributes
+ member MetadataIndex: int32
+ member CustomAttrsStored: ILAttributesStored
member IsSpecialName: bool
member IsRTSpecialName: bool
@@ -1483,6 +1514,12 @@ type ILTypeDefs =
/// Calls to ExistsByName will result in all the ILPreTypeDefs being read.
member internal ExistsByName: string -> bool
+[]
+type ILTypeDefAdditionalFlags =
+ | None = 0
+ | IsKnownToBeAttribute = 1
+ | CanContainExtensionMethods = 2
+
/// Represents IL Type Definitions.
[]
type ILTypeDef =
@@ -1492,7 +1529,7 @@ type ILTypeDef =
name: string *
attributes: TypeAttributes *
layout: ILTypeDefLayout *
- implements: ILTypes *
+ implements: InterruptibleLazy *
genericParams: ILGenericParameterDefs *
extends: ILType option *
methods: ILMethodDefs *
@@ -1501,7 +1538,7 @@ type ILTypeDef =
methodImpls: ILMethodImplDefs *
events: ILEventDefs *
properties: ILPropertyDefs *
- isKnownToBeAttribute: bool *
+ additionalFlags: ILTypeDefAdditionalFlags *
securityDeclsStored: ILSecurityDeclsStored *
customAttrsStored: ILAttributesStored *
metadataIndex: int32 ->
@@ -1512,7 +1549,7 @@ type ILTypeDef =
name: string *
attributes: TypeAttributes *
layout: ILTypeDefLayout *
- implements: ILTypes *
+ implements: InterruptibleLazy *
genericParams: ILGenericParameterDefs *
extends: ILType option *
methods: ILMethodDefs *
@@ -1521,9 +1558,9 @@ type ILTypeDef =
methodImpls: ILMethodImplDefs *
events: ILEventDefs *
properties: ILPropertyDefs *
- isKnownToBeAttribute: bool *
+ additionalFlags: ILTypeDefAdditionalFlags *
securityDecls: ILSecurityDecls *
- customAttrs: ILAttributes ->
+ customAttrs: ILAttributesStored ->
ILTypeDef
member Name: string
@@ -1531,7 +1568,7 @@ type ILTypeDef =
member GenericParams: ILGenericParameterDefs
member Layout: ILTypeDefLayout
member NestedTypes: ILTypeDefs
- member Implements: ILTypes
+ member Implements: InterruptibleLazy
member Extends: ILType option
member Methods: ILMethodDefs
member SecurityDecls: ILSecurityDecls
@@ -1540,6 +1577,8 @@ type ILTypeDef =
member Events: ILEventDefs
member Properties: ILPropertyDefs
member CustomAttrs: ILAttributes
+ member MetadataIndex: int32
+ member CustomAttrsStored: ILAttributesStored
member IsClass: bool
member IsStruct: bool
member IsInterface: bool
@@ -1558,6 +1597,7 @@ type ILTypeDef =
member HasSecurity: bool
member Encoding: ILDefaultPInvokeEncoding
member IsKnownToBeAttribute: bool
+ member CanContainExtensionMethods: bool
member internal WithAccess: ILTypeDefAccess -> ILTypeDef
member internal WithNestedAccess: ILMemberAccess -> ILTypeDef
@@ -1577,7 +1617,7 @@ type ILTypeDef =
?name: string *
?attributes: TypeAttributes *
?layout: ILTypeDefLayout *
- ?implements: ILTypes *
+ ?implements: InterruptibleLazy *
?genericParams: ILGenericParameterDefs *
?extends: ILType option *
?methods: ILMethodDefs *
@@ -1586,8 +1626,8 @@ type ILTypeDef =
?methodImpls: ILMethodImplDefs *
?events: ILEventDefs *
?properties: ILPropertyDefs *
- ?isKnownToBeAttribute: bool *
- ?customAttrs: ILAttributes *
+ ?newAdditionalFlags: ILTypeDefAdditionalFlags *
+ ?customAttrs: ILAttributesStored *
?securityDecls: ILSecurityDecls ->
ILTypeDef
@@ -1888,11 +1928,13 @@ type internal ILGlobals =
member typ_Enum: ILType
member typ_Object: ILType
member typ_String: ILType
+ member typ_StringArray: ILType
member typ_Type: ILType
member typ_Array: ILType
member typ_IntPtr: ILType
member typ_UIntPtr: ILType
member typ_Byte: ILType
+ member typ_ByteArray: ILType
member typ_Int16: ILType
member typ_Int32: ILType
member typ_Int64: ILType
@@ -2130,7 +2172,7 @@ val internal mkILGenericClass:
ILTypeDefAccess *
ILGenericParameterDefs *
ILType *
- ILType list *
+ InterfaceImpl list *
ILMethodDefs *
ILFieldDefs *
ILTypeDefs *
@@ -2168,8 +2210,9 @@ val internal mkRawDataValueTypeDef: ILType -> string * size: int32 * pack: uint1
/// the code, and the first instruction will be the new entry
/// of the method. The instructions should be non-branching.
+val internal appendInstrsToCode: ILInstr list -> ILCode -> ILCode
+val internal appendInstrsToMethod: ILInstr list -> ILMethodDef -> ILMethodDef
val internal prependInstrsToCode: ILInstr list -> ILCode -> ILCode
-
val internal prependInstrsToMethod: ILInstr list -> ILMethodDef -> ILMethodDef
/// Injecting initialization code into a class.
@@ -2213,12 +2256,16 @@ val internal mkCtorMethSpecForDelegate: ILGlobals -> ILType * bool -> ILMethodSp
/// The toplevel "class" for a module or assembly.
val internal mkILTypeForGlobalFunctions: ILScopeRef -> ILType
+val emptyILInterfaceImpls: InterruptibleLazy
+
/// Making tables of custom attributes, etc.
val mkILCustomAttrs: ILAttribute list -> ILAttributes
val mkILCustomAttrsFromArray: ILAttribute[] -> ILAttributes
val storeILCustomAttrs: ILAttributes -> ILAttributesStored
+val mkILCustomAttrsComputed: (unit -> ILAttribute[]) -> ILAttributesStored
val internal mkILCustomAttrsReader: (int32 -> ILAttribute[]) -> ILAttributesStored
val emptyILCustomAttrs: ILAttributes
+val emptyILCustomAttrsStored: ILAttributesStored
val mkILSecurityDecls: ILSecurityDecl list -> ILSecurityDecls
val emptyILSecurityDecls: ILSecurityDecls
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl b/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl
index 74c20658b1..588d28af20 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl
+++ b/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl
@@ -109,7 +109,7 @@ rule token = parse
| "/" { SLASH }
| "<" { LESS }
| ">" { GREATER }
- | "..." { ELIPSES }
+ | "..." { ELLIPSES }
| "::" { DCOLON }
| "+" { PLUS }
| (['0'-'9']) | (['0'-'9']['0'-'9']['0'-'9']+)
@@ -119,10 +119,10 @@ rule token = parse
(* ldc.r8 0. *)
(* float64(-657435.) *)
(* and int32[0...,0...] *)
- (* The problem is telling an integer-followed-by-ellipses from a floating-point-nubmer-followed-by-dots *)
+ (* The problem is telling an integer-followed-by-ellipses from a floating-point-number-followed-by-dots *)
| ((['0'-'9']) | (['0'-'9']['0'-'9']['0'-'9']+)) "..."
- { VAL_INT32_ELIPSES(int32(lexemeTrimBoth lexbuf 0 3)) }
+ { VAL_INT32_ELLIPSES(int32(lexemeTrimBoth lexbuf 0 3)) }
| ['0'-'9' 'A'-'F' 'a'-'f' ] ['0'-'9' 'A'-'F' 'a'-'f' ]
{ let c1 = (lexemeChar lexbuf 0) in
let c2 = (lexemeChar lexbuf 1) in
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs
index b430579107..9f2f3d0582 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs
@@ -368,8 +368,13 @@ let rec tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet enc fs (tdef: ILType
let mdefsR = fMethodDefs (enc, tdef) tdef.Methods
let fdefsR = fdefs_ty2ty fTyInCtxtR tdef.Fields
+ let implements =
+ tdef.Implements.Value
+ |> List.map (fun x -> { x with Type = fTyInCtxtR x.Type })
+ |> InterruptibleLazy.FromValue
+
tdef.With(
- implements = List.map fTyInCtxtR tdef.Implements,
+ implements = implements,
genericParams = gparams_ty2ty fTyInCtxtR tdef.GenericParams,
extends = Option.map fTyInCtxtR tdef.Extends,
methods = mdefsR,
@@ -378,7 +383,7 @@ let rec tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet enc fs (tdef: ILType
methodImpls = mimpls_ty2ty fTyInCtxtR tdef.MethodImpls,
events = edefs_ty2ty fTyInCtxtR tdef.Events,
properties = pdefs_ty2ty fTyInCtxtR tdef.Properties,
- customAttrs = cattrs_ty2ty fTyInCtxtR tdef.CustomAttrs
+ customAttrs = storeILCustomAttrs (cattrs_ty2ty fTyInCtxtR tdef.CustomAttrs)
)
and tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet enc fs tdefs =
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs
index 0d0b6a1c98..62961613b3 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs
@@ -1000,7 +1000,7 @@ type Directory(name, id) =
member val ID = id
member val NumberOfNamedEntries = Unchecked.defaultof with get, set
member val NumberOfIdEntries = Unchecked.defaultof with get, set
- member val Entries = List()
+ member val Entries = List()
type NativeResourceWriter() =
static member private CompareResources (left: Win32Resource) (right: Win32Resource) =
@@ -1149,7 +1149,12 @@ type NativeResourceWriter() =
dataWriter.WriteByte 0uy
false
- | e -> failwithf "Unknown entry %s" (if isNull e then "" else e.GetType().FullName)
+ | e ->
+ failwithf
+ "Unknown entry %s"
+ (match e with
+ | null -> ""
+ | e -> e.GetType().FullName |> string)
if id >= 0 then
writer.WriteInt32 id
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy b/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy
index 67c8e4d1fe..ca06f6570b 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy
@@ -3,6 +3,7 @@
%{
#nowarn "1182" // the generated code often has unused variable "parseState"
+#nowarn "3261" // the generated code would need to properly annotate nulls, e.g. changing System.Object to `obj|null`
open Internal.Utilities.Library
@@ -24,7 +25,7 @@ let resolveCurrentMethodSpecScope obj =
*----------------------------------------------------------------------*/
%token VAL_INT64 /* 342534523534534 0x34FA434644554 */
-%token VAL_INT32_ELIPSES /* 342534523534534... */
+%token VAL_INT32_ELLIPSES /* 342534523534534... */
%token VAL_FLOAT64 /* -334234 24E-34 */
%token INSTR_I
%token INSTR_I32_I32
@@ -51,7 +52,7 @@ let resolveCurrentMethodSpecScope obj =
%token DCOLON
%token DEFAULT
%token DOT
-%token ELIPSES
+%token ELLIPSES
%token EOF
%token EXPLICIT
%token FIELD
@@ -285,18 +286,18 @@ bound:
{ (None, None) }
| int32
{ (None, Some $1) }
- | int32 ELIPSES int32
+ | int32 ELLIPSES int32
{ (Some $1, Some ($3 - $1 + 1)) }
- | int32 ELIPSES
+ | int32 ELLIPSES
{ (Some $1, None) }
/* We need to be able to parse all of */
/* ldc.r8 0. */
/* float64(-657435.) */
/* and int32[0...,0...] */
-/* The problem is telling an integer-followed-by-ellipses from a floating-point-nubmer-followed-by-dots */
- | VAL_INT32_ELIPSES int32
+/* The problem is telling an integer-followed-by-ellipses from a floating-point-number-followed-by-dots */
+ | VAL_INT32_ELLIPSES int32
{ (Some $1, Some ($2 - $1 + 1)) }
- | VAL_INT32_ELIPSES
+ | VAL_INT32_ELLIPSES
{ (Some $1, None) }
id:
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs
index 9d278dbe31..6ed8aec928 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs
@@ -752,8 +752,9 @@ let goutput_superclass env os =
output_string os "extends "
(goutput_typ_with_shortened_class_syntax env) os typ
-let goutput_implements env os (imp: ILTypes) =
+let goutput_implements env os (imp: InterfaceImpl list) =
if not (List.isEmpty imp) then
+ let imp = imp |> Seq.map _.Type
output_string os "implements "
output_seq ", " (goutput_typ_with_shortened_class_syntax env) os imp
@@ -836,7 +837,7 @@ let rec goutput_tdef enc env contents os (cd: ILTypeDef) =
output_string os "\n\t"
goutput_superclass env os cd.Extends
output_string os "\n\t"
- goutput_implements env os cd.Implements
+ goutput_implements env os cd.Implements.Value
output_string os "\n{\n "
if contents then
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs
index 854f6e0be9..12c48c2b38 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs
@@ -212,7 +212,7 @@ type ByteFile(fileName: string, bytes: byte[]) =
type PEFile(fileName: string, peReader: PEReader) as this =
// We store a weak byte memory reference so we do not constantly create a lot of byte memory objects.
- // We could just have a single ByteMemory stored in the PEFile, but we need to dispose of the stream via the finalizer; we cannot have a cicular reference.
+ // We could just have a single ByteMemory stored in the PEFile, but we need to dispose of the stream via the finalizer; we cannot have a circular reference.
let mutable weakMemory = WeakReference(Unchecked.defaultof<_>)
member _.FileName = fileName
@@ -224,7 +224,7 @@ type PEFile(fileName: string, peReader: PEReader) as this =
match weakMemory.TryGetTarget() with
| true, m -> m.AsReadOnly()
| _ ->
- let block = peReader.GetEntireImage() // it's ok to call this everytime we do GetView as it is cached in the PEReader.
+ let block = peReader.GetEntireImage() // it's ok to call this every time we do GetView as it is cached in the PEReader.
let m =
ByteMemory.FromUnsafePointer(block.Pointer |> NativePtr.toNativeInt, block.Length, this)
@@ -877,10 +877,10 @@ let hsCompare (TaggedIndex(t1: HasSemanticsTag, idx1: int)) (TaggedIndex(t2: Has
elif idx1 > idx2 then 1
else compare t1.Tag t2.Tag
-let hcaCompare (TaggedIndex(t1: HasCustomAttributeTag, idx1: int)) (TaggedIndex(t2: HasCustomAttributeTag, idx2)) =
- if idx1 < idx2 then -1
- elif idx1 > idx2 then 1
- else compare t1.Tag t2.Tag
+let inline hcaCompare (t1: TaggedIndex) (t2: TaggedIndex) =
+ if t1.index < t2.index then -1
+ elif t1.index > t2.index then 1
+ else compare t1.tag t2.tag
let mfCompare (TaggedIndex(t1: MemberForwardedTag, idx1: int)) (TaggedIndex(t2: MemberForwardedTag, idx2)) =
if idx1 < idx2 then -1
@@ -902,7 +902,7 @@ let tomdCompare (TaggedIndex(t1: TypeOrMethodDefTag, idx1)) (TaggedIndex(t2: Typ
elif idx1 > idx2 then 1
else compare t1.Tag t2.Tag
-let simpleIndexCompare (idx1: int) (idx2: int) = compare idx1 idx2
+let inline simpleIndexCompare (idx1: int) (idx2: int) = compare idx1 idx2
//---------------------------------------------------------------------
// The various keys for the various caches.
@@ -945,58 +945,32 @@ type GenericParamsIdx = GenericParamsIdx of numTypars: int * TypeOrMethodDefTag
// Polymorphic caches for row and heap readers
//---------------------------------------------------------------------
-let mkCacheInt32 lowMem _inbase _nm _sz =
+let mkCacheGeneric lowMem _inbase _nm (sz: int) =
if lowMem then
(fun f x -> f x)
else
let mutable cache = null
- let mutable count = 0
#if STATISTICS
- addReport (fun oc ->
- if count <> 0 then
- oc.WriteLine((_inbase + string count + " " + _nm + " cache hits"): string))
-#endif
- fun f (idx: int32) ->
- let cache =
- match cache with
- | Null ->
- let v = ConcurrentDictionary(Environment.ProcessorCount, 11)
- cache <- v
- v
- | NonNull v -> v
+ let mutable _count = 0
- match cache.TryGetValue idx with
- | true, res ->
- count <- count + 1
- res
- | _ ->
- let res = f idx
- cache[idx] <- res
- res
-
-let mkCacheGeneric lowMem _inbase _nm _sz =
- if lowMem then
- (fun f x -> f x)
- else
- let mutable cache = null
- let mutable count = 0
-#if STATISTICS
addReport (fun oc ->
- if !count <> 0 then
- oc.WriteLine((_inbase + string !count + " " + _nm + " cache hits"): string))
+ if !_count <> 0 then
+ oc.WriteLine((_inbase + string !_count + " " + _nm + " cache hits"): string))
#endif
fun f (idx: 'T) ->
let cache =
match cache with
- | Null ->
- let v = ConcurrentDictionary<_, _>(Environment.ProcessorCount, 11 (* sz: int *) )
+ | null ->
+ let v = ConcurrentDictionary<_, _>(Environment.ProcessorCount, sz)
cache <- v
v
- | NonNull v -> v
+ | v -> v
match cache.TryGetValue idx with
| true, v ->
- count <- count + 1
+#if STATISTICS
+ _count <- _count + 1
+#endif
v
| _ ->
let res = f idx
@@ -1199,6 +1173,7 @@ type ILMetadataReader =
customAttrsReader_Module: ILAttributesStored
customAttrsReader_Assembly: ILAttributesStored
customAttrsReader_TypeDef: ILAttributesStored
+ customAttrsReader_InterfaceImpl: ILAttributesStored
customAttrsReader_GenericParam: ILAttributesStored
customAttrsReader_FieldDef: ILAttributesStored
customAttrsReader_MethodDef: ILAttributesStored
@@ -1225,8 +1200,8 @@ type CustomAttributeRow =
val mutable typeIndex: TaggedIndex
val mutable valueIndex: int
-let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowReader) =
- let mutable row = ref Unchecked.defaultof
+let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowReader<_, _, _>) =
+ let mutable row = ref Unchecked.defaultof<_>
let mutable startRid = -1
let mutable endRid = -1
@@ -1316,7 +1291,7 @@ let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowRead
startRid, endRid
-let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader) =
+let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader<_, _, _>) =
let startRid, endRid = seekReadIndexedRowsRange numRows binaryChop reader
if startRid <= 0 || endRid < startRid then
@@ -1324,7 +1299,7 @@ let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedR
else
Array.init (endRid - startRid + 1) (fun i ->
- let mutable row = ref Unchecked.defaultof
+ let mutable row = ref Unchecked.defaultof<_>
reader.GetRow(startRid + i, row)
reader.ConvertRow(row))
@@ -1472,11 +1447,10 @@ let seekReadParamRow (ctxt: ILMetadataReader) mdv idx =
(flags, seq, nameIdx)
/// Read Table InterfaceImpl.
-let seekReadInterfaceImplRow (ctxt: ILMetadataReader) mdv idx =
+let private seekReadInterfaceIdx (ctxt: ILMetadataReader) mdv idx =
let mutable addr = rowAddr ctxt TableNames.InterfaceImpl idx
- let tidx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
- let intfIdx = seekReadTypeDefOrRefOrSpecIdx ctxt mdv addr
- (tidx, intfIdx)
+ let _tidx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
+ seekReadTypeDefOrRefOrSpecIdx ctxt mdv addr
/// Read Table MemberRef.
let seekReadMemberRefRow (ctxt: ILMetadataReader) mdv idx =
@@ -1609,10 +1583,10 @@ let seekReadTypeSpecRow (ctxt: ILMetadataReader) mdv idx =
let seekReadImplMapRow (ctxt: ILMetadataReader) mdv idx =
let mutable addr = rowAddr ctxt TableNames.ImplMap idx
let flags = seekReadUInt16AsInt32Adv mdv addr
- let forwrdedIdx = seekReadMemberForwardedIdx ctxt mdv addr
+ let forwardedIdx = seekReadMemberForwardedIdx ctxt mdv addr
let nameIdx = seekReadStringIdx ctxt mdv addr
let scopeIdx = seekReadUntaggedIdx TableNames.ModuleRef ctxt mdv addr
- (flags, forwrdedIdx, nameIdx, scopeIdx)
+ (flags, forwardedIdx, nameIdx, scopeIdx)
/// Read Table FieldRVA.
let seekReadFieldRVARow (ctxt: ILMetadataReader) mdv idx =
@@ -1697,11 +1671,11 @@ let seekReadGenericParamRow (ctxt: ILMetadataReader) mdv idx =
(idx, seq, flags, ownerIdx, nameIdx)
// Read Table GenericParamConstraint.
-let seekReadGenericParamConstraintRow (ctxt: ILMetadataReader) mdv idx =
+let seekReadGenericParamConstraintIdx (ctxt: ILMetadataReader) mdv idx =
let mutable addr = rowAddr ctxt TableNames.GenericParamConstraint idx
- let pidx = seekReadUntaggedIdx TableNames.GenericParam ctxt mdv addr
+ let _pidx = seekReadUntaggedIdx TableNames.GenericParam ctxt mdv addr
let constraintIdx = seekReadTypeDefOrRefOrSpecIdx ctxt mdv addr
- (pidx, constraintIdx)
+ constraintIdx
/// Read Table ILMethodSpec.
let seekReadMethodSpecRow (ctxt: ILMetadataReader) mdv idx =
@@ -1724,7 +1698,7 @@ let readStringHeapUncached ctxtH idx =
let readStringHeap (ctxt: ILMetadataReader) idx = ctxt.readStringHeap idx
-let readStringHeapOption (ctxt: ILMetadataReader) idx =
+let inline readStringHeapOption (ctxt: ILMetadataReader) idx =
if idx = 0 then None else Some(readStringHeap ctxt idx)
let readBlobHeapUncached ctxtH idx =
@@ -2163,14 +2137,81 @@ and typeDefReader ctxtH : ILTypeDefStored =
let layout = typeLayoutOfFlags ctxt mdv flags idx
let hasLayout =
- (match layout with
- | ILTypeDefLayout.Explicit _ -> true
- | _ -> false)
+ match layout with
+ | ILTypeDefLayout.Explicit _ -> true
+ | _ -> false
+
+ let containsExtensionMethods =
+ let mutable containsExtensionMethods = false
+ let searchedKey = TaggedIndex(hca_TypeDef, idx)
+
+ let attributesSearcher =
+ { new ISeekReadIndexedRowReader with
+ member _.GetRow(i, rowIndex) = rowIndex.Value <- i
+ member _.GetKey(rowIndex) = rowIndex.Value
+
+ member _.CompareKey(rowIndex) =
+ let mutable addr = rowAddr ctxt TableNames.CustomAttribute rowIndex
+ // read parentIndex
+ let key = seekReadHasCustomAttributeIdx ctxt mdv addr
+ hcaCompare searchedKey key
+
+ member _.ConvertRow(i) = i.Value
+ }
+
+ let attrsStartIdx, attrsEndIdx =
+ seekReadIndexedRowsRange
+ (ctxt.getNumRows TableNames.CustomAttribute)
+ (isSorted ctxt TableNames.CustomAttribute)
+ attributesSearcher
+
+ if attrsStartIdx <= 0 || attrsEndIdx < attrsStartIdx then
+ false
+ else
+ let mutable attrIdx = attrsStartIdx
+
+ while attrIdx <= attrsEndIdx && not containsExtensionMethods do
+ let mutable addr = rowAddr ctxt TableNames.CustomAttribute attrIdx
+ // skip parentIndex to read typeIndex
+ seekReadHasCustomAttributeIdx ctxt mdv addr |> ignore
+ let attrTypeIndex = seekReadCustomAttributeTypeIdx ctxt mdv addr
+ let attrCtorIdx = attrTypeIndex.index
+
+ let name =
+ if attrTypeIndex.tag = cat_MethodDef then
+ // the ExtensionAttribute constructor can be cat_MethodDef if the metadata is read from the assembly
+ // in which the corresponding attribute is defined
+ let _, (_, nameIdx, namespaceIdx, _, _, _) = seekMethodDefParent ctxt attrCtorIdx
+ readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx)
+ else
+ let mutable addr = rowAddr ctxt TableNames.MemberRef attrCtorIdx
+ let mrpTag = seekReadMemberRefParentIdx ctxt mdv addr
+
+ if mrpTag.tag <> mrp_TypeRef then
+ ""
+ else
+ let _, nameIdx, namespaceIdx = seekReadTypeRefRow ctxt mdv mrpTag.index
+ readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx)
+
+ if name = "System.Runtime.CompilerServices.ExtensionAttribute" then
+ containsExtensionMethods <- true
+
+ attrIdx <- attrIdx + 1
+
+ containsExtensionMethods
+
+ let additionalFlags =
+ if containsExtensionMethods then
+ ILTypeDefAdditionalFlags.CanContainExtensionMethods
+ else
+ ILTypeDefAdditionalFlags.None
let mdefs = seekReadMethods ctxt numTypars methodsIdx endMethodsIdx
let fdefs = seekReadFields ctxt (numTypars, hasLayout) fieldsIdx endFieldsIdx
let nested = seekReadNestedTypeDefs ctxt idx
+
let impls = seekReadInterfaceImpls ctxt mdv numTypars idx
+
let mimpls = seekReadMethodImpls ctxt numTypars idx
let props = seekReadProperties ctxt numTypars idx
let events = seekReadEvents ctxt numTypars idx
@@ -2189,7 +2230,7 @@ and typeDefReader ctxtH : ILTypeDefStored =
methodImpls = mimpls,
events = events,
properties = props,
- isKnownToBeAttribute = false,
+ additionalFlags = additionalFlags,
customAttrsStored = ctxt.customAttrsReader_TypeDef,
metadataIndex = idx
))
@@ -2215,14 +2256,26 @@ and seekReadNestedTypeDefs (ctxt: ILMetadataReader) tidx =
|])
and seekReadInterfaceImpls (ctxt: ILMetadataReader) mdv numTypars tidx =
- seekReadIndexedRows (
- ctxt.getNumRows TableNames.InterfaceImpl,
- seekReadInterfaceImplRow ctxt mdv,
- fst,
- simpleIndexCompare tidx,
- isSorted ctxt TableNames.InterfaceImpl,
- (snd >> seekReadTypeDefOrRef ctxt numTypars AsObject [])
- )
+ InterruptibleLazy(fun () ->
+ seekReadIndexedRows (
+ ctxt.getNumRows TableNames.InterfaceImpl,
+ id,
+ id,
+ (fun idx ->
+ let mutable addr = rowAddr ctxt TableNames.InterfaceImpl idx
+ let _tidx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
+ simpleIndexCompare tidx _tidx),
+ isSorted ctxt TableNames.InterfaceImpl,
+ (fun idx ->
+ let intfIdx = seekReadInterfaceIdx ctxt mdv idx
+ let ilType = seekReadTypeDefOrRef ctxt numTypars AsObject [] intfIdx
+
+ {
+ Idx = idx
+ Type = ilType
+ CustomAttrsStored = ctxt.customAttrsReader_InterfaceImpl
+ })
+ ))
and seekReadGenericParams ctxt numTypars (a, b) : ILGenericParameterDefs =
ctxt.seekReadGenericParams (GenericParamsIdx(numTypars, a, b))
@@ -2231,12 +2284,14 @@ and seekReadGenericParamsUncached ctxtH (GenericParamsIdx(numTypars, a, b)) =
let (ctxt: ILMetadataReader) = getHole ctxtH
let mdv = ctxt.mdfile.GetView()
+ let key = TaggedIndex(a, b)
+
let pars =
seekReadIndexedRows (
ctxt.getNumRows TableNames.GenericParam,
seekReadGenericParamRow ctxt mdv,
(fun (_, _, _, tomd, _) -> tomd),
- tomdCompare (TaggedIndex(a, b)),
+ tomdCompare key,
isSorted ctxt TableNames.GenericParam,
(fun (gpidx, seq, flags, _, nameIdx) ->
let flags = int32 flags
@@ -2260,6 +2315,7 @@ and seekReadGenericParamsUncached ctxtH (GenericParamsIdx(numTypars, a, b)) =
HasReferenceTypeConstraint = (flags &&& 0x0004) <> 0
HasNotNullableValueTypeConstraint = (flags &&& 0x0008) <> 0
HasDefaultConstructorConstraint = (flags &&& 0x0010) <> 0
+ HasAllowsRefStruct = (flags &&& 0x0020) <> 0
})
)
@@ -2268,11 +2324,16 @@ and seekReadGenericParamsUncached ctxtH (GenericParamsIdx(numTypars, a, b)) =
and seekReadGenericParamConstraints (ctxt: ILMetadataReader) mdv numTypars gpidx =
seekReadIndexedRows (
ctxt.getNumRows TableNames.GenericParamConstraint,
- seekReadGenericParamConstraintRow ctxt mdv,
- fst,
- simpleIndexCompare gpidx,
+ id,
+ id,
+ (fun idx ->
+ let mutable addr = rowAddr ctxt TableNames.GenericParamConstraint idx
+ let pidx = seekReadUntaggedIdx TableNames.GenericParam ctxt mdv addr
+ simpleIndexCompare gpidx pidx),
isSorted ctxt TableNames.GenericParamConstraint,
- (snd >> seekReadTypeDefOrRef ctxt numTypars AsObject [])
+ (fun idx ->
+ let constraintIdx = seekReadGenericParamConstraintIdx ctxt mdv idx
+ seekReadTypeDefOrRef ctxt numTypars AsObject [] constraintIdx)
)
and seekReadTypeDefAsType (ctxt: ILMetadataReader) boxity (ginst: ILTypes) idx =
@@ -2283,6 +2344,8 @@ and seekReadTypeDefAsTypeUncached ctxtH (TypeDefAsTypIdx(boxity, ginst, idx)) =
mkILTy boxity (ILTypeSpec.Create(seekReadTypeDefAsTypeRef ctxt idx, ginst))
and seekReadTypeDefAsTypeRef (ctxt: ILMetadataReader) idx =
+ let mdv = ctxt.mdfile.GetView()
+
let enc =
if seekIsTopTypeDefOfIdx ctxt idx then
[]
@@ -2290,11 +2353,14 @@ and seekReadTypeDefAsTypeRef (ctxt: ILMetadataReader) idx =
let enclIdx =
seekReadIndexedRow (
ctxt.getNumRows TableNames.Nested,
- seekReadNestedRow ctxt,
- fst,
- simpleIndexCompare idx,
+ id,
+ id,
+ (fun i ->
+ let mutable addr = rowAddr ctxt TableNames.Nested i
+ let nestedIdx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
+ simpleIndexCompare idx nestedIdx),
isSorted ctxt TableNames.Nested,
- snd
+ (fun i -> seekReadNestedRow ctxt i |> snd)
)
let tref = seekReadTypeDefAsTypeRef ctxt enclIdx
@@ -2715,10 +2781,10 @@ and readBlobHeapAsPropertySigUncached ctxtH (BlobAsPropSigIdx(numTypars, blobIdx
let sigptr = 0
let ccByte, sigptr = sigptrGetByte bytes sigptr
let hasthis = byteAsHasThis ccByte
- let ccMaxked = (ccByte &&& 0x0Fuy)
+ let ccMasked = (ccByte &&& 0x0Fuy)
- if ccMaxked <> e_IMAGE_CEE_CS_CALLCONV_PROPERTY then
- dprintn ("warning: property sig was " + string ccMaxked + " instead of CC_PROPERTY")
+ if ccMasked <> e_IMAGE_CEE_CS_CALLCONV_PROPERTY then
+ dprintn ("warning: property sig was " + string ccMasked + " instead of CC_PROPERTY")
let struct (numparams, sigptr) = sigptrGetZInt32 bytes sigptr
let retTy, sigptr = sigptrGetTy ctxt numTypars bytes sigptr
@@ -2756,17 +2822,17 @@ and byteAsHasThis b =
and byteAsCallConv b =
let cc =
- let ccMaxked = b &&& 0x0Fuy
+ let ccMasked = b &&& 0x0Fuy
- if ccMaxked = e_IMAGE_CEE_CS_CALLCONV_FASTCALL then
+ if ccMasked = e_IMAGE_CEE_CS_CALLCONV_FASTCALL then
ILArgConvention.FastCall
- elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_STDCALL then
+ elif ccMasked = e_IMAGE_CEE_CS_CALLCONV_STDCALL then
ILArgConvention.StdCall
- elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_THISCALL then
+ elif ccMasked = e_IMAGE_CEE_CS_CALLCONV_THISCALL then
ILArgConvention.ThisCall
- elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_CDECL then
+ elif ccMasked = e_IMAGE_CEE_CS_CALLCONV_CDECL then
ILArgConvention.CDecl
- elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_VARARG then
+ elif ccMasked = e_IMAGE_CEE_CS_CALLCONV_VARARG then
ILArgConvention.VarArg
else
ILArgConvention.Default
@@ -2848,22 +2914,26 @@ and seekReadMemberRefAsFieldSpecUncached ctxtH (MemberRefAsFspecIdx(numTypars, i
// method-range and field-range start/finish indexes
and seekReadMethodDefAsMethodData ctxt idx = ctxt.seekReadMethodDefAsMethodData idx
+and seekMethodDefParent (ctxt: ILMetadataReader) methodIdx =
+ seekReadIndexedRow (
+ ctxt.getNumRows TableNames.TypeDef,
+ (fun i -> i, seekReadTypeDefRow ctxt i),
+ id,
+ (fun (i, (_, _, _, _, _, methodsIdx as info)) ->
+ if methodsIdx > methodIdx then
+ -1
+ else
+ let struct (_, endMethodsIdx) = seekReadTypeDefRowExtents ctxt info i
+ if endMethodsIdx <= methodIdx then 1 else 0),
+ true,
+ id
+ )
+
and seekReadMethodDefAsMethodDataUncached ctxtH idx =
let (ctxt: ILMetadataReader) = getHole ctxtH
let mdv = ctxt.mdfile.GetView()
// Look for the method def parent.
- let tidx =
- seekReadIndexedRow (
- ctxt.getNumRows TableNames.TypeDef,
- (fun i -> i, seekReadTypeDefRowWithExtents ctxt i),
- id,
- (fun (_, ((_, _, _, _, _, methodsIdx), (_, endMethodsIdx))) ->
- if endMethodsIdx <= idx then 1
- elif methodsIdx <= idx && idx < endMethodsIdx then 0
- else -1),
- true,
- fst
- )
+ let tidx, _ = seekMethodDefParent ctxt idx
// Create a formal instantiation if needed
let typeGenericArgs = seekReadGenericParams ctxt 0 (tomd_TypeDef, tidx)
let typeGenericArgsCount = typeGenericArgs.Length
@@ -3051,15 +3121,18 @@ and seekReadMethodImpls (ctxt: ILMetadataReader) numTypars tidx =
let mimpls =
seekReadIndexedRows (
ctxt.getNumRows TableNames.MethodImpl,
- seekReadMethodImplRow ctxt mdv,
- (fun (a, _, _) -> a),
- simpleIndexCompare tidx,
+ id,
+ id,
+ (fun i ->
+ let mutable addr = rowAddr ctxt TableNames.MethodImpl i
+ let _tidx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
+ simpleIndexCompare tidx _tidx),
isSorted ctxt TableNames.MethodImpl,
- (fun (_, b, c) -> b, c)
+ seekReadMethodImplRow ctxt mdv
)
mimpls
- |> List.map (fun (b, c) ->
+ |> List.map (fun (_, b, c) ->
{
OverrideBy =
let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) =
@@ -3128,11 +3201,14 @@ and seekReadEvents (ctxt: ILMetadataReader) numTypars tidx =
match
seekReadOptionalIndexedRow (
ctxt.getNumRows TableNames.EventMap,
- (fun i -> i, seekReadEventMapRow ctxt mdv i),
- (fun (_, row) -> fst row),
- compare tidx,
+ id,
+ id,
+ (fun i ->
+ let mutable addr = rowAddr ctxt TableNames.EventMap i
+ let _tidx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
+ simpleIndexCompare tidx _tidx),
false,
- (fun (i, row) -> (i, snd row))
+ (fun i -> i, seekReadEventMapRow ctxt mdv i |> snd)
)
with
| None -> []
@@ -3195,11 +3271,14 @@ and seekReadProperties (ctxt: ILMetadataReader) numTypars tidx =
match
seekReadOptionalIndexedRow (
ctxt.getNumRows TableNames.PropertyMap,
- (fun i -> i, seekReadPropertyMapRow ctxt mdv i),
- (fun (_, row) -> fst row),
- compare tidx,
+ id,
+ id,
+ (fun i ->
+ let mutable addr = rowAddr ctxt TableNames.PropertyMap i
+ let _tidx = seekReadUntaggedIdx TableNames.TypeDef ctxt mdv addr
+ simpleIndexCompare tidx _tidx),
false,
- (fun (i, row) -> (i, snd row))
+ (fun i -> i, seekReadPropertyMapRow ctxt mdv i |> snd)
)
with
| None -> []
@@ -3223,16 +3302,22 @@ and customAttrsReader ctxtH tag : ILAttributesStored =
let (ctxt: ILMetadataReader) = getHole ctxtH
let mdv = ctxt.mdfile.GetView()
- let reader =
- { new ISeekReadIndexedRowReader, ILAttribute> with
- member _.GetRow(i, row) =
- seekReadCustomAttributeRow ctxt mdv i row
-
- member _.GetKey(attrRow) = attrRow.Value.parentIndex
-
- member _.CompareKey(key) = hcaCompare (TaggedIndex(tag, idx)) key
+ let searchedKey = TaggedIndex(tag, idx)
- member _.ConvertRow(attrRow) =
+ let reader =
+ { new ISeekReadIndexedRowReader with
+ member _.GetRow(i, rowIndex) = rowIndex.Value <- i
+ member _.GetKey(rowIndex) = rowIndex.Value
+
+ member _.CompareKey(rowIndex) =
+ let mutable addr = rowAddr ctxt TableNames.CustomAttribute rowIndex
+ // read parentIndex
+ let key = seekReadHasCustomAttributeIdx ctxt mdv addr
+ hcaCompare searchedKey key
+
+ member _.ConvertRow(rowIndex) =
+ let mutable attrRow = ref Unchecked.defaultof<_>
+ seekReadCustomAttributeRow ctxt mdv rowIndex.Value attrRow
seekReadCustomAttr ctxt (attrRow.Value.typeIndex, attrRow.Value.valueIndex)
}
@@ -4406,7 +4491,7 @@ let openMetadataReader
// All the caches. The sizes are guesstimates for the rough sharing-density of the assembly
let cacheAssemblyRef =
- mkCacheInt32 false inbase "ILAssemblyRef" (getNumRows TableNames.AssemblyRef)
+ mkCacheGeneric false inbase "ILAssemblyRef" (getNumRows TableNames.AssemblyRef)
let cacheMethodSpecAsMethodData =
mkCacheGeneric reduceMemoryUsage inbase "MethodSpecAsMethodData" (getNumRows TableNames.MethodSpec / 20 + 1)
@@ -4418,7 +4503,7 @@ let openMetadataReader
mkCacheGeneric reduceMemoryUsage inbase "CustomAttr" (getNumRows TableNames.CustomAttribute / 50 + 1)
let cacheTypeRef =
- mkCacheInt32 false inbase "ILTypeRef" (getNumRows TableNames.TypeRef / 20 + 1)
+ mkCacheGeneric false inbase "ILTypeRef" (getNumRows TableNames.TypeRef / 20 + 1)
let cacheTypeRefAsType =
mkCacheGeneric reduceMemoryUsage inbase "TypeRefAsType" (getNumRows TableNames.TypeRef / 20 + 1)
@@ -4436,38 +4521,38 @@ let openMetadataReader
mkCacheGeneric reduceMemoryUsage inbase "TypeDefAsType" (getNumRows TableNames.TypeDef / 20 + 1)
let cacheMethodDefAsMethodData =
- mkCacheInt32 reduceMemoryUsage inbase "MethodDefAsMethodData" (getNumRows TableNames.Method / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "MethodDefAsMethodData" (getNumRows TableNames.Method / 20 + 1)
let cacheGenericParams =
mkCacheGeneric reduceMemoryUsage inbase "GenericParams" (getNumRows TableNames.GenericParam / 20 + 1)
let cacheFieldDefAsFieldSpec =
- mkCacheInt32 reduceMemoryUsage inbase "FieldDefAsFieldSpec" (getNumRows TableNames.Field / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "FieldDefAsFieldSpec" (getNumRows TableNames.Field / 20 + 1)
let cacheUserStringHeap =
- mkCacheInt32 reduceMemoryUsage inbase "UserStringHeap" (userStringsStreamSize / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "UserStringHeap" (userStringsStreamSize / 20 + 1)
// nb. Lots and lots of cache hits on this cache, hence never optimize cache away
let cacheStringHeap =
- mkCacheInt32 false inbase "string heap" (stringsStreamSize / 50 + 1)
+ mkCacheGeneric false inbase "string heap" (stringsStreamSize / 50 + 1)
let cacheBlobHeap =
- mkCacheInt32 reduceMemoryUsage inbase "blob heap" (blobsStreamSize / 50 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "blob heap" (blobsStreamSize / 50 + 1)
// These tables are not required to enforce sharing fo the final data
// structure, but are very useful as searching these tables gives rise to many reads
// in standard applications.
let cacheNestedRow =
- mkCacheInt32 reduceMemoryUsage inbase "Nested Table Rows" (getNumRows TableNames.Nested / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "Nested Table Rows" (getNumRows TableNames.Nested / 20 + 1)
let cacheConstantRow =
- mkCacheInt32 reduceMemoryUsage inbase "Constant Rows" (getNumRows TableNames.Constant / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "Constant Rows" (getNumRows TableNames.Constant / 20 + 1)
let cacheMethodSemanticsRow =
- mkCacheInt32 reduceMemoryUsage inbase "MethodSemantics Rows" (getNumRows TableNames.MethodSemantics / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "MethodSemantics Rows" (getNumRows TableNames.MethodSemantics / 20 + 1)
let cacheTypeDefRow =
- mkCacheInt32 reduceMemoryUsage inbase "ILTypeDef Rows" (getNumRows TableNames.TypeDef / 20 + 1)
+ mkCacheGeneric reduceMemoryUsage inbase "ILTypeDef Rows" (getNumRows TableNames.TypeDef / 20 + 1)
let rowAddr (tab: TableName) idx =
tablePhysLocations[tab.Index] + (idx - 1) * tableRowSizes[tab.Index]
@@ -4518,6 +4603,7 @@ let openMetadataReader
customAttrsReader_Module = customAttrsReader ctxtH hca_Module
customAttrsReader_Assembly = customAttrsReader ctxtH hca_Assembly
customAttrsReader_TypeDef = customAttrsReader ctxtH hca_TypeDef
+ customAttrsReader_InterfaceImpl = customAttrsReader ctxtH hca_InterfaceImpl
customAttrsReader_GenericParam = customAttrsReader ctxtH hca_GenericParam
customAttrsReader_FieldDef = customAttrsReader ctxtH hca_FieldDef
customAttrsReader_MethodDef = customAttrsReader ctxtH hca_MethodDef
@@ -4664,10 +4750,10 @@ let openPEFileReader (fileName, pefile: BinaryFile, noFileOnDisk) =
let _headerPhysSize = seekReadInt32 pev (peOptionalHeaderPhysLoc + 60) // Header Size Combined size of MS-DOS Header, PE Header, PE Optional Header and padding
let subsys = seekReadUInt16 pev (peOptionalHeaderPhysLoc + 68) // SubSystem Subsystem required to run this image.
- let useHighEnthropyVA =
+ let useHighEntropyVA =
let n = seekReadUInt16 pev (peOptionalHeaderPhysLoc + 70)
- let highEnthropyVA = 0x20us
- (n &&& highEnthropyVA) = highEnthropyVA
+ let highEntropyVA = 0x20us
+ (n &&& highEntropyVA) = highEntropyVA
(* x86: 000000e0 *)
@@ -4867,7 +4953,7 @@ let openPEFileReader (fileName, pefile: BinaryFile, noFileOnDisk) =
let peinfo =
(subsys,
(subsysMajor, subsysMinor),
- useHighEnthropyVA,
+ useHighEntropyVA,
ilOnly,
only32,
is32bitpreferred,
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs
index 748ecafda2..c6c5e5ab99 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs
@@ -163,7 +163,12 @@ type TypeBuilder with
if logRefEmitCalls then
printfn "typeBuilder%d.CreateType()" (abs <| hash typB)
+ //Buggy annotation in ns20, will not be fixed.
+#if NETSTANDARD && !NO_CHECKNULLS
+ !!(typB.CreateTypeInfo()) :> Type
+#else
typB.CreateTypeInfo() :> Type
+#endif
member typB.DefineNestedTypeAndLog(name, attrs) =
let res = typB.DefineNestedType(name, attrs)
@@ -198,8 +203,8 @@ type TypeBuilder with
typB.DefineGenericParameters gps
- member typB.DefineConstructorAndLog(attrs, cconv, parms) =
- let consB = typB.DefineConstructor(attrs, cconv, parms)
+ member typB.DefineConstructorAndLog(attrs, cconv, params_) =
+ let consB = typB.DefineConstructor(attrs, cconv, params_)
if logRefEmitCalls then
printfn
@@ -208,7 +213,7 @@ type TypeBuilder with
(abs <| hash typB)
(LanguagePrimitives.EnumToValue attrs)
cconv
- parms
+ params_
consB
@@ -270,10 +275,9 @@ type TypeBuilder with
else
null
- if not (isNull m) then
- m.Invoke(null, args)
- else
- raise (MissingMethodException nm)
+ match m with
+ | null -> raise (MissingMethodException nm)
+ | m -> m.Invoke(null, (args: obj array))
member typB.SetCustomAttributeAndLog(cinfo, bytes) =
if logRefEmitCalls then
@@ -284,9 +288,12 @@ type TypeBuilder with
type OpCode with
member opcode.RefEmitName =
- (string (Char.ToUpper(opcode.Name[0])) + opcode.Name[1..])
- .Replace(".", "_")
- .Replace("_i4", "_I4")
+ match opcode.Name with
+ | null -> ""
+ | name ->
+ (string (Char.ToUpper(name[0])) + name[1..])
+ .Replace(".", "_")
+ .Replace("_i4", "_I4")
type ILGenerator with
@@ -320,7 +327,7 @@ type ILGenerator with
ilG.BeginFinallyBlock()
- member ilG.BeginCatchBlockAndLog ty =
+ member ilG.BeginCatchBlockAndLog(ty: Type) =
if logRefEmitCalls then
printfn "ilg%d.BeginCatchBlock(%A)" (abs <| hash ilG) ty
@@ -396,7 +403,7 @@ type ILGenerator with
member x.EmitAndLog(op: OpCode, v: ConstructorInfo) =
if logRefEmitCalls then
- printfn "ilg%d.Emit(OpCodes.%s, constructor_%s)" (abs <| hash x) op.RefEmitName v.DeclaringType.Name
+ printfn "ilg%d.Emit(OpCodes.%s, constructor_%s)" (abs <| hash x) op.RefEmitName (!!v.DeclaringType).Name
x.Emit(op, v)
@@ -693,7 +700,7 @@ let rec convTypeSpec cenv emEnv preferCreated (tspec: ILTypeSpec) =
let typT = convTypeRef cenv emEnv preferCreated tspec.TypeRef
let tyargs = List.map (convTypeAux cenv emEnv preferCreated) tspec.GenericArgs
- let res =
+ let res: Type MaybeNull =
match isNil tyargs, typT.IsGenericType with
| _, true -> typT.MakeGenericType(List.toArray tyargs)
| true, false -> typT
@@ -706,7 +713,7 @@ let rec convTypeSpec cenv emEnv preferCreated (tspec: ILTypeSpec) =
and convTypeAux cenv emEnv preferCreated ty =
match ty with
- | ILType.Void -> Type.GetType("System.Void")
+ | ILType.Void -> !! Type.GetType("System.Void")
| ILType.Array(shape, eltType) ->
let baseT = convTypeAux cenv emEnv preferCreated eltType
let nDims = shape.Rank
@@ -844,26 +851,10 @@ let queryableTypeGetField _emEnv (parentT: Type) (fref: ILFieldRef) =
| NonNull res -> res
let nonQueryableTypeGetField (parentTI: Type) (fieldInfo: FieldInfo) : FieldInfo =
- let res =
- if parentTI.IsGenericType then
- TypeBuilder.GetField(parentTI, fieldInfo)
- else
- fieldInfo
-
- match res with
- | Null ->
- error (
- Error(
- FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen (
- "field",
- fieldInfo.Name,
- parentTI.AssemblyQualifiedName,
- parentTI.Assembly.FullName
- ),
- range0
- )
- )
- | NonNull res -> res
+ if parentTI.IsGenericType then
+ TypeBuilder.GetField(parentTI, fieldInfo)
+ else
+ fieldInfo
let convFieldSpec cenv emEnv fspec =
let fref = fspec.FieldRef
@@ -1012,21 +1003,16 @@ let queryableTypeGetMethod cenv emEnv parentT (mref: ILMethodRef) : MethodInfo =
let methInfo =
try
- parentT.GetMethod(
- mref.Name,
- cconv ||| BindingFlags.Public ||| BindingFlags.NonPublic,
- null,
- argTs,
- (null: ParameterModifier[] MaybeNull)
- )
+ parentT.GetMethod(mref.Name, cconv ||| BindingFlags.Public ||| BindingFlags.NonPublic, null, argTs, null)
// This can fail if there is an ambiguity w.r.t. return type
with _ ->
null
- if (isNotNull methInfo && equalTypes resT methInfo.ReturnType) then
- methInfo
- else
- queryableTypeGetMethodBySearch cenv emEnv parentT mref
+ match methInfo with
+ | null -> queryableTypeGetMethodBySearch cenv emEnv parentT mref
+ | m when equalTypes resT m.ReturnType -> m
+ | _ -> queryableTypeGetMethodBySearch cenv emEnv parentT mref
+
else
queryableTypeGetMethodBySearch cenv emEnv parentT mref
@@ -1062,7 +1048,12 @@ let convMethodRef cenv emEnv (parentTI: Type) (mref: ILMethodRef) =
| Null ->
error (
Error(
- FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen ("method", mref.Name, parentTI.FullName, parentTI.Assembly.FullName),
+ FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen (
+ "method",
+ mref.Name,
+ parentTI.FullName |> string,
+ parentTI.Assembly.FullName |> string
+ ),
range0
)
)
@@ -1103,7 +1094,12 @@ let queryableTypeGetConstructor cenv emEnv (parentT: Type) (mref: ILMethodRef) =
| Null ->
error (
Error(
- FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen ("constructor", mref.Name, parentT.FullName, parentT.Assembly.FullName),
+ FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen (
+ "constructor",
+ mref.Name,
+ parentT.FullName |> string,
+ parentT.Assembly.FullName |> string
+ ),
range0
)
)
@@ -1138,7 +1134,12 @@ let convConstructorSpec cenv emEnv (mspec: ILMethodSpec) =
| Null ->
error (
Error(
- FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen ("constructor", "", parentTI.FullName, parentTI.Assembly.FullName),
+ FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen (
+ "constructor",
+ "",
+ parentTI.FullName |> string,
+ parentTI.Assembly.FullName |> string
+ ),
range0
)
)
@@ -1490,7 +1491,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr =
ilG.EmitAndLog(OpCodes.Ldelema, convType cenv emEnv ty)
else
let arrayTy = convType cenv emEnv (ILType.Array(shape, ty))
- let elemTy = arrayTy.GetElementType()
+ let elemTy = !! arrayTy.GetElementType()
let argTys = Array.create shape.Rank typeof
let retTy = elemTy.MakeByRefType()
@@ -1516,7 +1517,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr =
ilG.EmitAndLog(OpCodes.Stelem, convType cenv emEnv ty)
else
let arrayTy = convType cenv emEnv (ILType.Array(shape, ty))
- let elemTy = arrayTy.GetElementType()
+ let elemTy = !! arrayTy.GetElementType()
let meth =
modB.GetArrayMethodAndLog(
@@ -1624,7 +1625,7 @@ let emitCode cenv modB emEnv (ilG: ILGenerator) (code: ILCode) =
| ILExceptionClause.FilterCatch((startFilter, _), (startHandler, endHandler)) ->
add startFilter ilG.BeginExceptFilterBlockAndLog
- add startHandler (fun () -> ilG.BeginCatchBlockAndLog null)
+ add startHandler (fun () -> ilG.BeginCatchBlockAndLog Unchecked.defaultof<_>)
add endHandler ilG.EndExceptionBlockAndLog
| ILExceptionClause.TypeCatch(ty, (startHandler, endHandler)) ->
@@ -1713,31 +1714,34 @@ let buildGenParamsPass1b cenv emEnv (genArgs: Type array) (gps: ILGenericParamet
gp.CustomAttrs
|> emitCustomAttrs cenv emEnv (wrapCustomAttr gpB.SetCustomAttribute)
- let flags = GenericParameterAttributes.None
-
let flags =
match gp.Variance with
- | NonVariant -> flags
- | CoVariant -> flags ||| GenericParameterAttributes.Covariant
- | ContraVariant -> flags ||| GenericParameterAttributes.Contravariant
+ | NonVariant -> GenericParameterAttributes.None
+ | CoVariant -> GenericParameterAttributes.Covariant
+ | ContraVariant -> GenericParameterAttributes.Contravariant
- let flags =
- if gp.HasReferenceTypeConstraint then
- flags ||| GenericParameterAttributes.ReferenceTypeConstraint
- else
- flags
+ let zero = GenericParameterAttributes.None
let flags =
- if gp.HasNotNullableValueTypeConstraint then
- flags ||| GenericParameterAttributes.NotNullableValueTypeConstraint
- else
- flags
-
- let flags =
- if gp.HasDefaultConstructorConstraint then
- flags ||| GenericParameterAttributes.DefaultConstructorConstraint
- else
- flags
+ flags
+ ||| (if gp.HasReferenceTypeConstraint then
+ GenericParameterAttributes.ReferenceTypeConstraint
+ else
+ zero)
+ ||| (if gp.HasNotNullableValueTypeConstraint then
+ GenericParameterAttributes.NotNullableValueTypeConstraint
+ else
+ zero)
+ ||| (if gp.HasDefaultConstructorConstraint then
+ GenericParameterAttributes.DefaultConstructorConstraint
+ else
+ zero)
+ |||
+ // GenericParameterAttributes.AllowByRefLike from net9, not present in ns20
+ (if gp.HasAllowsRefStruct then
+ (enum 0x0020)
+ else
+ zero)
gpB.SetGenericParameterAttributes flags)
//----------------------------------------------------------------------------
@@ -1830,24 +1834,25 @@ let rec buildMethodPass2 cenv tref (typB: TypeBuilder) emEnv (mdef: ILMethodDef)
let methB =
System.Diagnostics.Debug.Assert(not (isNull definePInvokeMethod), "Runtime does not have DefinePInvokeMethod") // Absolutely can't happen
- definePInvokeMethod.Invoke(
- typB,
- [|
- mdef.Name
- p.Where.Name
- p.Name
- attrs
- cconv
- retTy
- null
- null
- argTys
- null
- null
- pcc
- pcs
- |]
- )
+ !!(!!definePInvokeMethod)
+ .Invoke(
+ typB,
+ [|
+ mdef.Name
+ p.Where.Name
+ p.Name
+ attrs
+ cconv
+ retTy
+ null
+ null
+ argTys
+ null
+ null
+ pcc
+ pcs
+ |]
+ )
:?> MethodBuilder
methB.SetImplementationFlagsAndLog implflags
@@ -1918,7 +1923,7 @@ let rec buildMethodPass3 cenv tref modB (typB: TypeBuilder) emEnv (mdef: ILMetho
| ".cctor"
| ".ctor" ->
let consB = envGetConsB emEnv mref
- // Constructors can not have generic parameters
+ // Constructors cannot have generic parameters
assert isNil mdef.GenericParams
// Value parameters
let defineParameter (i, attr, name) =
@@ -2173,7 +2178,8 @@ let rec buildTypeDefPass2 cenv nesting emEnv (tdef: ILTypeDef) =
let typB = envGetTypB emEnv tref
let emEnv = envPushTyvars emEnv (getGenericArgumentsOfType typB)
// add interface impls
- tdef.Implements
+ tdef.Implements.Value
+ |> List.map _.Type
|> convTypes cenv emEnv
|> List.iter (fun implT -> typB.AddInterfaceImplementationAndLog implT)
// add methods, properties
@@ -2227,7 +2233,7 @@ let rec buildTypeDefPass3 cenv nesting modB emEnv (tdef: ILTypeDef) =
//
// The code in this phase is fragile.
//
-// THe background is that System.Reflection.Emit implementations can be finnickity about the
+// The background is that System.Reflection.Emit implementations can be finickity about the
// order that CreateType calls are made when types refer to each other. Some of these restrictions
// are not well documented, or are related to historical bugs where the F# emit code worked around the
// underlying problems. Ideally the SRE implementation would just "work this out as it goes along" but
@@ -2334,7 +2340,8 @@ let createTypeRef (visited: Dictionary<_, _>, created: Dictionary<_, _>) emEnv t
if verbose2 then
dprintf "buildTypeDefPass4: Creating Interface Chain of %s\n" tdef.Name
- tdef.Implements |> List.iter (traverseType CollectTypes.All)
+ tdef.Implements.Value
+ |> List.iter (fun x -> traverseType CollectTypes.All x.Type)
if verbose2 then
dprintf "buildTypeDefPass4: Do value types in fields of %s\n" tdef.Name
@@ -2473,7 +2480,7 @@ let defineDynamicAssemblyAndLog (asmName, flags, asmDir: string) =
asmB
-let mkDynamicAssemblyAndModule (assemblyName, optimize, collectible) =
+let mkDynamicAssemblyAndModule (assemblyName: string, optimize, collectible) =
let asmDir = "."
let asmName = AssemblyName()
asmName.Name <- assemblyName
@@ -2490,7 +2497,7 @@ let mkDynamicAssemblyAndModule (assemblyName, optimize, collectible) =
let daType = typeof
let daCtor =
- daType.GetConstructor [| typeof |]
+ !! daType.GetConstructor([| typeof |])
let daBuilder =
CustomAttributeBuilder(
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs
index 7a383d4a07..ac06baa5d5 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs
@@ -64,7 +64,9 @@ let hashAssembly (peReader: PEReader) (hashAlgorithm: IncrementalHash) =
let checkSumOffset = peHeaderOffset + 0x40 // offsetof(IMAGE_OPTIONAL_HEADER, CheckSum)
let securityDirectoryEntryOffset, peHeaderSize =
- match peHeaders.PEHeader.Magic with
+ let header = peHeaders.PEHeader |> nullArgCheck (nameof peHeaders.PEHeader)
+
+ match header.Magic with
| PEMagic.PE32 -> peHeaderOffset + 0x80, 0xE0 // offsetof(IMAGE_OPTIONAL_HEADER32, DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY]), sizeof(IMAGE_OPTIONAL_HEADER32)
| PEMagic.PE32Plus -> peHeaderOffset + 0x90, 0xF0 // offsetof(IMAGE_OPTIONAL_HEADER64, DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY]), sizeof(IMAGE_OPTIONAL_HEADER64)
| _ -> raise (BadImageFormatException(getResourceString (FSComp.SR.ilSignInvalidMagicValue ())))
@@ -87,7 +89,9 @@ let hashAssembly (peReader: PEReader) (hashAlgorithm: IncrementalHash) =
hashAlgorithm.AppendData(allHeaders, 0, allHeadersSize)
// Hash content of all sections
- let signatureDirectory = peHeaders.CorHeader.StrongNameSignatureDirectory
+ let signatureDirectory =
+ let corHeader = peHeaders.CorHeader |> nullArgCheck (nameof peHeaders.CorHeader)
+ corHeader.StrongNameSignatureDirectory
let signatureStart =
match peHeaders.TryGetDirectoryOffset signatureDirectory with
@@ -140,7 +144,7 @@ type BlobReader =
x._offset <- x._offset + length
arr |> Array.rev
-let RSAParamatersFromBlob blob keyType =
+let RSAParametersFromBlob blob keyType =
let mutable reader = BlobReader blob
if reader.ReadInt32() <> 0x00000207 && keyType = KeyType.KeyPair then
@@ -186,10 +190,10 @@ let toCLRKeyBlob (rsaParameters: RSAParameters) (algId: int) : byte array =
if isNull rsaParameters.Modulus then
raise (CryptographicException(String.Format(getResourceString (FSComp.SR.ilSignInvalidRSAParams ()), "Modulus")))
- if isNull rsaParameters.Exponent || rsaParameters.Exponent.Length > 4 then
+ if isNull rsaParameters.Exponent || (!!rsaParameters.Exponent).Length > 4 then
raise (CryptographicException(String.Format(getResourceString (FSComp.SR.ilSignInvalidRSAParams ()), "Exponent")))
- let modulusLength = rsaParameters.Modulus.Length
+ let modulusLength = (!!rsaParameters.Modulus).Length
let halfModulusLength = (modulusLength + 1) / 2
// We assume that if P != null, then so are Q, DP, DQ, InverseQ and D and indicate KeyPair RSA Parameters
@@ -227,31 +231,39 @@ let toCLRKeyBlob (rsaParameters: RSAParameters) (algId: int) : byte array =
let expAsDword =
let mutable buffer = int 0
- for i in 0 .. rsaParameters.Exponent.Length - 1 do
- buffer <- (buffer <<< 8) ||| int rsaParameters.Exponent[i]
+ match rsaParameters.Exponent with
+ | null -> ()
+ | exp ->
+ for i in 0 .. exp.Length - 1 do
+ buffer <- (buffer <<< 8) ||| int exp[i]
buffer
+ let safeArrayRev (buffer: _ MaybeNull) =
+ match buffer with
+ | Null -> Array.empty
+ | NonNull buffer -> buffer |> Array.rev
+
bw.Write expAsDword // RSAPubKey.pubExp
- bw.Write(rsaParameters.Modulus |> Array.rev) // Copy over the modulus for both public and private
+ bw.Write(rsaParameters.Modulus |> safeArrayRev) // Copy over the modulus for both public and private
if isPrivate then
do
- bw.Write(rsaParameters.P |> Array.rev)
- bw.Write(rsaParameters.Q |> Array.rev)
- bw.Write(rsaParameters.DP |> Array.rev)
- bw.Write(rsaParameters.DQ |> Array.rev)
- bw.Write(rsaParameters.InverseQ |> Array.rev)
- bw.Write(rsaParameters.D |> Array.rev)
+ bw.Write(rsaParameters.P |> safeArrayRev)
+ bw.Write(rsaParameters.Q |> safeArrayRev)
+ bw.Write(rsaParameters.DP |> safeArrayRev)
+ bw.Write(rsaParameters.DQ |> safeArrayRev)
+ bw.Write(rsaParameters.InverseQ |> safeArrayRev)
+ bw.Write(rsaParameters.D |> safeArrayRev)
bw.Flush()
ms.ToArray()
key
-let createSignature hash keyBlob keyType =
+let createSignature (hash: byte array) keyBlob keyType =
use rsa = RSA.Create()
- rsa.ImportParameters(RSAParamatersFromBlob keyBlob keyType)
+ rsa.ImportParameters(RSAParametersFromBlob keyBlob keyType)
let signature =
rsa.SignHash(hash, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1)
@@ -260,7 +272,8 @@ let createSignature hash keyBlob keyType =
let patchSignature (stream: Stream) (peReader: PEReader) (signature: byte array) =
let peHeaders = peReader.PEHeaders
- let signatureDirectory = peHeaders.CorHeader.StrongNameSignatureDirectory
+ let corHeader = peHeaders.CorHeader |> nullArgCheck (nameof peHeaders.CorHeader)
+ let signatureDirectory = corHeader.StrongNameSignatureDirectory
let signatureOffset =
if signatureDirectory.Size > signature.Length then
@@ -275,7 +288,7 @@ let patchSignature (stream: Stream) (peReader: PEReader) (signature: byte array)
let corHeaderFlagsOffset = int64 (peHeaders.CorHeaderStartOffset + 16) // offsetof(IMAGE_COR20_HEADER, Flags)
stream.Seek(corHeaderFlagsOffset, SeekOrigin.Begin) |> ignore
- stream.WriteByte(byte (peHeaders.CorHeader.Flags ||| CorFlags.StrongNameSigned))
+ stream.WriteByte(byte (corHeader.Flags ||| CorFlags.StrongNameSigned))
()
let signStream stream keyBlob =
@@ -307,7 +320,7 @@ let signatureSize (pk: byte array) =
// Returns a CLR Format Blob public key
let getPublicKeyForKeyPair keyBlob =
use rsa = RSA.Create()
- rsa.ImportParameters(RSAParamatersFromBlob keyBlob KeyType.KeyPair)
+ rsa.ImportParameters(RSAParametersFromBlob keyBlob KeyType.KeyPair)
let rsaParameters = rsa.ExportParameters false
toCLRKeyBlob rsaParameters CALG_RSA_KEYX
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs
index cd4e1bfe72..3cbdd3c752 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs
@@ -50,6 +50,13 @@ let emitBytesViaBuffer f = use bb = ByteBuffer.Create EmitBytesViaBufferCapacity
/// Alignment and padding
let align alignment n = ((n + alignment - 1) / alignment) * alignment
+
+/// Maximum number of methods in a dotnet type
+/// This differs from the spec and file formats slightly which suggests 0xfffe is the maximum
+/// this value was identified empirically.
+[]
+let maximumMethodsPerDotNetType = 0xfff0
+
//---------------------------------------------------------------------
// Concrete token representations etc. used in PE files
//---------------------------------------------------------------------
@@ -355,7 +362,11 @@ let envForOverrideSpec (ospec: ILOverridesSpec) = { EnclosingTyparCount=ospec.De
//---------------------------------------------------------------------
[]
-type MetadataTable<'T> =
+type MetadataTable<'T
+#if !NO_CHECKNULLS
+ when 'T:not null
+#endif
+ > =
{ name: string
dict: Dictionary<'T, int> // given a row, find its entry number
mutable rows: ResizeArray<'T> }
@@ -547,6 +558,8 @@ type cenv =
methodDefIdxs: Dictionary
+ implementsIdxs: Dictionary
+
propertyDefs: MetadataTable
eventDefs: MetadataTable
@@ -652,7 +665,7 @@ let GetBytesAsBlobIdx cenv (bytes: byte[]) =
else cenv.blobs.FindOrAddSharedEntry bytes
let GetStringHeapIdx cenv s =
- if s = "" then 0
+ if String.IsNullOrEmpty(s) then 0
else cenv.strings.FindOrAddSharedEntry s
let GetGuidIdx cenv info = cenv.guids.FindOrAddSharedEntry info
@@ -672,8 +685,14 @@ let GetTypeNameAsElemPair cenv n =
//=====================================================================
let rec GenTypeDefPass1 enc cenv (tdef: ILTypeDef) =
- ignore (cenv.typeDefs.AddUniqueEntry "type index" (fun (TdKey (_, n)) -> n) (TdKey (enc, tdef.Name)))
- GenTypeDefsPass1 (enc@[tdef.Name]) cenv (tdef.NestedTypes.AsList())
+ ignore (cenv.typeDefs.AddUniqueEntry "type index" (fun (TdKey (_, n)) -> n) (TdKey (enc, tdef.Name)))
+
+ // Verify that the typedef contains fewer than maximumMethodsPerDotNetType
+ let count = tdef.Methods.AsArray().Length
+ if count > maximumMethodsPerDotNetType then
+ errorR(Error(FSComp.SR.tooManyMethodsInDotNetTypeWritingAssembly (tdef.Name, count, maximumMethodsPerDotNetType), rangeStartup))
+
+ GenTypeDefsPass1 (enc@[tdef.Name]) cenv (tdef.NestedTypes.AsList())
and GenTypeDefsPass1 enc cenv tdefs = List.iter (GenTypeDefPass1 enc cenv) tdefs
@@ -682,7 +701,8 @@ and GenTypeDefsPass1 enc cenv tdefs = List.iter (GenTypeDefPass1 enc cenv) tdefs
//=====================================================================
let rec GetIdxForTypeDef cenv key =
- try cenv.typeDefs.GetTableEntry key
+ try
+ cenv.typeDefs.GetTableEntry key
with
:? KeyNotFoundException ->
let (TdKey (enc, n) ) = key
@@ -1151,7 +1171,7 @@ let canGenMethodDef (tdef: ILTypeDef) cenv (mdef: ILMethodDef) =
match mdef.Access with
| ILMemberAccess.Public -> true
// When emitting a reference assembly, do not emit methods that are private/protected/internal unless they are virtual/abstract or provide an explicit interface implementation.
- // REVIEW: Addded(vlza, fixes #14937):
+ // REVIEW: Added(vlza, fixes #14937):
// We also emit methods that are marked as HideBySig and static,
// since they're not virtual or abstract, but we want (?) the same behaviour as normal instance implementations.
| ILMemberAccess.Private | ILMemberAccess.Family | ILMemberAccess.Assembly | ILMemberAccess.FamilyOrAssembly
@@ -1267,7 +1287,7 @@ and GetTypeAsImplementsRow cenv env tidx ty =
TypeDefOrRefOrSpec (tdorTag, tdorRow) |]
and GenImplementsPass2 cenv env tidx ty =
- AddUnsharedRow cenv TableNames.InterfaceImpl (GetTypeAsImplementsRow cenv env tidx ty) |> ignore
+ AddUnsharedRow cenv TableNames.InterfaceImpl (GetTypeAsImplementsRow cenv env tidx ty)
and GetKeyForEvent tidx (x: ILEventDef) =
EventKey (tidx, x.Name)
@@ -1303,7 +1323,8 @@ and GenTypeDefPass2 pidx enc cenv (tdef: ILTypeDef) =
// Now generate or assign index numbers for tables referenced by the maps.
// Don't yet generate contents of these tables - leave that to pass3, as
// code may need to embed these entries.
- tdef.Implements |> List.iter (GenImplementsPass2 cenv env tidx)
+ cenv.implementsIdxs[tidx] <- tdef.Implements.Value |> List.map (fun x -> GenImplementsPass2 cenv env tidx x.Type)
+
tdef.Fields.AsList() |> List.iter (GenFieldDefPass2 tdef cenv tidx)
tdef.Methods |> Seq.iter (GenMethodDefPass2 tdef cenv tidx)
// Generation of property & event definitions for **ref assemblies** is checking existence of generated method definitions.
@@ -2492,7 +2513,8 @@ let rec GetGenericParamAsGenericParamRow cenv _env idx owner gp =
| ContraVariant -> 0x0002) |||
(if gp.HasReferenceTypeConstraint then 0x0004 else 0x0000) |||
(if gp.HasNotNullableValueTypeConstraint then 0x0008 else 0x0000) |||
- (if gp.HasDefaultConstructorConstraint then 0x0010 else 0x0000)
+ (if gp.HasDefaultConstructorConstraint then 0x0010 else 0x0000) |||
+ (if gp.HasAllowsRefStruct then 0x0020 else 0x0000)
let mdVersionMajor, _ = metadataSchemaVersionSupportedByCLRVersion cenv.desiredMetadataVersion
@@ -2852,6 +2874,11 @@ let rec GenTypeDefPass3 enc cenv (tdef: ILTypeDef) =
try
let env = envForTypeDef tdef
let tidx = GetIdxForTypeDef cenv (TdKey(enc, tdef.Name))
+
+ tdef.Implements.Value
+ |> List.zip cenv.implementsIdxs[tidx]
+ |> List.iter (fun (impIdx, impl) -> GenCustomAttrsPass3Or4 cenv (hca_InterfaceImpl,impIdx) impl.CustomAttrs)
+
tdef.Properties.AsList() |> List.iter (GenPropertyPass3 cenv env)
tdef.Events.AsList() |> List.iter (GenEventPass3 cenv env)
tdef.Fields.AsList() |> List.iter (GenFieldDefPass3 tdef cenv env)
@@ -3116,6 +3143,7 @@ let generateIL (
methodDefIdxsByKey = MetadataTable<_>.New("method defs", EqualityComparer.Default)
// This uses reference identity on ILMethodDef objects
methodDefIdxs = Dictionary<_, _>(100, HashIdentity.Reference)
+ implementsIdxs = Dictionary<_, _>(100, HashIdentity.Structural)
propertyDefs = MetadataTable<_>.New("property defs", EqualityComparer.Default)
eventDefs = MetadataTable<_>.New("event defs", EqualityComparer.Default)
typeDefs = MetadataTable<_>.New("type defs", EqualityComparer.Default)
@@ -3155,7 +3183,7 @@ let generateIL (
Methods = cenv.pdbinfo.ToArray()
TableRowCounts = cenv.tables |> Seq.map(fun t -> t.Count) |> Seq.toArray }
- let idxForNextedTypeDef (tdefs: ILTypeDef list, tdef: ILTypeDef) =
+ let idxForNestedTypeDef (tdefs: ILTypeDef list, tdef: ILTypeDef) =
let enc = tdefs |> List.map (fun tdef -> tdef.Name)
GetIdxForTypeDef cenv (TdKey(enc, tdef.Name))
@@ -3168,18 +3196,18 @@ let generateIL (
// turn idx tbls into token maps
let mappings =
{ TypeDefTokenMap = (fun t ->
- getUncodedToken TableNames.TypeDef (idxForNextedTypeDef t))
+ getUncodedToken TableNames.TypeDef (idxForNestedTypeDef t))
FieldDefTokenMap = (fun t fd ->
- let tidx = idxForNextedTypeDef t
+ let tidx = idxForNestedTypeDef t
getUncodedToken TableNames.Field (GetFieldDefAsFieldDefIdx cenv tidx fd))
MethodDefTokenMap = (fun t mdef ->
- let tidx = idxForNextedTypeDef t
+ let tidx = idxForNestedTypeDef t
getUncodedToken TableNames.Method (FindMethodDefIdx cenv (GetKeyForMethodDef cenv tidx mdef)))
PropertyTokenMap = (fun t pdef ->
- let tidx = idxForNextedTypeDef t
+ let tidx = idxForNestedTypeDef t
getUncodedToken TableNames.Property (cenv.propertyDefs.GetTableEntry (GetKeyForPropertyDef tidx pdef)))
EventTokenMap = (fun t edef ->
- let tidx = idxForNextedTypeDef t
+ let tidx = idxForNestedTypeDef t
getUncodedToken TableNames.Event (cenv.eventDefs.GetTableEntry (EventKey (tidx, edef.Name)))) }
reportTime "Finalize Module Generation Results"
// New return the results
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi
index 986f79d53f..d074f0bc58 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi
@@ -31,6 +31,6 @@ type options =
/// Write a binary to the file system.
val WriteILBinaryFile: options: options * inputModule: ILModuleDef * (ILAssemblyRef -> ILAssemblyRef) -> unit
-/// Write a binary to an array of bytes auitable for dynamic loading.
+/// Write a binary to an array of bytes suitable for dynamic loading.
val WriteILBinaryInMemory:
options: options * inputModule: ILModuleDef * (ILAssemblyRef -> ILAssemblyRef) -> byte[] * byte[] option
diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs
index 24082eea2b..8776330b7c 100644
--- a/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs
+++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs
@@ -16,6 +16,7 @@ open Internal.Utilities
open FSharp.Compiler.AbstractIL.IL
open FSharp.Compiler.AbstractIL.Support
open Internal.Utilities.Library
+open Internal.Utilities.Library.Extras
open FSharp.Compiler.DiagnosticsLogger
open FSharp.Compiler.IO
open FSharp.Compiler.Text.Range
@@ -342,12 +343,9 @@ let scopeSorter (scope1: PdbMethodScope) (scope2: PdbMethodScope) =
type PortablePdbGenerator
(embedAllSource: bool, embedSourceList: string list, sourceLink: string, checksumAlgorithm, info: PdbData, pathMap: PathMap) =
- let docs =
- match info.Documents with
- | Null -> Array.empty
- | NonNull docs -> docs
+ let docs = info.Documents
- // The metadata to wite to the PoortablePDB (Roslyn = _debugMetadataOpt)
+ // The metadata to wite to the PortablePDB (Roslyn = _debugMetadataOpt)
let metadata = MetadataBuilder()
@@ -392,7 +390,7 @@ type PortablePdbGenerator
///
let sourceCompressionThreshold = 200
- let includeSource file =
+ let includeSource (file: string) =
let isInList =
embedSourceList
|> List.exists (fun f -> String.Compare(file, f, StringComparison.OrdinalIgnoreCase) = 0)
@@ -653,12 +651,9 @@ type PortablePdbGenerator
let emitMethod minfo =
let docHandle, sequencePointBlob =
let sps =
- match minfo.DebugPoints with
- | Null -> Array.empty
- | NonNull pts ->
- match minfo.DebugRange with
- | None -> Array.empty
- | Some _ -> pts
+ match minfo.DebugRange with
+ | None -> Array.empty
+ | Some _ -> minfo.DebugPoints
let builder = BlobBuilder()
builder.WriteCompressedInteger(minfo.LocalSignatureToken)
@@ -702,12 +697,12 @@ type PortablePdbGenerator
else
//=============================================================================================================================================
// Sequence-point-record
- // Validate these with magic numbers according to the portable pdb spec Sequence point dexcription:
+ // Validate these with magic numbers according to the portable pdb spec Sequence point description:
// https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md#methoddebuginformation-table-0x31
//
// So the spec is actually bit iffy!!!!! (More like guidelines really. )
// It uses code similar to this to validate the values
- // if (result < 0 || result >= ushort.MaxValue) // be errorfull
+ // if (result < 0 || result >= ushort.MaxValue) // be errorful
// Spec Says 0x10000 and value max = 0xFFFF but it can't even be = to maxvalue, and so the range is 0 .. 0xfffe inclusive
//=============================================================================================================================================
@@ -871,7 +866,7 @@ let getInfoForEmbeddedPortablePdb
(uncompressedLength: int64)
(contentId: BlobContentId)
(compressedStream: MemoryStream)
- pdbfile
+ (pdbfile: string)
cvChunk
pdbChunk
deterministicPdbChunk
@@ -885,7 +880,7 @@ let getInfoForEmbeddedPortablePdb
pdbGetDebugInfo
(contentId.Guid.ToByteArray())
(int32 contentId.Stamp)
- fn
+ !!fn
cvChunk
(Some pdbChunk)
deterministicPdbChunk
@@ -1028,6 +1023,11 @@ let rec pushShadowedLocals (stackGuard: StackGuard) (localsToPush: PdbLocalVar[]
// adding the text " (shadowed)" to the names of those with name conflicts.
let unshadowScopes rootScope =
// Avoid stack overflow when writing linearly nested scopes
- let stackGuard = StackGuard(100, "ILPdbWriter.unshadowScopes")
+ let UnshadowScopesStackGuardDepth =
+ GetEnvInteger "FSHARP_ILPdb_UnshadowScopes_StackGuardDepth" 100
+
+ let stackGuard =
+ StackGuard(UnshadowScopesStackGuardDepth, "ILPdbWriter.unshadowScopes")
+
let result, _ = pushShadowedLocals stackGuard [||] rootScope
result
diff --git a/src/fcs-fable/src/Compiler/Checking/AccessibilityLogic.fs b/src/fcs-fable/src/Compiler/Checking/AccessibilityLogic.fs
index 4a70f268dd..6aba2edcb4 100644
--- a/src/fcs-fable/src/Compiler/Checking/AccessibilityLogic.fs
+++ b/src/fcs-fable/src/Compiler/Checking/AccessibilityLogic.fs
@@ -243,8 +243,8 @@ let IsILEventInfoAccessible g amap m ad einfo =
let private IsILMethInfoAccessible g amap m adType ad ilminfo =
match ilminfo with
- | ILMethInfo (_, ty, None, mdef, _) -> IsILTypeAndMemberAccessible g amap m adType ad (ILTypeInfo.FromType g ty) mdef.Access
- | ILMethInfo (_, _, Some declaringTyconRef, mdef, _) -> IsILMemberAccessible g amap m declaringTyconRef ad mdef.Access
+ | ILMethInfo (_, IlType ty, mdef, _) -> IsILTypeAndMemberAccessible g amap m adType ad ty mdef.Access
+ | ILMethInfo (_, CSharpStyleExtension(declaring=declaringTyconRef), mdef, _) -> IsILMemberAccessible g amap m declaringTyconRef ad mdef.Access
let GetILAccessOfILPropInfo (ILPropInfo(tinfo, pdef)) =
let tdef = tinfo.RawMetadata
@@ -256,7 +256,7 @@ let GetILAccessOfILPropInfo (ILPropInfo(tinfo, pdef)) =
| Some mrefGet, Some mrefSet ->
//
// Dotnet properties have a getter and a setter method, each of which can have a separate visibility public, protected, private etc ...
- // This code computes the visibility for the property by choosing the most visible method. This approximation is usefull for cases
+ // This code computes the visibility for the property by choosing the most visible method. This approximation is useful for cases
// where the compiler needs to know the visibility of the property.
// The specific ordering for choosing the most visible is:
// ILMemberAccess.Public,
@@ -351,9 +351,10 @@ let CheckILFieldInfoAccessible g amap m ad finfo =
/// when calling x.SomeMethod() we need to use 'adTyp' do verify that type of x is accessible from C
/// and 'ad' to determine accessibility of SomeMethod.
/// I.e when calling x.Public() and x.Protected() -in both cases first check should succeed and second - should fail in the latter one.
-let IsTypeAndMethInfoAccessible amap m accessDomainTy ad = function
+let rec IsTypeAndMethInfoAccessible amap m accessDomainTy ad = function
| ILMeth (g, x, _) -> IsILMethInfoAccessible g amap m accessDomainTy ad x
| FSMeth (_, _, vref, _) -> IsValAccessible ad vref
+ | MethInfoWithModifiedReturnType(mi,_) -> IsTypeAndMethInfoAccessible amap m accessDomainTy ad mi
| DefaultStructCtor(g, ty) -> IsTypeAccessible g amap m ad ty
#if !NO_TYPEPROVIDERS
| ProvidedMeth(amap, tpmb, _, m) as etmi ->
diff --git a/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs b/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs
index 075023a2c2..e87d4bba7c 100644
--- a/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs
+++ b/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs
@@ -27,7 +27,7 @@ open FSharp.Core.CompilerServices
exception ObsoleteWarning of string * range
exception ObsoleteError of string * range
-let fail() = failwith "This custom attribute has an argument that can not yet be converted using this API"
+let fail() = failwith "This custom attribute has an argument that cannot yet be converted using this API"
let rec private evalILAttribElem elem =
match elem with
@@ -90,7 +90,8 @@ type AttribInfo =
match x with
| FSAttribInfo(_g, Attrib(tcref, _, _, _, _, _, _)) -> tcref
| ILAttribInfo (g, amap, scoref, a, m) ->
- let ty = RescopeAndImportILType scoref amap m [] a.Method.DeclaringType
+ // We are skipping nullness check here because this reference is an attribute usage, nullness does not apply.
+ let ty = RescopeAndImportILTypeSkipNullness scoref amap m [] a.Method.DeclaringType
tcrefOfAppTy g ty
member x.ConstructorArguments =
@@ -102,9 +103,10 @@ type AttribInfo =
let obj = evalFSharpAttribArg g evaluatedExpr
ty, obj)
| ILAttribInfo (_g, amap, scoref, cattr, m) ->
- let parms, _args = decodeILAttribData cattr
- [ for argTy, arg in Seq.zip cattr.Method.FormalArgTypes parms ->
- let ty = RescopeAndImportILType scoref amap m [] argTy
+ let params_, _args = decodeILAttribData cattr
+ [ for argTy, arg in Seq.zip cattr.Method.FormalArgTypes params_ ->
+ // We are skipping nullness check here because this reference is an attribute usage, nullness does not apply.
+ let ty = RescopeAndImportILTypeSkipNullness scoref amap m [] argTy
let obj = evalILAttribElem arg
ty, obj ]
@@ -117,9 +119,10 @@ type AttribInfo =
let obj = evalFSharpAttribArg g evaluatedExpr
ty, nm, isField, obj)
| ILAttribInfo (_g, amap, scoref, cattr, m) ->
- let _parms, namedArgs = decodeILAttribData cattr
+ let _params_, namedArgs = decodeILAttribData cattr
[ for nm, argTy, isProp, arg in namedArgs ->
- let ty = RescopeAndImportILType scoref amap m [] argTy
+ // We are skipping nullness check here because this reference is an attribute usage, nullness does not apply.
+ let ty = RescopeAndImportILTypeSkipNullness scoref amap m [] argTy
let obj = evalILAttribElem arg
let isField = not isProp
ty, nm, isField, obj ]
@@ -149,10 +152,11 @@ let GetAttribInfosOfEntity g amap m (tcref:TyconRef) =
tcref.Attribs |> List.map (fun a -> FSAttribInfo (g, a))
-let GetAttribInfosOfMethod amap m minfo =
+let rec GetAttribInfosOfMethod amap m minfo =
match minfo with
| ILMeth (g, ilminfo, _) -> ilminfo.RawMetadata.CustomAttrs |> AttribInfosOfIL g amap ilminfo.MetadataScope m
| FSMeth (g, _, vref, _) -> vref.Attribs |> AttribInfosOfFS g
+ | MethInfoWithModifiedReturnType(mi,_) -> GetAttribInfosOfMethod amap m mi
| DefaultStructCtor _ -> []
#if !NO_TYPEPROVIDERS
// TODO: provided attributes
@@ -183,11 +187,12 @@ let GetAttribInfosOfEvent amap m einfo =
/// Analyze three cases for attributes declared on methods: IL-declared attributes, F#-declared attributes and
/// provided attributes.
-let BindMethInfoAttributes m minfo f1 f2 f3 =
+let rec BindMethInfoAttributes m minfo f1 f2 f3 =
ignore m; ignore f3
match minfo with
| ILMeth (_, x, _) -> f1 x.RawMetadata.CustomAttrs
| FSMeth (_, _, vref, _) -> f2 vref.Attribs
+ | MethInfoWithModifiedReturnType(mi,_) -> BindMethInfoAttributes m mi f1 f2 f3
| DefaultStructCtor _ -> f2 []
#if !NO_TYPEPROVIDERS
| ProvidedMeth (_, mi, _, _) -> f3 (mi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)), m))
@@ -207,7 +212,7 @@ let TryBindMethInfoAttribute g (m: range) (AttribInfo(atref, _) as attribSpec) m
(fun provAttribs ->
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)), m) with
| Some args -> f3 args
- | None -> None)
+ | None -> None)
#else
(fun _provAttribs -> None)
#endif
@@ -232,7 +237,7 @@ let MethInfoHasAttribute g m attribSpec minfo =
let private CheckCompilerFeatureRequiredAttribute (g: TcGlobals) cattrs msg m =
// In some cases C# will generate both ObsoleteAttribute and CompilerFeatureRequiredAttribute.
- // Specifically, when default constructor is generated for class with any reqired members in them.
+ // Specifically, when default constructor is generated for class with any required members in them.
// ObsoleteAttribute should be ignored if CompilerFeatureRequiredAttribute is present, and its name is "RequiredMembers".
let (AttribInfo(tref,_)) = g.attrib_CompilerFeatureRequiredAttribute
match TryDecodeILAttribute tref cattrs with
@@ -381,7 +386,7 @@ let CheckFSharpAttributesForUnseen g attribs _m =
#if !NO_TYPEPROVIDERS
/// Indicate if a list of provided attributes contains 'ObsoleteAttribute'. Used to suppress the item in intellisense.
let CheckProvidedAttributesForUnseen (provAttribs: Tainted) m =
- provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), typeof.FullName).IsSome), m)
+ provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), !! typeof.FullName).IsSome), m)
#endif
/// Check the attributes associated with a property, returning warnings and errors as data.
@@ -465,9 +470,9 @@ let MethInfoIsUnseen g (m: range) (ty: TType) minfo =
let isUnseenByHidingAttribute () =
#if !NO_TYPEPROVIDERS
- not (isObjTy g ty) &&
+ not (isObjTyAnyNullness g ty) &&
isAppTy g ty &&
- isObjTy g minfo.ApparentEnclosingType &&
+ isObjTyAnyNullness g minfo.ApparentEnclosingType &&
let tcref = tcrefOfAppTy g ty
match tcref.TypeReprInfo with
| TProvidedTypeRepr info ->
@@ -480,7 +485,7 @@ let MethInfoIsUnseen g (m: range) (ty: TType) minfo =
// just to look at the attributes on IL methods.
if tcref.IsILTycon then
tcref.ILTyconRawMetadata.CustomAttrs.AsArray()
- |> Array.exists (fun attr -> attr.Method.DeclaringType.TypeSpec.Name = typeof.FullName)
+ |> Array.exists (fun attr -> attr.Method.DeclaringType.TypeSpec.Name = !! typeof.FullName)
else
false
#else
@@ -541,7 +546,7 @@ let IsSecurityAttribute (g: TcGlobals) amap (casmap : IDictionary)
match casmap.TryGetValue tcs with
| true, c -> c
| _ ->
- let exists = ExistsInEntireHierarchyOfType (fun t -> typeEquiv g t (mkAppTy attr.TyconRef [])) g amap m AllowMultiIntfInstantiations.Yes (mkAppTy tcref [])
+ let exists = ExistsInEntireHierarchyOfType (fun t -> typeEquiv g t (mkWoNullAppTy attr.TyconRef [])) g amap m AllowMultiIntfInstantiations.Yes (mkWoNullAppTy tcref [])
casmap[tcs] <- exists
exists
| ValueNone -> false
diff --git a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs
index d3e9fb1d42..7efb505c9f 100644
--- a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs
+++ b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs
@@ -15,12 +15,12 @@ open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.TypeHierarchy
let mkIComparableCompareToSlotSig (g: TcGlobals) =
- TSlotSig("CompareTo", g.mk_IComparable_ty, [], [], [ [ TSlotParam(Some("obj"), g.obj_ty, false, false, false, []) ] ], Some g.int_ty)
+ TSlotSig("CompareTo", g.mk_IComparable_ty, [], [], [ [ TSlotParam(Some("obj"), g.obj_ty_withNulls, false, false, false, []) ] ], Some g.int_ty)
let mkGenericIComparableCompareToSlotSig (g: TcGlobals) ty =
TSlotSig(
"CompareTo",
- (mkAppTy g.system_GenericIComparable_tcref [ ty ]),
+ (mkWoNullAppTy g.system_GenericIComparable_tcref [ ty ]),
[],
[],
[ [ TSlotParam(Some("obj"), ty, false, false, false, []) ] ],
@@ -35,7 +35,7 @@ let mkIStructuralComparableCompareToSlotSig (g: TcGlobals) =
[],
[
[
- TSlotParam(None, (mkRefTupledTy g [ g.obj_ty; g.IComparer_ty ]), false, false, false, [])
+ TSlotParam(None, (mkRefTupledTy g [ g.obj_ty_withNulls; g.IComparer_ty ]), false, false, false, [])
]
],
Some g.int_ty
@@ -44,7 +44,7 @@ let mkIStructuralComparableCompareToSlotSig (g: TcGlobals) =
let mkGenericIEquatableEqualsSlotSig (g: TcGlobals) ty =
TSlotSig(
"Equals",
- (mkAppTy g.system_GenericIEquatable_tcref [ ty ]),
+ (mkWoNullAppTy g.system_GenericIEquatable_tcref [ ty ]),
[],
[],
[ [ TSlotParam(Some("obj"), ty, false, false, false, []) ] ],
@@ -59,7 +59,7 @@ let mkIStructuralEquatableEqualsSlotSig (g: TcGlobals) =
[],
[
[
- TSlotParam(None, (mkRefTupledTy g [ g.obj_ty; g.IEqualityComparer_ty ]), false, false, false, [])
+ TSlotParam(None, (mkRefTupledTy g [ g.obj_ty_withNulls; g.IEqualityComparer_ty ]), false, false, false, [])
]
],
Some g.bool_ty
@@ -76,10 +76,10 @@ let mkIStructuralEquatableGetHashCodeSlotSig (g: TcGlobals) =
)
let mkGetHashCodeSlotSig (g: TcGlobals) =
- TSlotSig("GetHashCode", g.obj_ty, [], [], [ [] ], Some g.int_ty)
+ TSlotSig("GetHashCode", g.obj_ty_noNulls, [], [], [ [] ], Some g.int_ty)
let mkEqualsSlotSig (g: TcGlobals) =
- TSlotSig("Equals", g.obj_ty, [], [], [ [ TSlotParam(Some("obj"), g.obj_ty, false, false, false, []) ] ], Some g.bool_ty)
+ TSlotSig("Equals", g.obj_ty_noNulls, [], [], [ [ TSlotParam(Some("obj"), g.obj_ty_withNulls, false, false, false, []) ] ], Some g.bool_ty)
//-------------------------------------------------------------------------
// Helpers associated with code-generation of comparison/hash augmentations
@@ -89,22 +89,25 @@ let mkThisTy g ty =
if isStructTy g ty then mkByrefTy g ty else ty
let mkCompareObjTy g ty =
- mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty g.int_ty)
+ mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty_withNulls g.int_ty)
let mkCompareTy g ty =
mkFunTy g (mkThisTy g ty) (mkFunTy g ty g.int_ty)
let mkCompareWithComparerTy g ty =
- mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty; g.IComparer_ty ]) g.int_ty)
+ mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty_withNulls; g.IComparer_ty ]) g.int_ty)
let mkEqualsObjTy g ty =
- mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty g.bool_ty)
+ mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty_withNulls g.bool_ty)
let mkEqualsTy g ty =
mkFunTy g (mkThisTy g ty) (mkFunTy g ty g.bool_ty)
let mkEqualsWithComparerTy g ty =
- mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty; g.IEqualityComparer_ty ]) g.bool_ty)
+ mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty_withNulls; g.IEqualityComparer_ty ]) g.bool_ty)
+
+let mkEqualsWithComparerTyExact g ty =
+ mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ ty; g.IEqualityComparer_ty ]) g.bool_ty)
let mkHashTy g ty =
mkFunTy g (mkThisTy g ty) (mkFunTy g g.unit_ty g.int_ty)
@@ -361,7 +364,7 @@ let mkRecdEquality g tcref (tycon: Tycon) =
thisv, thatv, expr
/// Build the equality implementation for a record type when parameterized by a comparer
-let mkRecdEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (thatv, thate) compe =
+let mkRecdEqualityWithComparer g tcref (tycon: Tycon) thise thatobje (thatv, thate) compe isexact =
let m = tycon.Range
let fields = tycon.AllInstanceFieldsAsList
let tinst, ty = mkMinimalTy g tcref
@@ -382,14 +385,21 @@ let mkRecdEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (
let expr = mkEqualsTestConjuncts g m (List.map mkTest fields)
let expr = mkBindThatAddr g m ty thataddrv thatv thate expr
- // will be optimized away if not necessary
- let expr = mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m)
+
+ let expr =
+ if isexact then
+ expr
+ else
+ mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m)
let expr =
if tycon.IsStructOrEnumTycon then
expr
else
- mkBindThisNullEquals g m thise thatobje expr
+ if isexact then
+ mkBindThatNullEquals g m thise thate expr
+ else
+ mkBindThisNullEquals g m thise thatobje expr
expr
@@ -414,7 +424,7 @@ let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) =
let cases =
[
- mkCase (DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), mbuilder.AddResultTarget(expr))
+ mkCase (DecisionTreeTest.IsInst(g.exn_ty, mkWoNullAppTy exnref []), mbuilder.AddResultTarget(expr))
]
let dflt = Some(mbuilder.AddResultTarget(mkFalse g m))
@@ -425,7 +435,7 @@ let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) =
thisv, thatv, expr
/// Build the equality implementation for an exception definition when parameterized by a comparer
-let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (thatv, thate) compe =
+let mkExnEqualityWithComparer g exnref (exnc: Tycon) thise thatobje (thatv, thate) compe isexact =
let m = exnc.Range
let thataddrv, thataddre = mkThatAddrLocal g m g.exn_ty
@@ -445,7 +455,7 @@ let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (t
let cases =
[
- mkCase (DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), mbuilder.AddResultTarget(expr))
+ mkCase (DecisionTreeTest.IsInst(g.exn_ty, mkWoNullAppTy exnref []), mbuilder.AddResultTarget(expr))
]
let dflt = mbuilder.AddResultTarget(mkFalse g m)
@@ -453,13 +463,21 @@ let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (t
mbuilder.Close(dtree, m, g.bool_ty)
let expr = mkBindThatAddr g m g.exn_ty thataddrv thatv thate expr
- let expr = mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m)
+
+ let expr =
+ if isexact then
+ expr
+ else
+ mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m)
let expr =
if exnc.IsStructOrEnumTycon then
expr
else
- mkBindThisNullEquals g m thise thatobje expr
+ if isexact then
+ mkBindThatNullEquals g m thise thate expr
+ else
+ mkBindThisNullEquals g m thise thatobje expr
expr
@@ -758,7 +776,7 @@ let mkUnionEquality g tcref (tycon: Tycon) =
thisv, thatv, expr
/// Build the equality implementation for a union type when parameterized by a comparer
-let mkUnionEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (thatv, thate) compe =
+let mkUnionEqualityWithComparer g tcref (tycon: Tycon) thise thatobje (thatv, thate) compe isexact =
let m = tycon.Range
let ucases = tycon.UnionCasesAsList
let tinst, ty = mkMinimalTy g tcref
@@ -846,13 +864,21 @@ let mkUnionEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje
(mkCompGenLet m thattagv (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) tagsEqTested)
let expr = mkBindThatAddr g m ty thataddrv thatv thate expr
- let expr = mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m)
+
+ let expr =
+ if isexact then
+ expr
+ else
+ mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m)
let expr =
if tycon.IsStructOrEnumTycon then
expr
else
- mkBindThisNullEquals g m thise thatobje expr
+ if isexact then
+ mkBindThatNullEquals g m thise thate expr
+ else
+ mkBindThisNullEquals g m thise thatobje expr
expr
@@ -1014,6 +1040,15 @@ let getAugmentationAttribs g (tycon: Tycon) =
TryFindFSharpBoolAttribute g g.attrib_CustomComparisonAttribute tycon.Attribs,
TryFindFSharpBoolAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs
+[]
+type EqualityWithComparerAugmentation =
+ {
+ GetHashCode: Val
+ GetHashCodeWithComparer: Val
+ EqualsWithComparer: Val
+ EqualsExactWithComparer: Val
+ }
+
let CheckAugmentationAttribs isImplementation g amap (tycon: Tycon) =
let m = tycon.Range
let attribs = getAugmentationAttribs g tycon
@@ -1096,7 +1131,7 @@ let CheckAugmentationAttribs isImplementation g amap (tycon: Tycon) =
hasNominalInterface g.system_GenericIComparable_tcref
let hasExplicitEquals =
- tycon.HasOverride g "Equals" [ g.obj_ty ]
+ tycon.HasOverride g "Equals" [ g.obj_ty_ambivalent ]
|| hasNominalInterface g.tcref_System_IStructuralEquatable
let hasExplicitGenericEquals = hasNominalInterface g.system_GenericIEquatable_tcref
@@ -1252,7 +1287,7 @@ let mkValSpecAux g m (tcref: TyconRef) ty vis slotsig methn valTy argData isGett
let mkValSpec g (tcref: TyconRef) ty vis slotsig methn valTy argData isGetter =
mkValSpecAux g tcref.Range tcref ty vis slotsig methn valTy argData isGetter true
-// Unlike other generated items, the 'IsABC' propeties are visible, not considered compiler-generated
+// Unlike other generated items, the 'IsABC' properties are visible, not considered compiler-generated
let mkImpliedValSpec g m tcref ty vis slotsig methn valTy argData isGetter =
let v = mkValSpecAux g m tcref ty vis slotsig methn valTy argData isGetter false
v.SetIsImplied()
@@ -1287,7 +1322,7 @@ let MakeValsForCompareWithComparerAugmentation g (tcref: TyconRef) =
let MakeValsForEqualsAugmentation g (tcref: TyconRef) =
let m = tcref.Range
let _, ty = mkMinimalTy g tcref
- let vis = tcref.TypeReprAccessibility
+ let vis = tcref.Accessibility
let tps = tcref.Typars m
let objEqualsVal =
@@ -1312,13 +1347,13 @@ let MakeValsForEqualsAugmentation g (tcref: TyconRef) =
let MakeValsForEqualityWithComparerAugmentation g (tcref: TyconRef) =
let _, ty = mkMinimalTy g tcref
- let vis = tcref.TypeReprAccessibility
+ let vis = tcref.Accessibility
let tps = tcref.Typars tcref.Range
let objGetHashCodeVal =
mkValSpec g tcref ty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g ty)) unitArg false
- let withcGetHashCodeVal =
+ let withGetHashCodeVal =
mkValSpec
g
tcref
@@ -1330,10 +1365,28 @@ let MakeValsForEqualityWithComparerAugmentation g (tcref: TyconRef) =
unaryArg
false
- let withcEqualsVal =
+ let withEqualsVal =
mkValSpec g tcref ty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g ty)) tupArg false
- objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal
+ let withEqualsExactWithComparer =
+ let vis = TAccess (updateSyntaxAccessForCompPath (vis.CompilationPaths) SyntaxAccess.Public)
+ mkValSpec
+ g
+ tcref
+ ty
+ vis
+ // This doesn't implement any interface.
+ None
+ "Equals"
+ (tps +-> (mkEqualsWithComparerTyExact g ty))
+ tupArg
+ false
+ {
+ GetHashCode = objGetHashCodeVal
+ GetHashCodeWithComparer = withGetHashCodeVal
+ EqualsWithComparer = withEqualsVal
+ EqualsExactWithComparer = withEqualsExactWithComparer
+ }
let MakeBindingsForCompareAugmentation g (tycon: Tycon) =
let tcref = mkLocalTyconRef tycon
@@ -1351,13 +1404,13 @@ let MakeBindingsForCompareAugmentation g (tycon: Tycon) =
let tinst, ty = mkMinimalTy g tcref
let thisv, thise = mkThisVar g m ty
- let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty
+ let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty_ambivalent
let comparee =
if isUnitTy g ty then
mkZero g m
else
- let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty)
+ let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty_ambivalent)
mkApps g ((exprForValRef m vref2, vref2.Type), (if isNil tinst then [] else [ tinst ]), [ thise; thate ], m)
@@ -1394,8 +1447,8 @@ let MakeBindingsForCompareWithComparerAugmentation g (tycon: Tycon) =
let compv, compe = mkCompGenLocal m "comp" g.IComparer_ty
let thisv, thise = mkThisVar g m ty
- let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty
- let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty)
+ let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty_ambivalent
+ let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty_ambivalent)
let rhs =
let comparee = comparef g tcref tycon (thisv, thise) (thatobjv, thate) compe
@@ -1419,7 +1472,7 @@ let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon
let mkStructuralEquatable hashf equalsf =
match tycon.GeneratedHashAndEqualsWithComparerValues with
| None -> []
- | Some(objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal) ->
+ | Some(objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal, withcEqualsExactValOption) ->
// build the hash rhs
let withcGetHashCodeExpr =
@@ -1451,12 +1504,33 @@ let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon
// build the equals rhs
let withcEqualsExpr =
- let _tinst, ty = mkMinimalTy g tcref
+ let tinst, ty = mkMinimalTy g tcref
let thisv, thise = mkThisVar g m ty
- let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty
+ let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty_ambivalent
let thatv, thate = mkCompGenLocal m "that" ty
let compv, compe = mkCompGenLocal m "comp" g.IEqualityComparer_ty
- let equalse = equalsf g tcref tycon (thisv, thise) thatobje (thatv, thate) compe
+
+ // if the new overload is available, use it
+ // otherwise, generate the whole equals thing
+ let equalse =
+ match withcEqualsExactValOption with
+ | Some withcEqualsExactVal ->
+ mkIsInstConditional
+ g
+ m
+ ty
+ thatobje
+ thatv
+ (mkApps
+ g
+ ((exprForValRef m withcEqualsExactVal, withcEqualsExactVal.Type),
+ (if isNil tinst then [] else [ tinst ]),
+ [ thise; mkRefTupled g m [ thate; compe ] [ty; g.IEqualityComparer_ty ] ],
+ m))
+ (mkFalse g m)
+ | None ->
+ equalsf g tcref tycon thise thatobje (thatv, thate) compe false
+
mkMultiLambdas g m tps [ [ thisv ]; [ thatobjv; compv ] ] (equalse, g.bool_ty)
let objGetHashCodeExpr =
@@ -1481,9 +1555,22 @@ let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon
mkLambdas g m tps [ thisv; unitv ] (hashe, g.int_ty)
+ let withcEqualsExactExpr =
+ let _tinst, ty = mkMinimalTy g tcref
+ let thisv, thise = mkThisVar g m ty
+ let thatv, thate = mkCompGenLocal m "obj" ty
+ let compv, compe = mkCompGenLocal m "comp" g.IEqualityComparer_ty
+
+ let equalse = equalsf g tcref tycon thise thate (thatv, thate) compe true
+
+ mkMultiLambdas g m tps [ [ thisv ]; [ thatv; compv ] ] (equalse, g.bool_ty)
+
[
(mkCompGenBind withcGetHashCodeVal.Deref withcGetHashCodeExpr)
(mkCompGenBind objGetHashCodeVal.Deref objGetHashCodeExpr)
+ match withcEqualsExactValOption with
+ | Some withcEqualsExactVal -> mkCompGenBind withcEqualsExactVal.Deref withcEqualsExactExpr
+ | None -> ()
(mkCompGenBind withcEqualsVal.Deref withcEqualsExpr)
]
@@ -1515,7 +1602,7 @@ let MakeBindingsForEqualsAugmentation (g: TcGlobals) (tycon: Tycon) =
let tinst, ty = mkMinimalTy g tcref
let thisv, thise = mkThisVar g m ty
- let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty
+ let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty_ambivalent
let equalse =
if isUnitTy g ty then
@@ -1595,7 +1682,7 @@ let MakeValsForUnionAugmentation g (tcref: TyconRef) =
tcref.UnionCasesAsList
|> List.map (fun uc ->
- // Unlike other generated items, the 'IsABC' propeties are visible, not considered compiler-generated
+ // Unlike other generated items, the 'IsABC' properties are visible, not considered compiler-generated
let v =
mkImpliedValSpec g uc.Range tcref tmty vis None ("get_Is" + uc.CompiledName) (tps +-> (mkIsCaseTy g tmty)) unitArg true
diff --git a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi
index 5fa185c046..4a7d74311b 100644
--- a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi
@@ -7,6 +7,13 @@ open FSharp.Compiler
open FSharp.Compiler.TypedTree
open FSharp.Compiler.TcGlobals
+[]
+type EqualityWithComparerAugmentation =
+ { GetHashCode: Val
+ GetHashCodeWithComparer: Val
+ EqualsWithComparer: Val
+ EqualsExactWithComparer: Val }
+
val CheckAugmentationAttribs: bool -> TcGlobals -> Import.ImportMap -> Tycon -> unit
val TyconIsCandidateForAugmentationWithCompare: TcGlobals -> Tycon -> bool
@@ -21,7 +28,7 @@ val MakeValsForCompareWithComparerAugmentation: TcGlobals -> TyconRef -> Val
val MakeValsForEqualsAugmentation: TcGlobals -> TyconRef -> Val * Val
-val MakeValsForEqualityWithComparerAugmentation: TcGlobals -> TyconRef -> Val * Val * Val
+val MakeValsForEqualityWithComparerAugmentation: TcGlobals -> TyconRef -> EqualityWithComparerAugmentation
val MakeBindingsForCompareAugmentation: TcGlobals -> Tycon -> Binding list
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckBasics.fs b/src/fcs-fable/src/Compiler/Checking/CheckBasics.fs
index bbfa5557b2..7cbca970cc 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckBasics.fs
+++ b/src/fcs-fable/src/Compiler/Checking/CheckBasics.fs
@@ -8,6 +8,7 @@ open System.Collections.Generic
open FSharp.Compiler.Diagnostics
open Internal.Utilities.Library
open Internal.Utilities.Library.Extras
+open Internal.Utilities.Collections
open FSharp.Compiler
open FSharp.Compiler.AccessibilityLogic
open FSharp.Compiler.CompilerGlobalState
@@ -136,7 +137,7 @@ type CtorInfo =
/// A handle to the boolean ref cell to hold success of initialized 'this' for 'type X() as x = ...' constructs
safeInitInfo: SafeInitData
- /// Is the an implicit constructor or an explicit one?
+ /// Is there an implicit constructor or an explicit one?
ctorIsImplicit: bool
}
@@ -243,6 +244,10 @@ type TcEnv =
// Do we lay down an implicit debug point?
eIsControlFlow: bool
+
+ // In order to avoid checking implicit-yield expressions multiple times, we cache the resulting checked expressions.
+ // This avoids exponential behavior in the type checker when nesting implicit-yield expressions.
+ eCachedImplicitYieldExpressions : HashMultiMap
}
member tenv.DisplayEnv = tenv.eNameResEnv.DisplayEnv
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi b/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi
index e3ad581cb6..179752c394 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi
@@ -6,6 +6,7 @@ open System.Collections.Concurrent
open System.Collections.Generic
open FSharp.Compiler.Diagnostics
open Internal.Utilities.Library
+open Internal.Utilities.Collections
open FSharp.Compiler.AccessibilityLogic
open FSharp.Compiler.CompilerGlobalState
open FSharp.Compiler.ConstraintSolver
@@ -46,7 +47,7 @@ type CtorInfo =
/// A handle to the boolean ref cell to hold success of initialized 'this' for 'type X() as x = ...' constructs
safeInitInfo: SafeInitData
- /// Is the an implicit constructor or an explicit one?
+ /// Is there an implicit constructor or an explicit one?
ctorIsImplicit: bool
}
@@ -128,6 +129,10 @@ type TcEnv =
eLambdaArgInfos: ArgReprInfo list list
eIsControlFlow: bool
+
+ // In order to avoid checking implicit-yield expressions multiple times, we cache the resulting checked expressions.
+ // This avoids exponential behavior in the type checker when nesting implicit-yield expressions.
+ eCachedImplicitYieldExpressions: HashMultiMap
}
member DisplayEnv: DisplayEnv
@@ -192,7 +197,7 @@ type TcPatPhase2Input =
/// Represents the context flowed left-to-right through pattern checking
type TcPatLinearEnv = TcPatLinearEnv of tpenv: UnscopedTyparEnv * names: NameMap * takenNames: Set
-/// Represents the flags passsed to TcPat regarding the binding location
+/// Represents the flags passed to TcPat regarding the binding location
type TcPatValFlags =
| TcPatValFlags of
inlineFlag: ValInline *
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs b/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs
deleted file mode 100644
index 1394b2c1a9..0000000000
--- a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs
+++ /dev/null
@@ -1,2362 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-/// The typechecker. Left-to-right constrained type checking
-/// with generalization at appropriate points.
-module internal FSharp.Compiler.CheckComputationExpressions
-
-open Internal.Utilities.Library
-open FSharp.Compiler.AccessibilityLogic
-open FSharp.Compiler.AttributeChecking
-open FSharp.Compiler.CheckExpressions
-open FSharp.Compiler.CheckBasics
-open FSharp.Compiler.ConstraintSolver
-open FSharp.Compiler.DiagnosticsLogger
-open FSharp.Compiler.Features
-open FSharp.Compiler.Infos
-open FSharp.Compiler.InfoReader
-open FSharp.Compiler.NameResolution
-open FSharp.Compiler.PatternMatchCompilation
-open FSharp.Compiler.Syntax.PrettyNaming
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open FSharp.Compiler.SyntaxTreeOps
-open FSharp.Compiler.Text
-open FSharp.Compiler.Text.Range
-open FSharp.Compiler.TypedTree
-open FSharp.Compiler.TypedTreeOps
-
-type cenv = TcFileState
-
-/// Used to flag if this is the first or a sebsequent translation pass through a computation expression
-type CompExprTranslationPass = Initial | Subsequent
-
-/// Used to flag if computation expression custom operations are allowed in a given context
-type CustomOperationsMode = Allowed | Denied
-
-let TryFindIntrinsicOrExtensionMethInfo collectionSettings (cenv: cenv) (env: TcEnv) m ad nm ty =
- AllMethInfosOfTypeInScope collectionSettings cenv.infoReader env.NameEnv (Some nm) ad IgnoreOverrides m ty
-
-/// Ignores an attribute
-let IgnoreAttribute _ = None
-
-let (|ExprAsPat|_|) (f: SynExpr) =
- match f with
- | SingleIdent v1 | SynExprParen(SingleIdent v1, _, _, _) -> Some (mkSynPatVar None v1)
- | SynExprParen(SynExpr.Tuple (false, elems, commas, _), _, _, _) ->
- let elems = elems |> List.map (|SingleIdent|_|)
- if elems |> List.forall (fun x -> x.IsSome) then
- Some (SynPat.Tuple(false, (elems |> List.map (fun x -> mkSynPatVar None x.Value)), commas, f.Range))
- else
- None
- | _ -> None
-
-// For join clauses that join on nullable, we syntactically insert the creation of nullable values on the appropriate side of the condition,
-// then pull the syntax apart again
-let (|JoinRelation|_|) cenv env (expr: SynExpr) =
- let m = expr.Range
- let ad = env.eAccessRights
-
- let isOpName opName vref s =
- (s = opName) &&
- match ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.eNameResEnv TypeNameResolutionInfo.Default [ident(opName, m)] None with
- | Result (_, Item.Value vref2, []) -> valRefEq cenv.g vref vref2
- | _ -> false
-
- match expr with
- | BinOpExpr(opId, a, b) when isOpName opNameEquals cenv.g.equals_operator_vref opId.idText -> Some (a, b)
-
- | BinOpExpr(opId, a, b) when isOpName opNameEqualsNullable cenv.g.equals_nullable_operator_vref opId.idText ->
-
- let a = SynExpr.App (ExprAtomicFlag.Atomic, false, mkSynLidGet a.Range [MangledGlobalName;"System"] "Nullable", a, a.Range)
- Some (a, b)
-
- | BinOpExpr(opId, a, b) when isOpName opNameNullableEquals cenv.g.nullable_equals_operator_vref opId.idText ->
-
- let b = SynExpr.App (ExprAtomicFlag.Atomic, false, mkSynLidGet b.Range [MangledGlobalName;"System"] "Nullable", b, b.Range)
- Some (a, b)
-
- | BinOpExpr(opId, a, b) when isOpName opNameNullableEqualsNullable cenv.g.nullable_equals_nullable_operator_vref opId.idText ->
-
- Some (a, b)
-
- | _ -> None
-
-let elimFastIntegerForLoop (spFor, spTo, id, start: SynExpr, dir, finish: SynExpr, innerExpr, m: range) =
- let mOp = (unionRanges start.Range finish.Range).MakeSynthetic()
- let pseudoEnumExpr =
- if dir then mkSynInfix mOp start ".." finish
- else mkSynTrifix mOp ".. .." start (SynExpr.Const (SynConst.Int32 -1, mOp)) finish
- SynExpr.ForEach (spFor, spTo, SeqExprOnly false, true, mkSynPatVar None id, pseudoEnumExpr, innerExpr, m)
-
-/// Check if a computation or sequence expression is syntactically free of 'yield' (though not yield!)
-let YieldFree (cenv: cenv) expr =
- if cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield then
-
- // Implement yield free logic for F# Language including the LanguageFeature.ImplicitYield
- let rec YieldFree expr =
- match expr with
- | SynExpr.Sequential (expr1=expr1; expr2=expr2) ->
- YieldFree expr1 && YieldFree expr2
-
- | SynExpr.IfThenElse (thenExpr=thenExpr; elseExpr=elseExprOpt) ->
- YieldFree thenExpr && Option.forall YieldFree elseExprOpt
-
- | SynExpr.TryWith (tryExpr=body; withCases=clauses) ->
- YieldFree body && clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
-
- | SynExpr.Match (clauses=clauses) | SynExpr.MatchBang (clauses=clauses) ->
- clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
-
- | SynExpr.For (doBody=body)
- | SynExpr.TryFinally (tryExpr=body)
- | SynExpr.LetOrUse (body=body)
- | SynExpr.While (doExpr=body)
- | SynExpr.WhileBang (doExpr=body)
- | SynExpr.ForEach (bodyExpr=body) ->
- YieldFree body
-
- | SynExpr.LetOrUseBang(body=body) ->
- YieldFree body
-
- | SynExpr.YieldOrReturn(flags=(true, _)) -> false
-
- | _ -> true
-
- YieldFree expr
- else
- // Implement yield free logic for F# Language without the LanguageFeature.ImplicitYield
- let rec YieldFree expr =
- match expr with
- | SynExpr.Sequential (expr1=expr1; expr2=expr2) ->
- YieldFree expr1 && YieldFree expr2
-
- | SynExpr.IfThenElse (thenExpr=thenExpr; elseExpr=elseExprOpt) ->
- YieldFree thenExpr && Option.forall YieldFree elseExprOpt
-
- | SynExpr.TryWith (tryExpr=e1; withCases=clauses) ->
- YieldFree e1 && clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
-
- | SynExpr.Match (clauses=clauses) | SynExpr.MatchBang (clauses=clauses) ->
- clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
-
- | SynExpr.For (doBody=body)
- | SynExpr.TryFinally (tryExpr=body)
- | SynExpr.LetOrUse (body=body)
- | SynExpr.While (doExpr=body)
- | SynExpr.WhileBang (doExpr=body)
- | SynExpr.ForEach (bodyExpr=body) ->
- YieldFree body
-
- | SynExpr.LetOrUseBang _
- | SynExpr.YieldOrReturnFrom _
- | SynExpr.YieldOrReturn _
- | SynExpr.ImplicitZero _
- | SynExpr.Do _ -> false
-
- | _ -> true
-
- YieldFree expr
-
-
-/// Determine if a syntactic expression inside 'seq { ... }' or '[...]' counts as a "simple sequence
-/// of semicolon separated values". For example [1;2;3].
-/// 'acceptDeprecated' is true for the '[ ... ]' case, where we allow the syntax '[ if g then t else e ]' but ask it to be parenthesized
-///
-let (|SimpleSemicolonSequence|_|) cenv acceptDeprecated cexpr =
-
- let IsSimpleSemicolonSequenceElement expr =
- match expr with
- | SynExpr.IfThenElse _ when acceptDeprecated && YieldFree cenv expr -> true
- | SynExpr.IfThenElse _
- | SynExpr.TryWith _
- | SynExpr.Match _
- | SynExpr.For _
- | SynExpr.ForEach _
- | SynExpr.TryFinally _
- | SynExpr.YieldOrReturnFrom _
- | SynExpr.YieldOrReturn _
- | SynExpr.LetOrUse _
- | SynExpr.Do _
- | SynExpr.MatchBang _
- | SynExpr.LetOrUseBang _
- | SynExpr.While _
- | SynExpr.WhileBang _ -> false
- | _ -> true
-
- let rec TryGetSimpleSemicolonSequenceOfComprehension expr acc =
- match expr with
- | SynExpr.Sequential (_, true, e1, e2, _) ->
- if IsSimpleSemicolonSequenceElement e1 then
- TryGetSimpleSemicolonSequenceOfComprehension e2 (e1 :: acc)
- else
- None
- | _ ->
- if IsSimpleSemicolonSequenceElement expr then
- Some(List.rev (expr :: acc))
- else
- None
-
- TryGetSimpleSemicolonSequenceOfComprehension cexpr []
-
-let RecordNameAndTypeResolutions cenv env tpenv expr =
- // This function is motivated by cases like
- // query { for ... join(for x in f(). }
- // where there is incomplete code in a query, and we are current just dropping a piece of the AST on the floor (above, the bit inside the 'join').
- //
- // The problem with dropping the AST on the floor is that we get no captured resolutions, which means no Intellisense/QuickInfo/ParamHelp.
- //
- // We check this AST-fragment, to get resolutions captured.
- //
- // This may have effects from typechecking, producing side-effects on the typecheck environment.
- suppressErrorReporting (fun () ->
- try
- ignore(TcExprOfUnknownType cenv env tpenv expr)
- with _ ->
- ())
-
-/// Used for all computation expressions except sequence expressions
-let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhole, interpExpr: Expr, builderTy, comp: SynExpr) =
- let overallTy = overallTy.Commit
-
- let g = cenv.g
- let ad = env.eAccessRights
-
- let mkSynDelay2 (e: SynExpr) = mkSynDelay (e.Range.MakeSynthetic()) e
-
- let builderValName = CompilerGeneratedName "builder"
- let mBuilderVal = interpExpr.Range
-
- // Give bespoke error messages for the FSharp.Core "query" builder
- let isQuery =
- match stripDebugPoints interpExpr with
- // An unparameterized custom builder, e.g., `query`, `async`.
- | Expr.Val (vref, _, m)
- // A parameterized custom builder, e.g., `builder<…>`, `builder ()`.
- | Expr.App (funcExpr = Expr.Val (vref, _, m)) ->
- let item = Item.CustomBuilder (vref.DisplayName, vref)
- CallNameResolutionSink cenv.tcSink (m, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
- valRefEq cenv.g vref cenv.g.query_value_vref
- | _ -> false
-
- /// Make a builder.Method(...) call
- let mkSynCall nm (m: range) args =
- let m = m.MakeSynthetic() // Mark as synthetic so the language service won't pick it up.
- let args =
- match args with
- | [] -> SynExpr.Const (SynConst.Unit, m)
- | [arg] -> SynExpr.Paren (SynExpr.Paren (arg, range0, None, m), range0, None, m)
- | args -> SynExpr.Paren (SynExpr.Tuple (false, args, [], m), range0, None, m)
-
- let builderVal = mkSynIdGet m builderValName
- mkSynApp1 (SynExpr.DotGet (builderVal, range0, SynLongIdent([mkSynId m nm], [], [None]), m)) args m
-
- let hasMethInfo nm = TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad nm builderTy |> isNil |> not
-
- let sourceMethInfo = TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad "Source" builderTy
-
- // Optionally wrap sources of "let!", "yield!", "use!" in "query.Source"
- let mkSourceExpr callExpr =
- match sourceMethInfo with
- | [] -> callExpr
- | _ -> mkSynCall "Source" callExpr.Range [callExpr]
-
- let mkSourceExprConditional isFromSource callExpr =
- if isFromSource then mkSourceExpr callExpr else callExpr
-
- /// Decide if the builder is an auto-quote builder
- let isAutoQuote = hasMethInfo "Quote"
-
- let customOperationMethods =
- AllMethInfosOfTypeInScope ResultCollectionSettings.AllResults cenv.infoReader env.NameEnv None ad IgnoreOverrides mBuilderVal builderTy
- |> List.choose (fun methInfo ->
- if not (IsMethInfoAccessible cenv.amap mBuilderVal ad methInfo) then None else
- let nameSearch =
- TryBindMethInfoAttribute cenv.g mBuilderVal cenv.g.attrib_CustomOperationAttribute methInfo
- IgnoreAttribute // We do not respect this attribute for IL methods
- (function Attrib(_, _, [ AttribStringArg msg ], _, _, _, _) -> Some msg | _ -> None)
- IgnoreAttribute // We do not respect this attribute for provided methods
-
- match nameSearch with
- | None -> None
- | Some nm ->
- let joinConditionWord =
- TryBindMethInfoAttribute cenv.g mBuilderVal cenv.g.attrib_CustomOperationAttribute methInfo
- IgnoreAttribute // We do not respect this attribute for IL methods
- (function Attrib(_, _, _, ExtractAttribNamedArg "JoinConditionWord" (AttribStringArg s), _, _, _) -> Some s | _ -> None)
- IgnoreAttribute // We do not respect this attribute for provided methods
-
- let flagSearch (propName: string) =
- TryBindMethInfoAttribute cenv.g mBuilderVal cenv.g.attrib_CustomOperationAttribute methInfo
- IgnoreAttribute // We do not respect this attribute for IL methods
- (function Attrib(_, _, _, ExtractAttribNamedArg propName (AttribBoolArg b), _, _, _) -> Some b | _ -> None)
- IgnoreAttribute // We do not respect this attribute for provided methods
-
- let maintainsVarSpaceUsingBind = defaultArg (flagSearch "MaintainsVariableSpaceUsingBind") false
- let maintainsVarSpace = defaultArg (flagSearch "MaintainsVariableSpace") false
- let allowInto = defaultArg (flagSearch "AllowIntoPattern") false
- let isLikeZip = defaultArg (flagSearch "IsLikeZip") false
- let isLikeJoin = defaultArg (flagSearch "IsLikeJoin") false
- let isLikeGroupJoin = defaultArg (flagSearch "IsLikeGroupJoin") false
-
- Some (nm, maintainsVarSpaceUsingBind, maintainsVarSpace, allowInto, isLikeZip, isLikeJoin, isLikeGroupJoin, joinConditionWord, methInfo))
-
- let customOperationMethodsIndexedByKeyword =
- if cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations then
- customOperationMethods
- |> Seq.groupBy (fun (nm, _, _, _, _, _, _, _, _) -> nm)
- |> Seq.map (fun (nm, group) ->
- (nm,
- group
- |> Seq.toList))
- else
- customOperationMethods
- |> Seq.groupBy (fun (nm, _, _, _, _, _, _, _, _) -> nm)
- |> Seq.map (fun (nm, g) -> (nm, Seq.toList g))
- |> dict
-
- // Check for duplicates by method name (keywords and method names must be 1:1)
- let customOperationMethodsIndexedByMethodName =
- if cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations then
- customOperationMethods
- |> Seq.groupBy (fun (_, _, _, _, _, _, _, _, methInfo) -> methInfo.LogicalName)
- |> Seq.map (fun (nm, group) ->
- (nm,
- group
- |> Seq.toList))
- else
- customOperationMethods
- |> Seq.groupBy (fun (_, _, _, _, _, _, _, _, methInfo) -> methInfo.LogicalName)
- |> Seq.map (fun (nm, g) -> (nm, Seq.toList g))
- |> dict
-
- /// Decide if the identifier represents a use of a custom query operator
- let tryGetDataForCustomOperation (nm: Ident) =
- let isOpDataCountAllowed opDatas =
- match opDatas with
- | [_] -> true
- | _ :: _ -> cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations
- | _ -> false
-
- match customOperationMethodsIndexedByKeyword.TryGetValue nm.idText with
- | true, opDatas when isOpDataCountAllowed opDatas ->
- for opData in opDatas do
- let opName, maintainsVarSpaceUsingBind, maintainsVarSpace, _allowInto, isLikeZip, isLikeJoin, isLikeGroupJoin, _joinConditionWord, methInfo = opData
- if (maintainsVarSpaceUsingBind && maintainsVarSpace) || (isLikeZip && isLikeJoin) || (isLikeZip && isLikeGroupJoin) || (isLikeJoin && isLikeGroupJoin) then
- errorR(Error(FSComp.SR.tcCustomOperationInvalid opName, nm.idRange))
- if not (cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations) then
- match customOperationMethodsIndexedByMethodName.TryGetValue methInfo.LogicalName with
- | true, [_] -> ()
- | _ -> errorR(Error(FSComp.SR.tcCustomOperationMayNotBeOverloaded nm.idText, nm.idRange))
- Some opDatas
- | true, opData :: _ -> errorR(Error(FSComp.SR.tcCustomOperationMayNotBeOverloaded nm.idText, nm.idRange)); Some [opData]
- | _ -> None
-
- /// Decide if the identifier represents a use of a custom query operator
- let hasCustomOperations () = if isNil customOperationMethods then CustomOperationsMode.Denied else CustomOperationsMode.Allowed
-
- let isCustomOperation nm = tryGetDataForCustomOperation nm |> Option.isSome
-
- let customOperationCheckValidity m f opDatas =
- let vs = opDatas |> List.map f
- let v0 = vs[0]
- let opName, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo = opDatas[0]
- if not (List.allEqual vs) then
- errorR(Error(FSComp.SR.tcCustomOperationInvalid opName, m))
- v0
-
- // Check for the MaintainsVariableSpace on custom operation
- let customOperationMaintainsVarSpace (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | None -> false
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, _maintainsVarSpaceUsingBind, maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) -> maintainsVarSpace)
-
- let customOperationMaintainsVarSpaceUsingBind (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | None -> false
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) -> maintainsVarSpaceUsingBind)
-
- let customOperationIsLikeZip (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | None -> false
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) -> isLikeZip)
-
- let customOperationIsLikeJoin (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | None -> false
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) -> isLikeJoin)
-
- let customOperationIsLikeGroupJoin (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | None -> false
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, isLikeGroupJoin, _joinConditionWord, _methInfo) -> isLikeGroupJoin)
-
- let customOperationJoinConditionWord (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, joinConditionWord, _methInfo) -> joinConditionWord)
- |> function None -> "on" | Some v -> v
- | _ -> "on"
-
- let customOperationAllowsInto (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | None -> false
- | Some opDatas ->
- opDatas |> customOperationCheckValidity nm.idRange (fun (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) -> allowInto)
-
- let customOpUsageText nm =
- match tryGetDataForCustomOperation nm with
- | Some ((_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, isLikeZip, isLikeJoin, isLikeGroupJoin, _joinConditionWord, _methInfo) :: _) ->
- if isLikeGroupJoin then
- Some (FSComp.SR.customOperationTextLikeGroupJoin(nm.idText, customOperationJoinConditionWord nm, customOperationJoinConditionWord nm))
- elif isLikeJoin then
- Some (FSComp.SR.customOperationTextLikeJoin(nm.idText, customOperationJoinConditionWord nm, customOperationJoinConditionWord nm))
- elif isLikeZip then
- Some (FSComp.SR.customOperationTextLikeZip(nm.idText))
- else
- None
- | _ -> None
-
- /// Inside the 'query { ... }' use a modified name environment that contains fake 'CustomOperation' entries
- /// for all custom operations. This adds them to the completion lists and prevents them being used as values inside
- /// the query.
- let env =
- if List.isEmpty customOperationMethods then env else
- { env with
- eNameResEnv =
- (env.eNameResEnv, customOperationMethods)
- ||> Seq.fold (fun nenv (nm, _, _, _, _, _, _, _, methInfo) ->
- AddFakeNameToNameEnv nm nenv (Item.CustomOperation (nm, (fun () -> customOpUsageText (ident (nm, mBuilderVal))), Some methInfo))) }
-
- // Environment is needed for completions
- CallEnvSink cenv.tcSink (comp.Range, env.NameEnv, ad)
-
- let tryGetArgAttribsForCustomOperator (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | Some argInfos ->
- argInfos
- |> List.map (fun (_nm, __maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, methInfo) ->
- match methInfo.GetParamAttribs(cenv.amap, mWhole) with
- | [curriedArgInfo] -> Some (List.map fst curriedArgInfo) // one for the actual argument group
- | _ -> None)
- |> Some
- | _ -> None
-
- let tryGetArgInfosForCustomOperator (nm: Ident) =
- match tryGetDataForCustomOperation nm with
- | Some argInfos ->
- argInfos
- |> List.map (fun (_nm, __maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, methInfo) ->
- match methInfo with
- | FSMeth(_, _, vref, _) ->
- match ArgInfosOfMember cenv.g vref with
- | [curriedArgInfo] -> Some curriedArgInfo
- | _ -> None
- | _ -> None)
- |> Some
- | _ -> None
-
- let tryExpectedArgCountForCustomOperator (nm: Ident) =
- match tryGetArgAttribsForCustomOperator nm with
- | None -> None
- | Some argInfosForOverloads ->
- let nums = argInfosForOverloads |> List.map (function None -> -1 | Some argInfos -> List.length argInfos)
-
- // Prior to 'OverloadsForCustomOperations' we count exact arguments.
- //
- // With 'OverloadsForCustomOperations' we don't compute an exact expected argument count
- // if any arguments are optional, out or ParamArray.
- let isSpecial =
- if cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations then
- argInfosForOverloads |> List.exists (fun info ->
- match info with
- | None -> false
- | Some args ->
- args |> List.exists (fun (ParamAttribs(isParamArrayArg, _isInArg, isOutArg, optArgInfo, _callerInfo, _reflArgInfo)) -> isParamArrayArg || isOutArg || optArgInfo.IsOptional))
- else
- false
-
- if not isSpecial && nums |> List.forall (fun v -> v >= 0 && v = nums[0]) then
- Some (max (nums[0] - 1) 0) // drop the computation context argument
- else
- None
-
- // Check for the [] attribute on an argument position
- let isCustomOperationProjectionParameter i (nm: Ident) =
- match tryGetArgInfosForCustomOperator nm with
- | None -> false
- | Some argInfosForOverloads ->
- let vs =
- argInfosForOverloads |> List.map (function
- | None -> false
- | Some argInfos ->
- i < argInfos.Length &&
- let _, argInfo = List.item i argInfos
- HasFSharpAttribute cenv.g cenv.g.attrib_ProjectionParameterAttribute argInfo.Attribs)
- if List.allEqual vs then vs[0]
- else
- let opDatas = (tryGetDataForCustomOperation nm).Value
- let opName, _, _, _, _, _, _, _j, _ = opDatas[0]
- errorR(Error(FSComp.SR.tcCustomOperationInvalid opName, nm.idRange))
- false
-
- let (|ForEachThen|_|) synExpr =
- match synExpr with
- | SynExpr.ForEach (_spFor, _spIn, SeqExprOnly false, isFromSource, pat1, expr1, SynExpr.Sequential (_, true, clause, rest, _), _) ->
- Some (isFromSource, pat1, expr1, clause, rest)
- | _ -> None
-
- let (|CustomOpId|_|) predicate synExpr =
- match synExpr with
- | SingleIdent nm when isCustomOperation nm && predicate nm -> Some nm
- | _ -> None
-
- // e1 in e2 ('in' is parsed as 'JOIN_IN')
- let (|InExpr|_|) synExpr =
- match synExpr with
- | SynExpr.JoinIn (e1, _, e2, mApp) -> Some (e1, e2, mApp)
- | _ -> None
-
- // e1 on e2 (note: 'on' is the 'JoinConditionWord')
- let (|OnExpr|_|) nm synExpr =
- match tryGetDataForCustomOperation nm with
- | None -> None
- | Some _ ->
- match synExpr with
- | SynExpr.App (_, _, SynExpr.App (_, _, e1, SingleIdent opName, _), e2, _) when opName.idText = customOperationJoinConditionWord nm ->
- let item = Item.CustomOperation (opName.idText, (fun () -> None), None)
- CallNameResolutionSink cenv.tcSink (opName.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.AccessRights)
- Some (e1, e2)
- | _ -> None
-
- // e1 into e2
- let (|IntoSuffix|_|) (e: SynExpr) =
- match e with
- | SynExpr.App (_, _, SynExpr.App (_, _, x, SingleIdent nm2, _), ExprAsPat intoPat, _) when nm2.idText = CustomOperations.Into ->
- Some (x, nm2.idRange, intoPat)
- | _ ->
- None
-
- let arbPat (m: range) = mkSynPatVar None (mkSynId (m.MakeSynthetic()) "_missingVar")
-
- let MatchIntoSuffixOrRecover alreadyGivenError (nm: Ident) synExpr =
- match synExpr with
- | IntoSuffix (x, intoWordRange, intoPat) ->
- // record the "into" as a custom operation for colorization
- let item = Item.CustomOperation ("into", (fun () -> None), None)
- CallNameResolutionSink cenv.tcSink (intoWordRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
- (x, intoPat, alreadyGivenError)
- | _ ->
- if not alreadyGivenError then
- errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- (synExpr, arbPat synExpr.Range, true)
-
- let MatchOnExprOrRecover alreadyGivenError nm (onExpr: SynExpr) =
- match onExpr with
- | OnExpr nm (innerSource, SynExprParen(keySelectors, _, _, _)) ->
- (innerSource, keySelectors)
- | _ ->
- if not alreadyGivenError then
- suppressErrorReporting (fun () -> TcExprOfUnknownType cenv env tpenv onExpr) |> ignore
- errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- (arbExpr("_innerSource", onExpr.Range), mkSynBifix onExpr.Range "=" (arbExpr("_keySelectors", onExpr.Range)) (arbExpr("_keySelector2", onExpr.Range)))
-
- let JoinOrGroupJoinOp detector synExpr =
- match synExpr with
- | SynExpr.App (_, _, CustomOpId detector nm, ExprAsPat innerSourcePat, mJoinCore) ->
- Some(nm, innerSourcePat, mJoinCore, false)
- // join with bad pattern (gives error on "join" and continues)
- | SynExpr.App (_, _, CustomOpId detector nm, _innerSourcePatExpr, mJoinCore) ->
- errorR(Error(FSComp.SR.tcBinaryOperatorRequiresVariable(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- Some(nm, arbPat mJoinCore, mJoinCore, true)
- // join (without anything after - gives error on "join" and continues)
- | CustomOpId detector nm ->
- errorR(Error(FSComp.SR.tcBinaryOperatorRequiresVariable(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- Some(nm, arbPat synExpr.Range, synExpr.Range, true)
- | _ ->
- None
- // JoinOrGroupJoinOp customOperationIsLikeJoin
-
- let (|JoinOp|_|) synExpr = JoinOrGroupJoinOp customOperationIsLikeJoin synExpr
-
- let (|GroupJoinOp|_|) synExpr = JoinOrGroupJoinOp customOperationIsLikeGroupJoin synExpr
-
- let arbKeySelectors m = mkSynBifix m "=" (arbExpr("_keySelectors", m)) (arbExpr("_keySelector2", m))
-
- let (|JoinExpr|_|) synExpr =
- match synExpr with
- | InExpr (JoinOp(nm, innerSourcePat, _, alreadyGivenError), onExpr, mJoinCore) ->
- let innerSource, keySelectors = MatchOnExprOrRecover alreadyGivenError nm onExpr
- Some(nm, innerSourcePat, innerSource, keySelectors, mJoinCore)
- | JoinOp (nm, innerSourcePat, mJoinCore, alreadyGivenError) ->
- if alreadyGivenError then
- errorR(Error(FSComp.SR.tcOperatorRequiresIn(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- Some (nm, innerSourcePat, arbExpr("_innerSource", synExpr.Range), arbKeySelectors synExpr.Range, mJoinCore)
- | _ -> None
-
- let (|GroupJoinExpr|_|) synExpr =
- match synExpr with
- | InExpr (GroupJoinOp (nm, innerSourcePat, _, alreadyGivenError), intoExpr, mGroupJoinCore) ->
- let onExpr, intoPat, alreadyGivenError = MatchIntoSuffixOrRecover alreadyGivenError nm intoExpr
- let innerSource, keySelectors = MatchOnExprOrRecover alreadyGivenError nm onExpr
- Some (nm, innerSourcePat, innerSource, keySelectors, intoPat, mGroupJoinCore)
- | GroupJoinOp (nm, innerSourcePat, mGroupJoinCore, alreadyGivenError) ->
- if alreadyGivenError then
- errorR(Error(FSComp.SR.tcOperatorRequiresIn(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- Some (nm, innerSourcePat, arbExpr("_innerSource", synExpr.Range), arbKeySelectors synExpr.Range, arbPat synExpr.Range, mGroupJoinCore)
- | _ ->
- None
-
-
- let (|JoinOrGroupJoinOrZipClause|_|) synExpr =
-
- match synExpr with
- // join innerSourcePat in innerSource on (keySelector1 = keySelector2)
- | JoinExpr (nm, innerSourcePat, innerSource, keySelectors, mJoinCore) ->
- Some(nm, innerSourcePat, innerSource, Some keySelectors, None, mJoinCore)
-
- // groupJoin innerSourcePat in innerSource on (keySelector1 = keySelector2) into intoPat
- | GroupJoinExpr (nm, innerSourcePat, innerSource, keySelectors, intoPat, mGroupJoinCore) ->
- Some(nm, innerSourcePat, innerSource, Some keySelectors, Some intoPat, mGroupJoinCore)
-
- // zip intoPat in secondSource
- | InExpr (SynExpr.App (_, _, CustomOpId customOperationIsLikeZip nm, ExprAsPat secondSourcePat, _), secondSource, mZipCore) ->
- Some(nm, secondSourcePat, secondSource, None, None, mZipCore)
-
- // zip (without secondSource or in - gives error)
- | CustomOpId customOperationIsLikeZip nm ->
- errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- Some(nm, arbPat synExpr.Range, arbExpr("_secondSource", synExpr.Range), None, None, synExpr.Range)
-
- // zip secondSource (without in - gives error)
- | SynExpr.App (_, _, CustomOpId customOperationIsLikeZip nm, ExprAsPat secondSourcePat, mZipCore) ->
- errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)), mZipCore))
- Some(nm, secondSourcePat, arbExpr("_innerSource", synExpr.Range), None, None, mZipCore)
-
- | _ ->
- None
-
- let (|ForEachThenJoinOrGroupJoinOrZipClause|_|) strict synExpr =
- match synExpr with
- | ForEachThen (isFromSource, firstSourcePat, firstSource, JoinOrGroupJoinOrZipClause(nm, secondSourcePat, secondSource, keySelectorsOpt, pat3opt, mOpCore), innerComp)
- when
- (let _firstSourceSimplePats, later1 =
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- SimplePatsOfPat cenv.synArgNameGenerator firstSourcePat
- Option.isNone later1) ->
- Some (isFromSource, firstSourcePat, firstSource, nm, secondSourcePat, secondSource, keySelectorsOpt, pat3opt, mOpCore, innerComp)
-
- | JoinOrGroupJoinOrZipClause(nm, pat2, expr2, expr3, pat3opt, mOpCore) when strict ->
- errorR(Error(FSComp.SR.tcBinaryOperatorRequiresBody(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- Some (true, arbPat synExpr.Range, arbExpr("_outerSource", synExpr.Range), nm, pat2, expr2, expr3, pat3opt, mOpCore, arbExpr("_innerComp", synExpr.Range))
-
- | _ ->
- None
-
- let (|StripApps|) e =
- let rec strip e =
- match e with
- | SynExpr.FromParseError (SynExpr.App (_, _, f, arg, _), _)
- | SynExpr.App (_, _, f, arg, _) ->
- let g, acc = strip f
- g, (arg :: acc)
- | _ -> e, []
- let g, acc = strip e
- g, List.rev acc
-
- let (|OptionalIntoSuffix|) e =
- match e with
- | IntoSuffix (body, intoWordRange, intoInfo) -> (body, Some (intoWordRange, intoInfo))
- | body -> (body, None)
-
- let (|CustomOperationClause|_|) e =
- match e with
- | OptionalIntoSuffix(StripApps(SingleIdent nm, _) as core, intoOpt) when isCustomOperation nm ->
- // Now we know we have a custom operation, commit the name resolution
- let intoInfoOpt =
- match intoOpt with
- | Some (intoWordRange, intoInfo) ->
- let item = Item.CustomOperation ("into", (fun () -> None), None)
- CallNameResolutionSink cenv.tcSink (intoWordRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
- Some intoInfo
- | None -> None
-
- Some (nm, Option.get (tryGetDataForCustomOperation nm), core, core.Range, intoInfoOpt)
- | _ -> None
-
- let mkSynLambda p e m = SynExpr.Lambda (false, false, p, e, None, m, SynExprLambdaTrivia.Zero)
-
- let mkExprForVarSpace m (patvs: Val list) =
- match patvs with
- | [] -> SynExpr.Const (SynConst.Unit, m)
- | [v] -> SynExpr.Ident v.Id
- | vs -> SynExpr.Tuple (false, (vs |> List.map (fun v -> SynExpr.Ident(v.Id))), [], m)
-
- let mkSimplePatForVarSpace m (patvs: Val list) =
- let spats =
- match patvs with
- | [] -> []
- | [v] -> [mkSynSimplePatVar false v.Id]
- | vs -> vs |> List.map (fun v -> mkSynSimplePatVar false v.Id)
- SynSimplePats.SimplePats (spats, [], m)
-
- let mkPatForVarSpace m (patvs: Val list) =
- match patvs with
- | [] -> SynPat.Const (SynConst.Unit, m)
- | [v] -> mkSynPatVar None v.Id
- | vs -> SynPat.Tuple(false, (vs |> List.map (fun x -> mkSynPatVar None x.Id)), [], m)
-
- let (|OptionalSequential|) e =
- match e with
- | SynExpr.Sequential (_sp, true, dataComp1, dataComp2, _) -> (dataComp1, Some dataComp2)
- | _ -> (e, None)
-
- // "cexpr; cexpr" is treated as builder.Combine(cexpr1, cexpr1)
- // This is not pretty - we have to decide which range markers we use for the calls to Combine and Delay
- // NOTE: we should probably suppress these sequence points altogether
- let rangeForCombine innerComp1 =
- let m =
- match innerComp1 with
- | SynExpr.IfThenElse (trivia={ IfToThenRange = mIfToThen }) -> mIfToThen
- | SynExpr.Match (matchDebugPoint=DebugPointAtBinding.Yes mMatch) -> mMatch
- | SynExpr.TryWith (trivia={ TryKeyword = mTry }) -> mTry
- | SynExpr.TryFinally (trivia={ TryKeyword = mTry }) -> mTry
- | SynExpr.For (forDebugPoint=DebugPointAtFor.Yes mBind) -> mBind
- | SynExpr.ForEach (forDebugPoint=DebugPointAtFor.Yes mBind) -> mBind
- | SynExpr.While (whileDebugPoint=DebugPointAtWhile.Yes mWhile) -> mWhile
- | _ -> innerComp1.Range
-
- m.NoteSourceConstruct(NotedSourceConstruct.Combine)
-
- // Check for 'where x > y', 'select x, y' and other mis-applications of infix operators, give a good error message, and return a flag
- let checkForBinaryApp comp =
- match comp with
- | StripApps(SingleIdent nm, [StripApps(SingleIdent nm2, args); arg2]) when
- IsLogicalInfixOpName nm.idText &&
- (match tryExpectedArgCountForCustomOperator nm2 with Some n -> n > 0 | _ -> false) &&
- not (List.isEmpty args) ->
- let estimatedRangeOfIntendedLeftAndRightArguments = unionRanges (List.last args).Range arg2.Range
- errorR(Error(FSComp.SR.tcUnrecognizedQueryBinaryOperator(), estimatedRangeOfIntendedLeftAndRightArguments))
- true
- | SynExpr.Tuple (false, StripApps(SingleIdent nm2, args) :: _, _, m) when
- (match tryExpectedArgCountForCustomOperator nm2 with Some n -> n > 0 | _ -> false) &&
- not (List.isEmpty args) ->
- let estimatedRangeOfIntendedLeftAndRightArguments = unionRanges (List.last args).Range m.EndRange
- errorR(Error(FSComp.SR.tcUnrecognizedQueryBinaryOperator(), estimatedRangeOfIntendedLeftAndRightArguments))
- true
- | _ ->
- false
-
- let addVarsToVarSpace (varSpace: LazyWithContext) f =
- LazyWithContext.Create
- ((fun m ->
- let (patvs: Val list, env) = varSpace.Force m
- let vs, envinner = f m env
- let patvs = List.append patvs (vs |> List.filter (fun v -> not (patvs |> List.exists (fun v2 -> v.LogicalName = v2.LogicalName))))
- patvs, envinner),
- id)
-
- // Flag that a debug point should get emitted prior to both the evaluation of 'rhsExpr' and the call to Using
- let addBindDebugPoint spBind e =
- match spBind with
- | DebugPointAtBinding.Yes m ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, e)
- | _ -> e
-
- let emptyVarSpace = LazyWithContext.NotLazy ([], env)
-
- // If there are no 'yield' in the computation expression, and the builder supports 'Yield',
- // then allow the type-directed rule interpreting non-unit-typed expressions in statement
- // positions as 'yield'. 'yield!' may be present in the computation expression.
- let enableImplicitYield =
- cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
- && (hasMethInfo "Yield" && hasMethInfo "Combine" && hasMethInfo "Delay" && YieldFree cenv comp)
-
- // q - a flag indicating if custom operators are allowed. They are not allowed inside try/with, try/finally, if/then/else etc.
- // varSpace - a lazy data structure indicating the variables bound so far in the overall computation
- // comp - the computation expression being analyzed
- // translatedCtxt - represents the translation of the context in which the computation expression 'comp' occurs, up to a
- // hole to be filled by (part of) the results of translating 'comp'.
- let rec tryTrans firstTry q varSpace comp translatedCtxt =
- // Guard the stack for deeply nested computation expressions
- cenv.stackGuard.Guard <| fun () ->
-
- match comp with
-
- // for firstSourcePat in firstSource do
- // join secondSourcePat in expr2 on (expr3 = expr4)
- // ...
- // -->
- // join expr1 expr2 (fun firstSourcePat -> expr3) (fun secondSourcePat -> expr4) (fun firstSourcePat secondSourcePat -> ...)
-
- // for firstSourcePat in firstSource do
- // groupJoin secondSourcePat in expr2 on (expr3 = expr4) into groupPat
- // ...
- // -->
- // groupJoin expr1 expr2 (fun firstSourcePat -> expr3) (fun secondSourcePat -> expr4) (fun firstSourcePat groupPat -> ...)
-
- // for firstSourcePat in firstSource do
- // zip secondSource into secondSourcePat
- // ...
- // -->
- // zip expr1 expr2 (fun pat1 pat3 -> ...)
- | ForEachThenJoinOrGroupJoinOrZipClause true (isFromSource, firstSourcePat, firstSource, nm, secondSourcePat, secondSource, keySelectorsOpt, secondResultPatOpt, mOpCore, innerComp) ->
-
- if q = CustomOperationsMode.Denied then error(Error(FSComp.SR.tcCustomOperationMayNotBeUsedHere(), nm.idRange))
- let firstSource = mkSourceExprConditional isFromSource firstSource
- let secondSource = mkSourceExpr secondSource
-
- // Add the variables to the variable space, on demand
- let varSpaceWithFirstVars =
- addVarsToVarSpace varSpace (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv firstSourcePat None
- vspecs, envinner)
-
- let varSpaceWithSecondVars =
- addVarsToVarSpace varSpaceWithFirstVars (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv secondSourcePat None
- vspecs, envinner)
-
- let varSpaceWithGroupJoinVars =
- match secondResultPatOpt with
- | Some pat3 ->
- addVarsToVarSpace varSpaceWithFirstVars (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv pat3 None
- vspecs, envinner)
- | None -> varSpace
-
- let firstSourceSimplePats, later1 = SimplePatsOfPat cenv.synArgNameGenerator firstSourcePat
- let secondSourceSimplePats, later2 = SimplePatsOfPat cenv.synArgNameGenerator secondSourcePat
-
- if Option.isSome later1 then errorR (Error (FSComp.SR.tcJoinMustUseSimplePattern(nm.idText), firstSourcePat.Range))
- if Option.isSome later2 then errorR (Error (FSComp.SR.tcJoinMustUseSimplePattern(nm.idText), secondSourcePat.Range))
-
- // check 'join' or 'groupJoin' or 'zip' is permitted for this builder
- match tryGetDataForCustomOperation nm with
- | None -> error(Error(FSComp.SR.tcMissingCustomOperation(nm.idText), nm.idRange))
- | Some opDatas ->
- let opName, _, _, _, _, _, _, _, methInfo = opDatas[0]
-
- // Record the resolution of the custom operation for posterity
- let item = Item.CustomOperation (opName, (fun () -> customOpUsageText nm), Some methInfo)
-
- // FUTURE: consider whether we can do better than emptyTyparInst here, in order to display instantiations
- // of type variables in the quick info provided in the IDE.
- CallNameResolutionSink cenv.tcSink (nm.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
-
- let mkJoinExpr keySelector1 keySelector2 innerPat e =
- let mSynthetic = mOpCore.MakeSynthetic()
- mkSynCall methInfo.DisplayName mOpCore
- [ firstSource
- secondSource
- mkSynLambda firstSourceSimplePats keySelector1 mSynthetic
- mkSynLambda secondSourceSimplePats keySelector2 mSynthetic
- mkSynLambda firstSourceSimplePats (mkSynLambda innerPat e mSynthetic) mSynthetic ]
-
- let mkZipExpr e =
- let mSynthetic = mOpCore.MakeSynthetic()
- mkSynCall methInfo.DisplayName mOpCore
- [ firstSource
- secondSource
- mkSynLambda firstSourceSimplePats (mkSynLambda secondSourceSimplePats e mSynthetic) mSynthetic ]
-
- // wraps given expression into sequence with result produced by arbExpr so result will look like:
- // l; SynExpr.ArbitraryAfterError (...)
- // this allows to handle cases like 'on (a > b)' // '>' is not permitted as correct join relation
- // after wrapping a and b can still be typechecked (so we'll have correct completion inside 'on' part)
- // but presence of SynExpr.ArbitraryAfterError allows to avoid errors about incompatible types in cases like
- // query {
- // for a in [1] do
- // join b in [""] on (a > b)
- // }
- // if we typecheck raw 'a' and 'b' then we'll end up with 2 errors:
- // 1. incorrect join relation
- // 2. incompatible types: int and string
- // with SynExpr.ArbitraryAfterError we have only first one
- let wrapInArbErrSequence l caption =
- SynExpr.Sequential (DebugPointAtSequential.SuppressNeither, true, l, (arbExpr(caption, l.Range.EndRange)), l.Range)
-
- let mkOverallExprGivenVarSpaceExpr, varSpaceInner =
-
- let isNullableOp opId =
- match ConvertValLogicalNameToDisplayNameCore opId with
- | "?=" | "=?" | "?=?" -> true
- | _ -> false
-
- match secondResultPatOpt, keySelectorsOpt with
- // groupJoin
- | Some secondResultPat, Some relExpr when customOperationIsLikeGroupJoin nm ->
- let secondResultSimplePats, later3 = SimplePatsOfPat cenv.synArgNameGenerator secondResultPat
- if Option.isSome later3 then errorR (Error (FSComp.SR.tcJoinMustUseSimplePattern(nm.idText), secondResultPat.Range))
- match relExpr with
- | JoinRelation cenv env (keySelector1, keySelector2) ->
- mkJoinExpr keySelector1 keySelector2 secondResultSimplePats, varSpaceWithGroupJoinVars
- | BinOpExpr (opId, l, r) ->
- if isNullableOp opId.idText then
- // When we cannot resolve NullableOps, recommend the relevant namespace to be added
- errorR(Error(FSComp.SR.cannotResolveNullableOperators(ConvertValLogicalNameToDisplayNameCore opId.idText), relExpr.Range))
- else
- errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText), relExpr.Range))
- let l = wrapInArbErrSequence l "_keySelector1"
- let r = wrapInArbErrSequence r "_keySelector2"
- // this is not correct JoinRelation but it is still binary operation
- // we've already reported error now we can use operands of binary operation as join components
- mkJoinExpr l r secondResultSimplePats, varSpaceWithGroupJoinVars
- | _ ->
- errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText), relExpr.Range))
- // since the shape of relExpr doesn't match our expectations (JoinRelation)
- // then we assume that this is l.h.s. of the join relation
- // so typechecker will treat relExpr as body of outerKeySelector lambda parameter in GroupJoin method
- mkJoinExpr relExpr (arbExpr("_keySelector2", relExpr.Range)) secondResultSimplePats, varSpaceWithGroupJoinVars
-
- | None, Some relExpr when customOperationIsLikeJoin nm ->
- match relExpr with
- | JoinRelation cenv env (keySelector1, keySelector2) ->
- mkJoinExpr keySelector1 keySelector2 secondSourceSimplePats, varSpaceWithSecondVars
- | BinOpExpr (opId, l, r) ->
- if isNullableOp opId.idText then
- // When we cannot resolve NullableOps, recommend the relevant namespace to be added
- errorR(Error(FSComp.SR.cannotResolveNullableOperators(ConvertValLogicalNameToDisplayNameCore opId.idText), relExpr.Range))
- else
- errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText), relExpr.Range))
- // this is not correct JoinRelation but it is still binary operation
- // we've already reported error now we can use operands of binary operation as join components
- let l = wrapInArbErrSequence l "_keySelector1"
- let r = wrapInArbErrSequence r "_keySelector2"
- mkJoinExpr l r secondSourceSimplePats, varSpaceWithGroupJoinVars
- | _ ->
- errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText), relExpr.Range))
- // since the shape of relExpr doesn't match our expectations (JoinRelation)
- // then we assume that this is l.h.s. of the join relation
- // so typechecker will treat relExpr as body of outerKeySelector lambda parameter in Join method
- mkJoinExpr relExpr (arbExpr("_keySelector2", relExpr.Range)) secondSourceSimplePats, varSpaceWithGroupJoinVars
-
- | None, None when customOperationIsLikeZip nm ->
- mkZipExpr, varSpaceWithSecondVars
-
- | _ ->
- assert false
- failwith "unreachable"
-
-
- // Case from C# spec: A query expression with a join clause with an into followed by something other than a select clause
- // Case from C# spec: A query expression with a join clause without an into followed by something other than a select clause
- let valsInner, _env = varSpaceInner.Force mOpCore
- let varSpaceExpr = mkExprForVarSpace mOpCore valsInner
- let varSpacePat = mkPatForVarSpace mOpCore valsInner
- let joinExpr = mkOverallExprGivenVarSpaceExpr varSpaceExpr
- let consumingExpr = SynExpr.ForEach (DebugPointAtFor.No, DebugPointAtInOrTo.No, SeqExprOnly false, false, varSpacePat, joinExpr, innerComp, mOpCore)
- Some (trans CompExprTranslationPass.Initial q varSpaceInner consumingExpr translatedCtxt)
-
- | SynExpr.ForEach (spFor, spIn, SeqExprOnly _seqExprOnly, isFromSource, pat, sourceExpr, innerComp, _mEntireForEach) ->
- let sourceExpr =
- match RewriteRangeExpr sourceExpr with
- | Some e -> e
- | None -> sourceExpr
- let wrappedSourceExpr = mkSourceExprConditional isFromSource sourceExpr
-
- let mFor =
- match spFor with
- | DebugPointAtFor.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.For)
- | DebugPointAtFor.No -> pat.Range
-
- // For computation expressions, 'in' or 'to' is hit on each MoveNext.
- // To support this a named debug point for the "in" keyword is available to inlined code.
- match spIn with
- | DebugPointAtInOrTo.Yes mIn ->
- cenv.namedDebugPointsForInlinedCode[{Range=mFor; Name="ForLoop.InOrToKeyword"}] <- mIn
- | _ -> ()
-
- let mPat = pat.Range
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mFor ad "For" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("For"), mFor))
-
- // Add the variables to the query variable space, on demand
- let varSpace =
- addVarsToVarSpace varSpace (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv pat None
- vspecs, envinner)
-
- Some (trans CompExprTranslationPass.Initial q varSpace innerComp
- (fun innerCompR ->
-
- let forCall =
- mkSynCall "For" mFor [wrappedSourceExpr; SynExpr.MatchLambda (false, mPat, [SynMatchClause(pat, None, innerCompR, mPat, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)], DebugPointAtBinding.NoneAtInvisible, mFor) ]
-
- let forCall =
- match spFor with
- | DebugPointAtFor.Yes _ ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mFor, false, forCall)
- | DebugPointAtFor.No -> forCall
-
- translatedCtxt forCall))
-
- | SynExpr.For (forDebugPoint=spFor; toDebugPoint=spTo; ident=id; identBody=start; direction=dir; toBody=finish; doBody=innerComp; range=m) ->
- let mFor = match spFor with DebugPointAtFor.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.For) | _ -> m
-
- if isQuery then errorR(Error(FSComp.SR.tcNoIntegerForLoopInQuery(), mFor))
-
- let reduced = elimFastIntegerForLoop (spFor, spTo, id, start, dir, finish, innerComp, m)
- Some (trans CompExprTranslationPass.Initial q varSpace reduced translatedCtxt )
-
- | SynExpr.While (spWhile, guardExpr, innerComp, _) ->
- let mGuard = guardExpr.Range
- let mWhile = match spWhile with DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While) | _ -> mGuard
-
- if isQuery then error(Error(FSComp.SR.tcNoWhileInQuery(), mWhile))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mWhile ad "While" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("While"), mWhile))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mWhile ad "Delay" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"), mWhile))
-
- // 'while' is hit just before each time the guard is called
- let guardExpr =
- match spWhile with
- | DebugPointAtWhile.Yes _ ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mWhile, false, guardExpr)
- | DebugPointAtWhile.No -> guardExpr
-
- Some(trans CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill ->
- translatedCtxt
- (mkSynCall "While" mWhile
- [ mkSynDelay2 guardExpr;
- mkSynCall "Delay" mWhile [mkSynDelay innerComp.Range holeFill]])) )
-
- | SynExpr.WhileBang (spWhile, guardExpr, innerComp, mOrig) ->
- let mGuard = guardExpr.Range
- let mWhile = match spWhile with DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While) | _ -> mGuard
- let mGuard = mGuard.MakeSynthetic()
-
- // 'while!' is hit just before each time the guard is called
- let guardExpr =
- match spWhile with
- | DebugPointAtWhile.Yes _ ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mWhile, false, guardExpr)
- | DebugPointAtWhile.No -> guardExpr
-
- let rewrittenWhileExpr =
- let idFirst = mkSynId mGuard (CompilerGeneratedName "first")
- let patFirst = mkSynPatVar None idFirst
-
- let body =
- let idCond = mkSynId mGuard (CompilerGeneratedName "cond")
- let patCond = mkSynPatVar None idCond
- let condBinding = mkSynBinding (Xml.PreXmlDoc.Empty, patCond) (None, false, true, mGuard, DebugPointAtBinding.NoneAtSticky, None, SynExpr.Ident idFirst, mGuard, [], [], None, SynBindingTrivia.Zero)
- let setCondExpr = SynExpr.Set (SynExpr.Ident idCond, SynExpr.Ident idFirst, mGuard)
- let bindCondExpr = SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtSticky, false, true, patFirst, guardExpr, [], setCondExpr, mGuard, SynExprLetOrUseBangTrivia.Zero)
-
- let whileExpr = SynExpr.While (DebugPointAtWhile.No, SynExpr.Ident idCond, SynExpr.Sequential (DebugPointAtSequential.SuppressBoth, true, innerComp, bindCondExpr, mWhile), mOrig)
- SynExpr.LetOrUse (false, false, [ condBinding ], whileExpr, mGuard, SynExprLetOrUseTrivia.Zero)
-
- SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtSticky, false, true, patFirst, guardExpr, [], body, mGuard, SynExprLetOrUseBangTrivia.Zero)
-
- tryTrans CompExprTranslationPass.Initial q varSpace rewrittenWhileExpr translatedCtxt
-
- | SynExpr.TryFinally (innerComp, unwindExpr, _mTryToLast, spTry, spFinally, trivia) ->
-
- let mTry = match spTry with DebugPointAtTry.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Try) | _ -> trivia.TryKeyword
- let mFinally = match spFinally with DebugPointAtFinally.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Finally) | _ -> trivia.FinallyKeyword
-
- // Put down a debug point for the 'finally'
- let unwindExpr2 =
- match spFinally with
- | DebugPointAtFinally.Yes _ ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mFinally, true, unwindExpr)
- | DebugPointAtFinally.No -> unwindExpr
-
- if isQuery then error(Error(FSComp.SR.tcNoTryFinallyInQuery(), mTry))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mTry ad "TryFinally" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("TryFinally"), mTry))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mTry ad "Delay" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"), mTry))
-
- let innerExpr = transNoQueryOps innerComp
-
- let innerExpr =
- match spTry with
- | DebugPointAtTry.Yes _ ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mTry, true, innerExpr)
- | _ -> innerExpr
-
- Some (translatedCtxt
- (mkSynCall "TryFinally" mTry [
- mkSynCall "Delay" mTry [mkSynDelay innerComp.Range innerExpr]
- mkSynDelay2 unwindExpr2]))
-
- | SynExpr.Paren (_, _, _, m) ->
- error(Error(FSComp.SR.tcConstructIsAmbiguousInComputationExpression(), m))
-
- // In some cases the node produced by `mkSynCall "Zero" m []` may be discarded in the case
- // of implicit yields - for example "list { 1; 2 }" when each expression checks as an implicit yield.
- // If it is not discarded, the syntax node will later be checked and the existence/non-existence of the Zero method
- // will be checked/reported appropriately (though the error message won't mention computation expressions
- // like our other error messages for missing methods).
- | SynExpr.ImplicitZero m ->
- if (not enableImplicitYield) &&
- isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "Zero" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Zero"), m))
- Some (translatedCtxt (mkSynCall "Zero" m []))
-
- | OptionalSequential (JoinOrGroupJoinOrZipClause (_, _, _, _, _, mClause), _)
- when firstTry = CompExprTranslationPass.Initial ->
-
- // 'join' clauses preceded by 'let' and other constructs get processed by repackaging with a 'for' loop.
- let patvs, _env = varSpace.Force comp.Range
- let varSpaceExpr = mkExprForVarSpace mClause patvs
- let varSpacePat = mkPatForVarSpace mClause patvs
-
- let dataCompPrior =
- translatedCtxt (transNoQueryOps (SynExpr.YieldOrReturn ((true, false), varSpaceExpr, mClause)))
-
- // Rebind using for ...
- let rebind =
- SynExpr.ForEach (DebugPointAtFor.No, DebugPointAtInOrTo.No, SeqExprOnly false, false, varSpacePat, dataCompPrior, comp, comp.Range)
-
- // Retry with the 'for' loop packaging. Set firstTry=false just in case 'join' processing fails
- tryTrans CompExprTranslationPass.Subsequent q varSpace rebind id
-
-
- | OptionalSequential (CustomOperationClause (nm, _, opExpr, mClause, _), _) ->
-
- if q = CustomOperationsMode.Denied then error(Error(FSComp.SR.tcCustomOperationMayNotBeUsedHere(), opExpr.Range))
-
- let patvs, _env = varSpace.Force comp.Range
- let varSpaceExpr = mkExprForVarSpace mClause patvs
-
- let dataCompPriorToOp =
- let isYield = not (customOperationMaintainsVarSpaceUsingBind nm)
- translatedCtxt (transNoQueryOps (SynExpr.YieldOrReturn ((isYield, false), varSpaceExpr, mClause)))
-
- // Now run the consumeCustomOpClauses
- Some (consumeCustomOpClauses q varSpace dataCompPriorToOp comp false mClause)
-
- | SynExpr.Sequential (sp, true, innerComp1, innerComp2, m) ->
-
- // Check for 'where x > y' and other mis-applications of infix operators. If detected, give a good error message, and just ignore innerComp1
- if isQuery && checkForBinaryApp innerComp1 then
- Some (trans CompExprTranslationPass.Initial q varSpace innerComp2 translatedCtxt)
-
- else
-
- if isQuery && not(innerComp1.IsArbExprAndThusAlreadyReportedError) then
- match innerComp1 with
- | SynExpr.JoinIn _ -> () // an error will be reported later when we process innerComp1 as a sequential
- | _ -> errorR(Error(FSComp.SR.tcUnrecognizedQueryOperator(), innerComp1.RangeOfFirstPortion))
-
- match tryTrans CompExprTranslationPass.Initial CustomOperationsMode.Denied varSpace innerComp1 id with
- | Some c ->
- // "cexpr; cexpr" is treated as builder.Combine(cexpr1, cexpr1)
- let m1 = rangeForCombine innerComp1
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "Combine" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Combine"), m))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "Delay" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"), m))
-
- let combineCall = mkSynCall "Combine" m1 [c; mkSynCall "Delay" m1 [mkSynDelay innerComp2.Range (transNoQueryOps innerComp2)]]
-
- Some (translatedCtxt combineCall)
-
- | None ->
- // "do! expr; cexpr" is treated as { let! () = expr in cexpr }
- match innerComp1 with
- | SynExpr.DoBang (rhsExpr, m) ->
- let sp =
- match sp with
- | DebugPointAtSequential.SuppressExpr -> DebugPointAtBinding.NoneAtDo
- | DebugPointAtSequential.SuppressBoth -> DebugPointAtBinding.NoneAtDo
- | DebugPointAtSequential.SuppressStmt -> DebugPointAtBinding.Yes m
- | DebugPointAtSequential.SuppressNeither -> DebugPointAtBinding.Yes m
- Some(trans CompExprTranslationPass.Initial q varSpace (SynExpr.LetOrUseBang (sp, false, true, SynPat.Const(SynConst.Unit, rhsExpr.Range), rhsExpr, [], innerComp2, m, SynExprLetOrUseBangTrivia.Zero)) translatedCtxt)
-
- // "expr; cexpr" is treated as sequential execution
- | _ ->
- Some (trans CompExprTranslationPass.Initial q varSpace innerComp2 (fun holeFill ->
- let fillExpr =
- if enableImplicitYield then
- // When implicit yields are enabled, then if the 'innerComp1' checks as type
- // 'unit' we interpret the expression as a sequential, and when it doesn't
- // have type 'unit' we interpret it as a 'Yield + Combine'.
- let combineExpr =
- let m1 = rangeForCombine innerComp1
- let implicitYieldExpr = mkSynCall "Yield" comp.Range [innerComp1]
- mkSynCall "Combine" m1 [implicitYieldExpr; mkSynCall "Delay" m1 [mkSynDelay holeFill.Range holeFill]]
- SynExpr.SequentialOrImplicitYield(sp, innerComp1, holeFill, combineExpr, m)
- else
- SynExpr.Sequential(sp, true, innerComp1, holeFill, m)
- translatedCtxt fillExpr))
-
- | SynExpr.IfThenElse (guardExpr, thenComp, elseCompOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia) ->
- match elseCompOpt with
- | Some elseComp ->
- if isQuery then error(Error(FSComp.SR.tcIfThenElseMayNotBeUsedWithinQueries(), trivia.IfToThenRange))
- Some (translatedCtxt (SynExpr.IfThenElse (guardExpr, transNoQueryOps thenComp, Some(transNoQueryOps elseComp), spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia)))
- | None ->
- let elseComp =
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env trivia.IfToThenRange ad "Zero" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Zero"), trivia.IfToThenRange))
- mkSynCall "Zero" trivia.IfToThenRange []
- Some (trans CompExprTranslationPass.Initial q varSpace thenComp (fun holeFill -> translatedCtxt (SynExpr.IfThenElse (guardExpr, holeFill, Some elseComp, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia))))
-
- // 'let binds in expr'
- | SynExpr.LetOrUse (isRec, false, binds, innerComp, m, trivia) ->
-
- // For 'query' check immediately
- if isQuery then
- match (List.map (BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env) binds) with
- | [NormalizedBinding(_, SynBindingKind.Normal, false, false, _, _, _, _, _, _, _, _)] when not isRec ->
- ()
- | normalizedBindings ->
- let failAt m = error(Error(FSComp.SR.tcNonSimpleLetBindingInQuery(), m))
- match normalizedBindings with
- | NormalizedBinding(_, _, _, _, _, _, _, _, _, _, mBinding, _) :: _ -> failAt mBinding
- | _ -> failAt m
-
- // Add the variables to the query variable space, on demand
- let varSpace =
- addVarsToVarSpace varSpace (fun mQueryOp env ->
- // Normalize the bindings before detecting the bound variables
- match (List.map (BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env) binds) with
- | [NormalizedBinding(_vis, SynBindingKind.Normal, false, false, _, _, _, _, pat, _, _, _)] ->
- // successful case
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv pat None
- vspecs, envinner
- | _ ->
- // error case
- error(Error(FSComp.SR.tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings(), mQueryOp)))
-
- Some (trans CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill -> translatedCtxt (SynExpr.LetOrUse (isRec, false, binds, holeFill, m, trivia))))
-
- // 'use x = expr in expr'
- | SynExpr.LetOrUse (isUse=true; bindings=[SynBinding (kind=SynBindingKind.Normal; headPat=pat; expr=rhsExpr; debugPoint=spBind)]; body=innerComp) ->
- let mBind = match spBind with DebugPointAtBinding.Yes m -> m | _ -> rhsExpr.Range
- if isQuery then error(Error(FSComp.SR.tcUseMayNotBeUsedInQueries(), mBind))
- let innerCompRange = innerComp.Range
- let consumeExpr = SynExpr.MatchLambda(false, innerCompRange, [SynMatchClause(pat, None, transNoQueryOps innerComp, innerCompRange, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)], DebugPointAtBinding.NoneAtInvisible, innerCompRange)
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad "Using" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Using"), mBind))
-
- Some (translatedCtxt (mkSynCall "Using" mBind [rhsExpr; consumeExpr ]) |> addBindDebugPoint spBind)
-
- // 'let! pat = expr in expr'
- // --> build.Bind(e1, (fun _argN -> match _argN with pat -> expr))
- // or
- // --> build.BindReturn(e1, (fun _argN -> match _argN with pat -> expr-without-return))
- | SynExpr.LetOrUseBang (bindDebugPoint=spBind; isUse=false; isFromSource=isFromSource; pat=pat; rhs=rhsExpr; andBangs=[]; body=innerComp) ->
-
- let mBind = match spBind with DebugPointAtBinding.Yes m -> m | _ -> rhsExpr.Range
- if isQuery then error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(), mBind))
-
- // Add the variables to the query variable space, on demand
- let varSpace =
- addVarsToVarSpace varSpace (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv pat None
- vspecs, envinner)
-
- let rhsExpr = mkSourceExprConditional isFromSource rhsExpr
- Some (transBind q varSpace mBind (addBindDebugPoint spBind) "Bind" [rhsExpr] pat innerComp translatedCtxt)
-
- // 'use! pat = e1 in e2' --> build.Bind(e1, (function _argN -> match _argN with pat -> build.Using(x, (fun _argN -> match _argN with pat -> e2))))
- | SynExpr.LetOrUseBang (bindDebugPoint=spBind; isUse=true; isFromSource=isFromSource; pat=SynPat.Named (ident=SynIdent(id,_); isThisVal=false) as pat; rhs=rhsExpr; andBangs=[]; body=innerComp)
- | SynExpr.LetOrUseBang (bindDebugPoint=spBind; isUse=true; isFromSource=isFromSource; pat=SynPat.LongIdent (longDotId=SynLongIdent([id], _, _)) as pat; rhs=rhsExpr; andBangs=[]; body=innerComp) ->
-
- let mBind = match spBind with DebugPointAtBinding.Yes m -> m | _ -> rhsExpr.Range
- if isQuery then error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(), mBind))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad "Using" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Using"), mBind))
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad "Bind" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Bind"), mBind))
-
- let bindExpr =
- let consumeExpr = SynExpr.MatchLambda(false, mBind, [SynMatchClause(pat, None, transNoQueryOps innerComp, innerComp.Range, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)], DebugPointAtBinding.NoneAtInvisible, mBind)
- let consumeExpr = mkSynCall "Using" mBind [SynExpr.Ident id; consumeExpr ]
- let consumeExpr = SynExpr.MatchLambda(false, mBind, [SynMatchClause(pat, None, consumeExpr, id.idRange, DebugPointAtTarget.No, SynMatchClauseTrivia.Zero)], DebugPointAtBinding.NoneAtInvisible, mBind)
- let rhsExpr = mkSourceExprConditional isFromSource rhsExpr
- mkSynCall "Bind" mBind [rhsExpr; consumeExpr]
- |> addBindDebugPoint spBind
-
- Some(translatedCtxt bindExpr)
-
- // 'use! pat = e1 ... in e2' where 'pat' is not a simple name --> error
- | SynExpr.LetOrUseBang (isUse=true; pat=pat; andBangs=andBangs) ->
- if isNil andBangs then
- error(Error(FSComp.SR.tcInvalidUseBangBinding(), pat.Range))
- else
- error(Error(FSComp.SR.tcInvalidUseBangBindingNoAndBangs(), comp.Range))
-
- // 'let! pat1 = expr1 and! pat2 = expr2 in ...' -->
- // build.BindN(expr1, expr2, ...)
- // or
- // build.BindNReturn(expr1, expr2, ...)
- // or
- // build.Bind(build.MergeSources(expr1, expr2), ...)
- | SynExpr.LetOrUseBang(bindDebugPoint=spBind; isUse=false; isFromSource=isFromSource; pat=letPat; rhs=letRhsExpr; andBangs=andBangBindings; body=innerComp; range=letBindRange) ->
- if not (cenv.g.langVersion.SupportsFeature LanguageFeature.AndBang) then
- error(Error(FSComp.SR.tcAndBangNotSupported(), comp.Range))
-
- if isQuery then
- error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(), letBindRange))
-
- let mBind = match spBind with DebugPointAtBinding.Yes m -> m | _ -> letRhsExpr.Range
- let sources = (letRhsExpr :: [for SynExprAndBang(body=andExpr) in andBangBindings -> andExpr ]) |> List.map (mkSourceExprConditional isFromSource)
- let pats = letPat :: [for SynExprAndBang(pat = andPat) in andBangBindings -> andPat ]
- let sourcesRange = sources |> List.map (fun e -> e.Range) |> List.reduce unionRanges
-
- let numSources = sources.Length
- let bindReturnNName = "Bind"+string numSources+"Return"
- let bindNName = "Bind"+string numSources
-
- // Check if this is a Bind2Return etc.
- let hasBindReturnN = not (isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad bindReturnNName builderTy))
- if hasBindReturnN && Option.isSome (convertSimpleReturnToExpr varSpace innerComp) then
- let consumePat = SynPat.Tuple(false, pats, [], letPat.Range)
-
- // Add the variables to the query variable space, on demand
- let varSpace =
- addVarsToVarSpace varSpace (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv consumePat None
- vspecs, envinner)
-
- Some (transBind q varSpace mBind (addBindDebugPoint spBind) bindNName sources consumePat innerComp translatedCtxt)
-
- else
-
- // Check if this is a Bind2 etc.
- let hasBindN = not (isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad bindNName builderTy))
- if hasBindN then
- let consumePat = SynPat.Tuple(false, pats, [], letPat.Range)
-
- // Add the variables to the query variable space, on demand
- let varSpace =
- addVarsToVarSpace varSpace (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv consumePat None
- vspecs, envinner)
-
- Some (transBind q varSpace mBind (addBindDebugPoint spBind) bindNName sources consumePat innerComp translatedCtxt)
- else
-
- // Look for the maximum supported MergeSources, MergeSources3, ...
- let mkMergeSourcesName n = if n = 2 then "MergeSources" else "MergeSources"+(string n)
-
- let maxMergeSources =
- let rec loop (n: int) =
- let mergeSourcesName = mkMergeSourcesName n
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad mergeSourcesName builderTy) then
- (n-1)
- else
- loop (n+1)
- loop 2
-
- if maxMergeSources = 1 then error(Error(FSComp.SR.tcRequireMergeSourcesOrBindN(bindNName), mBind))
-
- let rec mergeSources (sourcesAndPats: (SynExpr * SynPat) list) =
- let numSourcesAndPats = sourcesAndPats.Length
- assert (numSourcesAndPats <> 0)
- if numSourcesAndPats = 1 then
- sourcesAndPats[0]
-
- elif numSourcesAndPats <= maxMergeSources then
-
- // Call MergeSources2(e1, e2), MergeSources3(e1, e2, e3) etc
- let mergeSourcesName = mkMergeSourcesName numSourcesAndPats
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad mergeSourcesName builderTy) then
- error(Error(FSComp.SR.tcRequireMergeSourcesOrBindN(bindNName), mBind))
-
- let source = mkSynCall mergeSourcesName sourcesRange (List.map fst sourcesAndPats)
- let pat = SynPat.Tuple(false, List.map snd sourcesAndPats, [], letPat.Range)
- source, pat
-
- else
-
- // Call MergeSourcesMax(e1, e2, e3, e4, (...))
- let nowSourcesAndPats, laterSourcesAndPats = List.splitAt (maxMergeSources - 1) sourcesAndPats
- let mergeSourcesName = mkMergeSourcesName maxMergeSources
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad mergeSourcesName builderTy) then
- error(Error(FSComp.SR.tcRequireMergeSourcesOrBindN(bindNName), mBind))
-
- let laterSource, laterPat = mergeSources laterSourcesAndPats
- let source = mkSynCall mergeSourcesName sourcesRange (List.map fst nowSourcesAndPats @ [laterSource])
- let pat = SynPat.Tuple(false, List.map snd nowSourcesAndPats @ [laterPat], [], letPat.Range)
- source, pat
-
- let mergedSources, consumePat = mergeSources (List.zip sources pats)
-
- // Add the variables to the query variable space, on demand
- let varSpace =
- addVarsToVarSpace varSpace (fun _mCustomOp env ->
- use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
- let _, _, vspecs, envinner, _ = TcMatchPattern cenv (NewInferenceType g) env tpenv consumePat None
- vspecs, envinner)
-
- // Build the 'Bind' call
- Some (transBind q varSpace mBind (addBindDebugPoint spBind) "Bind" [mergedSources] consumePat innerComp translatedCtxt)
-
- | SynExpr.Match (spMatch, expr, clauses, m, trivia) ->
- if isQuery then error(Error(FSComp.SR.tcMatchMayNotBeUsedWithQuery(), trivia.MatchKeyword))
- let clauses = clauses |> List.map (fun (SynMatchClause(pat, cond, innerComp, patm, sp, trivia)) -> SynMatchClause(pat, cond, transNoQueryOps innerComp, patm, sp, trivia))
- Some(translatedCtxt (SynExpr.Match (spMatch, expr, clauses, m, trivia)))
-
- // 'match! expr with pats ...' --> build.Bind(e1, (function pats ...))
- // FUTURE: consider allowing translation to BindReturn
- | SynExpr.MatchBang (spMatch, expr, clauses, _m, trivia) ->
- let inputExpr = mkSourceExpr expr
- if isQuery then error(Error(FSComp.SR.tcMatchMayNotBeUsedWithQuery(), trivia.MatchBangKeyword))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env trivia.MatchBangKeyword ad "Bind" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Bind"), trivia.MatchBangKeyword))
-
- let clauses = clauses |> List.map (fun (SynMatchClause(pat, cond, innerComp, patm, sp, trivia)) -> SynMatchClause(pat, cond, transNoQueryOps innerComp, patm, sp, trivia))
- let consumeExpr = SynExpr.MatchLambda (false, trivia.MatchBangKeyword, clauses, DebugPointAtBinding.NoneAtInvisible, trivia.MatchBangKeyword)
-
- let callExpr =
- mkSynCall "Bind" trivia.MatchBangKeyword [inputExpr; consumeExpr]
- |> addBindDebugPoint spMatch
-
- Some(translatedCtxt callExpr)
-
- | SynExpr.TryWith (innerComp, clauses, mTryToLast, spTry, spWith, trivia) ->
- let mTry = match spTry with DebugPointAtTry.Yes _ -> trivia.TryKeyword.NoteSourceConstruct(NotedSourceConstruct.Try) | _ -> trivia.TryKeyword
- let spWith2 = match spWith with DebugPointAtWith.Yes _ -> DebugPointAtBinding.Yes trivia.WithKeyword | _ -> DebugPointAtBinding.NoneAtInvisible
-
- if isQuery then error(Error(FSComp.SR.tcTryWithMayNotBeUsedInQueries(), mTry))
-
- let clauses = clauses |> List.map (fun (SynMatchClause(pat, cond, clauseComp, patm, sp, trivia)) -> SynMatchClause(pat, cond, transNoQueryOps clauseComp, patm, sp, trivia))
- let consumeExpr = SynExpr.MatchLambda(true, mTryToLast, clauses, spWith2, mTryToLast)
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mTry ad "TryWith" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("TryWith"), mTry))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mTry ad "Delay" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"), mTry))
-
- let innerExpr = transNoQueryOps innerComp
-
- let innerExpr =
- match spTry with
- | DebugPointAtTry.Yes _ ->
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mTry, true, innerExpr)
- | _ -> innerExpr
-
- let callExpr =
- mkSynCall "TryWith" mTry [
- mkSynCall "Delay" mTry [mkSynDelay2 innerExpr]
- consumeExpr
- ]
-
- Some(translatedCtxt callExpr)
-
- | SynExpr.YieldOrReturnFrom ((true, _), synYieldExpr, m) ->
- let yieldFromExpr = mkSourceExpr synYieldExpr
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "YieldFrom" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("YieldFrom"), m))
-
- let yieldFromCall = mkSynCall "YieldFrom" m [yieldFromExpr]
-
- let yieldFromCall =
- if IsControlFlowExpression synYieldExpr then
- yieldFromCall
- else
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, yieldFromCall)
-
- Some (translatedCtxt yieldFromCall)
-
- | SynExpr.YieldOrReturnFrom ((false, _), synReturnExpr, m) ->
- let returnFromExpr = mkSourceExpr synReturnExpr
- if isQuery then error(Error(FSComp.SR.tcReturnMayNotBeUsedInQueries(), m))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "ReturnFrom" builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod("ReturnFrom"), m))
-
- let returnFromCall = mkSynCall "ReturnFrom" m [returnFromExpr]
-
- let returnFromCall =
- if IsControlFlowExpression synReturnExpr then
- returnFromCall
- else
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, returnFromCall)
-
- Some (translatedCtxt returnFromCall)
-
- | SynExpr.YieldOrReturn ((isYield, _), synYieldOrReturnExpr, m) ->
- let methName = (if isYield then "Yield" else "Return")
- if isQuery && not isYield then error(Error(FSComp.SR.tcReturnMayNotBeUsedInQueries(), m))
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad methName builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod(methName), m))
-
- let yieldOrReturnCall = mkSynCall methName m [synYieldOrReturnExpr]
-
- let yieldOrReturnCall =
- if IsControlFlowExpression synYieldOrReturnExpr then
- yieldOrReturnCall
- else
- SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, yieldOrReturnCall)
-
- Some(translatedCtxt yieldOrReturnCall)
-
- | _ -> None
-
- and consumeCustomOpClauses q (varSpace: LazyWithContext<_, _>) dataCompPrior compClausesExpr lastUsesBind mClause =
-
- // Substitute 'yield ' into the context
-
- let patvs, _env = varSpace.Force comp.Range
- let varSpaceSimplePat = mkSimplePatForVarSpace mClause patvs
- let varSpacePat = mkPatForVarSpace mClause patvs
-
- match compClausesExpr with
-
- // Detect one custom operation... This clause will always match at least once...
- | OptionalSequential (CustomOperationClause (nm, opDatas, opExpr, mClause, optionalIntoPat), optionalCont) ->
-
- let opName, _, _, _, _, _, _, _, methInfo = opDatas[0]
- let isLikeZip = customOperationIsLikeZip nm
- let isLikeJoin = customOperationIsLikeJoin nm
- let isLikeGroupJoin = customOperationIsLikeZip nm
-
- // Record the resolution of the custom operation for posterity
- let item = Item.CustomOperation (opName, (fun () -> customOpUsageText nm), Some methInfo)
-
- // FUTURE: consider whether we can do better than emptyTyparInst here, in order to display instantiations
- // of type variables in the quick info provided in the IDE.
- CallNameResolutionSink cenv.tcSink (nm.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
-
- if isLikeZip || isLikeJoin || isLikeGroupJoin then
- errorR(Error(FSComp.SR.tcBinaryOperatorRequiresBody(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
- match optionalCont with
- | None ->
- // we are about to drop the 'opExpr' AST on the floor. we've already reported an error. attempt to get name resolutions before dropping it
- RecordNameAndTypeResolutions cenv env tpenv opExpr
- dataCompPrior
- | Some contExpr -> consumeCustomOpClauses q varSpace dataCompPrior contExpr lastUsesBind mClause
- else
-
- let maintainsVarSpace = customOperationMaintainsVarSpace nm
- let maintainsVarSpaceUsingBind = customOperationMaintainsVarSpaceUsingBind nm
-
- let expectedArgCount = tryExpectedArgCountForCustomOperator nm
-
- let dataCompAfterOp =
- match opExpr with
- | StripApps(SingleIdent nm, args) ->
- let argCountsMatch =
- match expectedArgCount with
- | Some n -> n = args.Length
- | None -> cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations
- if argCountsMatch then
- // Check for the [] attribute on each argument position
- let args = args |> List.mapi (fun i arg ->
- if isCustomOperationProjectionParameter (i+1) nm then
- SynExpr.Lambda (false, false, varSpaceSimplePat, arg, None, arg.Range.MakeSynthetic(), SynExprLambdaTrivia.Zero)
- else arg)
- mkSynCall methInfo.DisplayName mClause (dataCompPrior :: args)
- else
- let expectedArgCount = defaultArg expectedArgCount 0
- errorR(Error(FSComp.SR.tcCustomOperationHasIncorrectArgCount(nm.idText, expectedArgCount, args.Length), nm.idRange))
- mkSynCall methInfo.DisplayName mClause ([ dataCompPrior ] @ List.init expectedArgCount (fun i -> arbExpr("_arg" + string i, mClause)))
- | _ -> failwith "unreachable"
-
- match optionalCont with
- | None ->
- match optionalIntoPat with
- | Some intoPat -> errorR(Error(FSComp.SR.tcIntoNeedsRestOfQuery(), intoPat.Range))
- | None -> ()
- dataCompAfterOp
-
- | Some contExpr ->
-
- // select a.Name into name; ...
- // distinct into d; ...
- //
- // Rebind the into pattern and process the rest of the clauses
- match optionalIntoPat with
- | Some intoPat ->
- if not (customOperationAllowsInto nm) then
- error(Error(FSComp.SR.tcOperatorDoesntAcceptInto(nm.idText), intoPat.Range))
-
- // Rebind using either for ... or let!....
- let rebind =
- if maintainsVarSpaceUsingBind then
- SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtLet, false, false, intoPat, dataCompAfterOp, [], contExpr, intoPat.Range, SynExprLetOrUseBangTrivia.Zero)
- else
- SynExpr.ForEach (DebugPointAtFor.No, DebugPointAtInOrTo.No, SeqExprOnly false, false, intoPat, dataCompAfterOp, contExpr, intoPat.Range)
-
- trans CompExprTranslationPass.Initial q emptyVarSpace rebind id
-
- // select a.Name; ...
- // distinct; ...
- //
- // Process the rest of the clauses
- | None ->
- if maintainsVarSpace || maintainsVarSpaceUsingBind then
- consumeCustomOpClauses q varSpace dataCompAfterOp contExpr maintainsVarSpaceUsingBind mClause
- else
- consumeCustomOpClauses q emptyVarSpace dataCompAfterOp contExpr false mClause
-
- // No more custom operator clauses in compClausesExpr, but there may be clauses like join, yield etc.
- // Bind/iterate the dataCompPrior and use compClausesExpr as the body.
- | _ ->
- // Rebind using either for ... or let!....
- let rebind =
- if lastUsesBind then
- SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtLet, false, false, varSpacePat, dataCompPrior, [], compClausesExpr, compClausesExpr.Range, SynExprLetOrUseBangTrivia.Zero)
- else
- SynExpr.ForEach (DebugPointAtFor.No, DebugPointAtInOrTo.No, SeqExprOnly false, false, varSpacePat, dataCompPrior, compClausesExpr, compClausesExpr.Range)
-
- trans CompExprTranslationPass.Initial q varSpace rebind id
-
- and transNoQueryOps comp =
- trans CompExprTranslationPass.Initial CustomOperationsMode.Denied emptyVarSpace comp id
-
- and trans firstTry q varSpace comp translatedCtxt =
- match tryTrans firstTry q varSpace comp translatedCtxt with
- | Some e -> e
- | None ->
- // This only occurs in final position in a sequence
- match comp with
- // "do! expr;" in final position is treated as { let! () = expr in return () } when Return is provided (and no Zero with Default attribute is available) or as { let! () = expr in zero } otherwise
- | SynExpr.DoBang (rhsExpr, m) ->
- let mUnit = rhsExpr.Range
- let rhsExpr = mkSourceExpr rhsExpr
- if isQuery then error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(), m))
- let bodyExpr =
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "Return" builderTy) then
- SynExpr.ImplicitZero m
- else
- match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env m ad "Zero" builderTy with
- | minfo :: _ when MethInfoHasAttribute cenv.g m cenv.g.attrib_DefaultValueAttribute minfo -> SynExpr.ImplicitZero m
- | _ -> SynExpr.YieldOrReturn ((false, true), SynExpr.Const (SynConst.Unit, m), m)
- let letBangBind = SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtDo, false, false, SynPat.Const(SynConst.Unit, mUnit), rhsExpr, [], bodyExpr, m, SynExprLetOrUseBangTrivia.Zero)
- trans CompExprTranslationPass.Initial q varSpace letBangBind translatedCtxt
-
- // "expr;" in final position is treated as { expr; zero }
- // Suppress the sequence point on the "zero"
- | _ ->
- // Check for 'where x > y' and other mis-applications of infix operators. If detected, give a good error message, and just ignore comp
- if isQuery && checkForBinaryApp comp then
- trans CompExprTranslationPass.Initial q varSpace (SynExpr.ImplicitZero comp.Range) translatedCtxt
- else
- if isQuery && not comp.IsArbExprAndThusAlreadyReportedError then
- match comp with
- | SynExpr.JoinIn _ -> () // an error will be reported later when we process innerComp1 as a sequential
- | _ -> errorR(Error(FSComp.SR.tcUnrecognizedQueryOperator(), comp.RangeOfFirstPortion))
- trans CompExprTranslationPass.Initial q varSpace (SynExpr.ImplicitZero comp.Range) (fun holeFill ->
- let fillExpr =
- if enableImplicitYield then
- let implicitYieldExpr = mkSynCall "Yield" comp.Range [comp]
- SynExpr.SequentialOrImplicitYield(DebugPointAtSequential.SuppressExpr, comp, holeFill, implicitYieldExpr, comp.Range)
- else
- SynExpr.Sequential(DebugPointAtSequential.SuppressExpr, true, comp, holeFill, comp.Range)
- translatedCtxt fillExpr)
-
- and transBind q varSpace bindRange addBindDebugPoint bindName bindArgs (consumePat: SynPat) (innerComp: SynExpr) translatedCtxt =
-
- let innerRange = innerComp.Range
-
- let innerCompReturn =
- if cenv.g.langVersion.SupportsFeature LanguageFeature.AndBang then
- convertSimpleReturnToExpr varSpace innerComp
- else None
-
- match innerCompReturn with
- | Some (innerExpr, customOpInfo) when
- (let bindName = bindName + "Return"
- not (isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env bindRange ad bindName builderTy))) ->
-
- let bindName = bindName + "Return"
-
- // Build the `BindReturn` call
- let dataCompPriorToOp =
- let consumeExpr = SynExpr.MatchLambda(false, consumePat.Range, [SynMatchClause(consumePat, None, innerExpr, innerRange, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)], DebugPointAtBinding.NoneAtInvisible, innerRange)
- translatedCtxt (mkSynCall bindName bindRange (bindArgs @ [consumeExpr]))
-
- match customOpInfo with
- | None -> dataCompPriorToOp
- | Some (innerComp, mClause) ->
- // If the `BindReturn` was forced by a custom operation, continue to process the clauses of the CustomOp
- consumeCustomOpClauses q varSpace dataCompPriorToOp innerComp false mClause
-
- | _ ->
-
- if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env bindRange ad bindName builderTy) then
- error(Error(FSComp.SR.tcRequireBuilderMethod(bindName), bindRange))
-
- // Build the `Bind` call
- trans CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill ->
- let consumeExpr = SynExpr.MatchLambda(false, consumePat.Range, [SynMatchClause(consumePat, None, holeFill, innerRange, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)], DebugPointAtBinding.NoneAtInvisible, innerRange)
- let bindCall = mkSynCall bindName bindRange (bindArgs @ [consumeExpr])
- translatedCtxt (bindCall |> addBindDebugPoint))
-
- /// This function is for desugaring into .Bind{N}Return calls if possible
- /// The outer option indicates if .BindReturn is possible. When it returns None, .BindReturn cannot be used
- /// The inner option indicates if a custom operation is involved inside
- and convertSimpleReturnToExpr varSpace innerComp =
- match innerComp with
- | SynExpr.YieldOrReturn ((false, _), returnExpr, m) ->
- let returnExpr = SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, returnExpr)
- Some (returnExpr, None)
-
- | SynExpr.Match (spMatch, expr, clauses, m, trivia) ->
- let clauses =
- clauses |> List.map (fun (SynMatchClause(pat, cond, innerComp2, patm, sp, trivia)) ->
- match convertSimpleReturnToExpr varSpace innerComp2 with
- | None -> None // failure
- | Some (_, Some _) -> None // custom op on branch = failure
- | Some (innerExpr2, None) -> Some (SynMatchClause(pat, cond, innerExpr2, patm, sp, trivia)))
- if clauses |> List.forall Option.isSome then
- Some (SynExpr.Match (spMatch, expr, (clauses |> List.map Option.get), m, trivia), None)
- else
- None
-
- | SynExpr.IfThenElse (guardExpr, thenComp, elseCompOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia) ->
- match convertSimpleReturnToExpr varSpace thenComp with
- | None -> None
- | Some (_, Some _) -> None
- | Some (thenExpr, None) ->
- let elseExprOptOpt =
- match elseCompOpt with
- // When we are missing an 'else' part alltogether in case of 'if cond then return exp', we fallback from BindReturn into regular Bind+Return
- | None -> None
- | Some elseComp ->
- match convertSimpleReturnToExpr varSpace elseComp with
- | None -> None // failure
- | Some (_, Some _) -> None // custom op on branch = failure
- | Some (elseExpr, None) -> Some (Some elseExpr)
- match elseExprOptOpt with
- | None -> None
- | Some elseExprOpt -> Some (SynExpr.IfThenElse (guardExpr, thenExpr, elseExprOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia), None)
-
- | SynExpr.LetOrUse (isRec, false, binds, innerComp, m, trivia) ->
- match convertSimpleReturnToExpr varSpace innerComp with
- | None -> None
- | Some (_, Some _) -> None
- | Some (innerExpr, None) -> Some (SynExpr.LetOrUse (isRec, false, binds, innerExpr, m, trivia), None)
-
- | OptionalSequential (CustomOperationClause (nm, _, _, mClause, _), _) when customOperationMaintainsVarSpaceUsingBind nm ->
-
- let patvs, _env = varSpace.Force comp.Range
- let varSpaceExpr = mkExprForVarSpace mClause patvs
-
- Some (varSpaceExpr, Some (innerComp, mClause))
-
- | SynExpr.Sequential (sp, true, innerComp1, innerComp2, m) ->
-
- // Check the first part isn't a computation expression construct
- if isSimpleExpr innerComp1 then
- // Check the second part is a simple return
- match convertSimpleReturnToExpr varSpace innerComp2 with
- | None -> None
- | Some (innerExpr2, optionalCont) -> Some (SynExpr.Sequential (sp, true, innerComp1, innerExpr2, m), optionalCont)
- else
- None
-
- | _ -> None
-
- /// Check if an expression has no computation expression constructs
- and isSimpleExpr comp =
-
- match comp with
- | ForEachThenJoinOrGroupJoinOrZipClause false _ -> false
- | SynExpr.ForEach _ -> false
- | SynExpr.For _ -> false
- | SynExpr.While _ -> false
- | SynExpr.WhileBang _ -> false
- | SynExpr.TryFinally _ -> false
- | SynExpr.ImplicitZero _ -> false
- | OptionalSequential (JoinOrGroupJoinOrZipClause _, _) -> false
- | OptionalSequential (CustomOperationClause _, _) -> false
- | SynExpr.Sequential (_, _, innerComp1, innerComp2, _) -> isSimpleExpr innerComp1 && isSimpleExpr innerComp2
- | SynExpr.IfThenElse (thenExpr=thenComp; elseExpr=elseCompOpt) ->
- isSimpleExpr thenComp && (match elseCompOpt with None -> true | Some c -> isSimpleExpr c)
- | SynExpr.LetOrUse (body=innerComp) -> isSimpleExpr innerComp
- | SynExpr.LetOrUseBang _ -> false
- | SynExpr.Match (clauses=clauses) ->
- clauses |> List.forall (fun (SynMatchClause(resultExpr = innerComp)) -> isSimpleExpr innerComp)
- | SynExpr.MatchBang _ -> false
- | SynExpr.TryWith (tryExpr=innerComp; withCases=clauses) ->
- isSimpleExpr innerComp &&
- clauses |> List.forall (fun (SynMatchClause(resultExpr = clauseComp)) -> isSimpleExpr clauseComp)
- | SynExpr.YieldOrReturnFrom _ -> false
- | SynExpr.YieldOrReturn _ -> false
- | SynExpr.DoBang _ -> false
- | _ -> true
-
- let basicSynExpr =
- trans CompExprTranslationPass.Initial (hasCustomOperations ()) (LazyWithContext.NotLazy ([], env)) comp id
-
- let mDelayOrQuoteOrRun = mBuilderVal.NoteSourceConstruct(NotedSourceConstruct.DelayOrQuoteOrRun).MakeSynthetic()
-
- // Add a call to 'Delay' if the method is present
- let delayedExpr =
- match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad "Delay" builderTy with
- | [] -> basicSynExpr
- | _ ->
- mkSynCall "Delay" mDelayOrQuoteOrRun [(mkSynDelay2 basicSynExpr)]
-
- // Add a call to 'Quote' if the method is present
- let quotedSynExpr =
- if isAutoQuote then
- SynExpr.Quote (mkSynIdGet mDelayOrQuoteOrRun (CompileOpName "<@ @>"), false, delayedExpr, true, mWhole)
- else delayedExpr
-
- // Add a call to 'Run' if the method is present
- let runExpr =
- match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad "Run" builderTy with
- | [] -> quotedSynExpr
- | _ -> mkSynCall "Run" mDelayOrQuoteOrRun [quotedSynExpr]
-
- let lambdaExpr =
- SynExpr.Lambda (false, false, SynSimplePats.SimplePats ([mkSynSimplePatVar false (mkSynId mBuilderVal builderValName)], [], mBuilderVal), runExpr, None, mBuilderVal, SynExprLambdaTrivia.Zero)
-
- let env =
- match comp with
- | SynExpr.YieldOrReturn ((true, _), _, _) -> { env with eContextInfo = ContextInfo.YieldInComputationExpression }
- | SynExpr.YieldOrReturn ((_, true), _, _) -> { env with eContextInfo = ContextInfo.ReturnInComputationExpression }
- | _ -> env
-
- let lambdaExpr, tpenv = TcExpr cenv (MustEqual (mkFunTy g builderTy overallTy)) env tpenv lambdaExpr
-
- // beta-var-reduce to bind the builder using a 'let' binding
- let coreExpr = mkApps cenv.g ((lambdaExpr, tyOfExpr cenv.g lambdaExpr), [], [interpExpr], mBuilderVal)
-
- coreExpr, tpenv
-
-let mkSeqEmpty (cenv: cenv) env m genTy =
- // We must discover the 'zero' of the monadic algebra being generated in order to compile failing matches.
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy g genResultTy)
- mkCallSeqEmpty g m genResultTy
-
-let mkSeqCollect (cenv: cenv) env m enumElemTy genTy lam enumExpr =
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- let enumExpr = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g enumElemTy) (tyOfExpr cenv.g enumExpr) enumExpr
- mkCallSeqCollect cenv.g m enumElemTy genResultTy lam enumExpr
-
-let mkSeqUsing (cenv: cenv) (env: TcEnv) m resourceTy genTy resourceExpr lam =
- let g = cenv.g
- AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace cenv.g.system_IDisposable_ty resourceTy
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- mkCallSeqUsing cenv.g m resourceTy genResultTy resourceExpr lam
-
-let mkSeqDelay (cenv: cenv) env m genTy lam =
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- mkCallSeqDelay cenv.g m genResultTy (mkUnitDelayLambda cenv.g m lam)
-
-let mkSeqAppend (cenv: cenv) env m genTy e1 e2 =
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- let e1 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e1) e1
- let e2 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e2) e2
- mkCallSeqAppend cenv.g m genResultTy e1 e2
-
-let mkSeqFromFunctions (cenv: cenv) env m genTy e1 e2 =
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- let e2 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e2) e2
- mkCallSeqGenerated cenv.g m genResultTy e1 e2
-
-let mkSeqFinally (cenv: cenv) env m genTy e1 e2 =
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- let e1 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e1) e1
- mkCallSeqFinally cenv.g m genResultTy e1 e2
-
-let mkSeqTryWith (cenv: cenv) env m genTy origSeq exnFilter exnHandler =
- let g = cenv.g
- let genResultTy = NewInferenceType g
- UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
- let origSeq = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g origSeq) origSeq
- mkCallSeqTryWith cenv.g m genResultTy origSeq exnFilter exnHandler
-
-let mkSeqExprMatchClauses (pat, vspecs) innerExpr =
- [MatchClause(pat, None, TTarget(vspecs, innerExpr, None), pat.Range) ]
-
-let compileSeqExprMatchClauses (cenv: cenv) env inputExprMark (pat: Pattern, vspecs) innerExpr inputExprOpt bindPatTy genInnerTy =
- let patMark = pat.Range
- let tclauses = mkSeqExprMatchClauses (pat, vspecs) innerExpr
- CompilePatternForMatchClauses cenv env inputExprMark patMark false ThrowIncompleteMatchException inputExprOpt bindPatTy genInnerTy tclauses
-
-/// This case is used for computation expressions which are sequence expressions. Technically the code path is different because it
-/// typechecks rather than doing a shallow syntactic translation, and generates calls into the Seq.* library
-/// and helpers rather than to the builder methods (there is actually no builder for 'seq' in the library).
-/// These are later detected by state machine compilation.
-///
-/// Also "ienumerable extraction" is performed on arguments to "for".
-let TcSequenceExpression (cenv: cenv) env tpenv comp (overallTy: OverallTy) m =
-
- let g = cenv.g
- let genEnumElemTy = NewInferenceType g
- UnifyTypes cenv env m overallTy.Commit (mkSeqTy cenv.g genEnumElemTy)
-
- // Allow subsumption at 'yield' if the element type is nominal prior to the analysis of the body of the sequence expression
- let flex = not (isTyparTy cenv.g genEnumElemTy)
-
- // If there are no 'yield' in the computation expression then allow the type-directed rule
- // interpreting non-unit-typed expressions in statement positions as 'yield'. 'yield!' may be
- // present in the computation expression.
- let enableImplicitYield =
- cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
- && (YieldFree cenv comp)
-
- let mkSeqDelayedExpr m (coreExpr: Expr) =
- let overallTy = tyOfExpr cenv.g coreExpr
- mkSeqDelay cenv env m overallTy coreExpr
-
- let rec tryTcSequenceExprBody env genOuterTy tpenv comp =
- match comp with
- | SynExpr.ForEach (spFor, spIn, SeqExprOnly _seqExprOnly, _isFromSource, pat, pseudoEnumExpr, innerComp, _m) ->
- let pseudoEnumExpr =
- match RewriteRangeExpr pseudoEnumExpr with
- | Some e -> e
- | None -> pseudoEnumExpr
- // This expression is not checked with the knowledge it is an IEnumerable, since we permit other enumerable types with GetEnumerator/MoveNext methods, as does C#
- let pseudoEnumExpr, arbitraryTy, tpenv = TcExprOfUnknownType cenv env tpenv pseudoEnumExpr
- let enumExpr, enumElemTy = ConvertArbitraryExprToEnumerable cenv arbitraryTy env pseudoEnumExpr
- let patR, _, vspecs, envinner, tpenv = TcMatchPattern cenv enumElemTy env tpenv pat None
- let innerExpr, tpenv =
- let envinner = { envinner with eIsControlFlow = true }
- tcSequenceExprBody envinner genOuterTy tpenv innerComp
-
- let enumExprRange = enumExpr.Range
-
- // We attach the debug point to the lambda expression so we can fetch it out again in LowerComputedListOrArraySeqExpr
- let mFor = match spFor with DebugPointAtFor.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.For) | _ -> enumExprRange
-
- // We attach the debug point to the lambda expression so we can fetch it out again in LowerComputedListOrArraySeqExpr
- let mIn = match spIn with DebugPointAtInOrTo.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.InOrTo) | _ -> pat.Range
-
- match patR, vspecs, innerExpr with
- // Legacy peephole optimization:
- // "seq { .. for x in e1 -> e2 .. }" == "e1 |> Seq.map (fun x -> e2)"
- // "seq { .. for x in e1 do yield e2 .. }" == "e1 |> Seq.map (fun x -> e2)"
- //
- // This transformation is visible in quotations and thus needs to remain.
- | (TPat_as (TPat_wild _, PatternValBinding (v, _), _),
- [_],
- DebugPoints(Expr.App (Expr.Val (vref, _, _), _, [genEnumElemTy], [yieldExpr], _mYield), recreate))
- when valRefEq cenv.g vref cenv.g.seq_singleton_vref ->
-
- // The debug point mFor is attached to the 'map'
- // The debug point mIn is attached to the lambda
- // Note: the 'yield' part of the debug point for 'yield expr' is currently lost in debug points.
- let lam = mkLambda mIn v (recreate yieldExpr, genEnumElemTy)
- let enumExpr = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g enumElemTy) (tyOfExpr cenv.g enumExpr) enumExpr
- Some(mkCallSeqMap cenv.g mFor enumElemTy genEnumElemTy lam enumExpr, tpenv)
-
- | _ ->
- // The debug point mFor is attached to the 'collect'
- // The debug point mIn is attached to the lambda
- let matchv, matchExpr = compileSeqExprMatchClauses cenv env enumExprRange (patR, vspecs) innerExpr None enumElemTy genOuterTy
- let lam = mkLambda mIn matchv (matchExpr, tyOfExpr cenv.g matchExpr)
- Some(mkSeqCollect cenv env mFor enumElemTy genOuterTy lam enumExpr, tpenv)
-
- | SynExpr.For (forDebugPoint=spFor; toDebugPoint=spTo; ident=id; identBody=start; direction=dir; toBody=finish; doBody=innerComp; range=m) ->
- Some(tcSequenceExprBody env genOuterTy tpenv (elimFastIntegerForLoop (spFor, spTo, id, start, dir, finish, innerComp, m)))
-
- | SynExpr.While (spWhile, guardExpr, innerComp, _m) ->
- let guardExpr, tpenv =
- let env = { env with eIsControlFlow = false }
- TcExpr cenv (MustEqual cenv.g.bool_ty) env tpenv guardExpr
-
- let innerExpr, tpenv =
- let env = { env with eIsControlFlow = true }
- tcSequenceExprBody env genOuterTy tpenv innerComp
-
- let guardExprMark = guardExpr.Range
- let guardLambdaExpr = mkUnitDelayLambda cenv.g guardExprMark guardExpr
-
- // We attach the debug point to the lambda expression so we can fetch it out again in LowerComputedListOrArraySeqExpr
- let mWhile =
- match spWhile with
- | DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While)
- | _ -> guardExprMark
-
- let innerDelayedExpr = mkSeqDelayedExpr mWhile innerExpr
- Some(mkSeqFromFunctions cenv env guardExprMark genOuterTy guardLambdaExpr innerDelayedExpr, tpenv)
-
- | SynExpr.TryFinally (innerComp, unwindExpr, mTryToLast, spTry, spFinally, trivia) ->
- let env = { env with eIsControlFlow = true }
- let innerExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv innerComp
- let unwindExpr, tpenv = TcExpr cenv (MustEqual cenv.g.unit_ty) env tpenv unwindExpr
-
- // We attach the debug points to the lambda expressions so we can fetch it out again in LowerComputedListOrArraySeqExpr
- let mTry =
- match spTry with
- | DebugPointAtTry.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Try)
- | _ -> trivia.TryKeyword
-
- let mFinally =
- match spFinally with
- | DebugPointAtFinally.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Finally)
- | _ -> trivia.FinallyKeyword
-
- let innerExpr = mkSeqDelayedExpr mTry innerExpr
- let unwindExpr = mkUnitDelayLambda cenv.g mFinally unwindExpr
-
- Some(mkSeqFinally cenv env mTryToLast genOuterTy innerExpr unwindExpr, tpenv)
-
- | SynExpr.Paren (_, _, _, m) when not (cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield)->
- error(Error(FSComp.SR.tcConstructIsAmbiguousInSequenceExpression(), m))
-
- | SynExpr.ImplicitZero m ->
- Some(mkSeqEmpty cenv env m genOuterTy, tpenv )
-
- | SynExpr.DoBang (_rhsExpr, m) ->
- error(Error(FSComp.SR.tcDoBangIllegalInSequenceExpression(), m))
-
- | SynExpr.Sequential (sp, true, innerComp1, innerComp2, m) ->
- let env1 = { env with eIsControlFlow = (match sp with DebugPointAtSequential.SuppressNeither | DebugPointAtSequential.SuppressExpr -> true | _ -> false) }
-
- let res, tpenv = tcSequenceExprBodyAsSequenceOrStatement env1 genOuterTy tpenv innerComp1
-
- let env2 = { env with eIsControlFlow = (match sp with DebugPointAtSequential.SuppressNeither | DebugPointAtSequential.SuppressStmt -> true | _ -> false) }
-
- // "expr; cexpr" is treated as sequential execution
- // "cexpr; cexpr" is treated as append
- match res with
- | Choice1Of2 innerExpr1 ->
- let innerExpr2, tpenv = tcSequenceExprBody env2 genOuterTy tpenv innerComp2
- let innerExpr2 = mkSeqDelayedExpr innerExpr2.Range innerExpr2
- Some(mkSeqAppend cenv env innerComp1.Range genOuterTy innerExpr1 innerExpr2, tpenv)
- | Choice2Of2 stmt1 ->
- let innerExpr2, tpenv = tcSequenceExprBody env2 genOuterTy tpenv innerComp2
- Some(Expr.Sequential(stmt1, innerExpr2, NormalSeq, m), tpenv)
-
- | SynExpr.IfThenElse (guardExpr, thenComp, elseCompOpt, spIfToThen, _isRecovery, mIfToEndOfElseBranch, trivia) ->
- let guardExpr', tpenv = TcExpr cenv (MustEqual cenv.g.bool_ty) env tpenv guardExpr
- let env = { env with eIsControlFlow = true }
- let thenExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv thenComp
- let elseComp = (match elseCompOpt with Some c -> c | None -> SynExpr.ImplicitZero trivia.IfToThenRange)
- let elseExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv elseComp
- Some(mkCond spIfToThen mIfToEndOfElseBranch genOuterTy guardExpr' thenExpr elseExpr, tpenv)
-
- // 'let x = expr in expr'
- | SynExpr.LetOrUse (isUse=false (* not a 'use' binding *)) ->
- TcLinearExprs
- (fun overallTy envinner tpenv e -> tcSequenceExprBody envinner overallTy.Commit tpenv e)
- cenv env overallTy
- tpenv
- true
- comp
- id |> Some
-
- // 'use x = expr in expr'
- | SynExpr.LetOrUse (isUse=true; bindings=[SynBinding (kind=SynBindingKind.Normal; headPat=pat; expr=rhsExpr; debugPoint=spBind)]; body=innerComp; range=wholeExprMark) ->
-
- let bindPatTy = NewInferenceType g
- let inputExprTy = NewInferenceType g
- let pat', _, vspecs, envinner, tpenv = TcMatchPattern cenv bindPatTy env tpenv pat None
-
- UnifyTypes cenv env m inputExprTy bindPatTy
-
- let inputExpr, tpenv =
- let env = { env with eIsControlFlow = true }
- TcExpr cenv (MustEqual inputExprTy) env tpenv rhsExpr
-
- let innerExpr, tpenv =
- let envinner = { envinner with eIsControlFlow = true }
- tcSequenceExprBody envinner genOuterTy tpenv innerComp
-
- let mBind =
- match spBind with
- | DebugPointAtBinding.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Binding)
- | _ -> inputExpr.Range
-
- let inputExprMark = inputExpr.Range
-
- let matchv, matchExpr = compileSeqExprMatchClauses cenv envinner inputExprMark (pat', vspecs) innerExpr (Some inputExpr) bindPatTy genOuterTy
-
- let consumeExpr = mkLambda mBind matchv (matchExpr, genOuterTy)
-
- // The 'mBind' is attached to the lambda
- Some(mkSeqUsing cenv env wholeExprMark bindPatTy genOuterTy inputExpr consumeExpr, tpenv)
-
- | SynExpr.LetOrUseBang (range=m) ->
- error(Error(FSComp.SR.tcUseForInSequenceExpression(), m))
-
- | SynExpr.Match (spMatch, expr, clauses, _m, _trivia) ->
- let inputExpr, inputTy, tpenv = TcExprOfUnknownType cenv env tpenv expr
-
- let tclauses, tpenv =
- (tpenv, clauses) ||> List.mapFold (fun tpenv (SynMatchClause(pat, cond, innerComp, _, sp, _)) ->
- let patR, condR, vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv pat cond
- let envinner =
- match sp with
- | DebugPointAtTarget.Yes -> { envinner with eIsControlFlow = true }
- | DebugPointAtTarget.No -> envinner
- let innerExpr, tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
- MatchClause(patR, condR, TTarget(vspecs, innerExpr, None), patR.Range), tpenv)
-
- let inputExprTy = tyOfExpr cenv.g inputExpr
- let inputExprMark = inputExpr.Range
- let matchv, matchExpr = CompilePatternForMatchClauses cenv env inputExprMark inputExprMark true ThrowIncompleteMatchException (Some inputExpr) inputExprTy genOuterTy tclauses
-
- Some(mkLet spMatch inputExprMark matchv inputExpr matchExpr, tpenv)
-
- | SynExpr.TryWith (innerTry,withList,mTryToWith,_spTry,_spWith,trivia) ->
- if not(g.langVersion.SupportsFeature(LanguageFeature.TryWithInSeqExpression)) then
- error(Error(FSComp.SR.tcTryIllegalInSequenceExpression(), mTryToWith))
-
- let env = { env with eIsControlFlow = true }
- let tryExpr, tpenv =
- let inner,tpenv = tcSequenceExprBody env genOuterTy tpenv innerTry
- mkSeqDelayedExpr mTryToWith inner, tpenv
-
- // Compile the pattern twice, once as a filter with all succeeding targets returning "1", and once as a proper catch block.
- let clauses, tpenv =
- (tpenv, withList) ||> List.mapFold (fun tpenv (SynMatchClause(pat, cond, innerComp, m, sp, _)) ->
- let patR, condR, vspecs, envinner, tpenv = TcMatchPattern cenv g.exn_ty env tpenv pat cond
- let envinner =
- match sp with
- | DebugPointAtTarget.Yes -> { envinner with eIsControlFlow = true }
- | DebugPointAtTarget.No -> envinner
- let matchBody, tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
- let handlerClause = MatchClause(patR, condR, TTarget(vspecs, matchBody, None), patR.Range)
- let filterClause = MatchClause(patR, condR, TTarget([], Expr.Const(Const.Int32 1,m,g.int_ty), None), patR.Range)
- (handlerClause,filterClause), tpenv)
-
- let handlers, filterClauses = List.unzip clauses
- let withRange = trivia.WithToEndRange
- let v1, filterExpr = CompilePatternForMatchClauses cenv env withRange withRange true FailFilter None g.exn_ty g.int_ty filterClauses
- let v2, handlerExpr = CompilePatternForMatchClauses cenv env withRange withRange true FailFilter None g.exn_ty genOuterTy handlers
-
- let filterLambda = mkLambda filterExpr.Range v1 (filterExpr, genOuterTy)
- let handlerLambda = mkLambda handlerExpr.Range v2 (handlerExpr, genOuterTy)
-
- let combinatorExpr = mkSeqTryWith cenv env mTryToWith genOuterTy tryExpr filterLambda handlerLambda
- Some (combinatorExpr,tpenv)
-
- | SynExpr.YieldOrReturnFrom ((isYield, _), synYieldExpr, m) ->
- let env = { env with eIsControlFlow = false }
- let resultExpr, genExprTy, tpenv = TcExprOfUnknownType cenv env tpenv synYieldExpr
-
- if not isYield then errorR(Error(FSComp.SR.tcUseYieldBangForMultipleResults(), m))
-
- AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace genOuterTy genExprTy
-
- let resultExpr = mkCoerceExpr(resultExpr, genOuterTy, m, genExprTy)
-
- let resultExpr =
- if IsControlFlowExpression synYieldExpr then
- resultExpr
- else
- mkDebugPoint m resultExpr
-
- Some(resultExpr, tpenv)
-
- | SynExpr.YieldOrReturn ((isYield, _), synYieldExpr, m) ->
- let env = { env with eIsControlFlow = false }
- let genResultTy = NewInferenceType g
-
- if not isYield then errorR(Error(FSComp.SR.tcSeqResultsUseYield(), m))
-
- UnifyTypes cenv env m genOuterTy (mkSeqTy cenv.g genResultTy)
-
- let resultExpr, tpenv = TcExprFlex cenv flex true genResultTy env tpenv synYieldExpr
-
- let resultExpr = mkCallSeqSingleton cenv.g m genResultTy resultExpr
-
- let resultExpr =
- if IsControlFlowExpression synYieldExpr then
- resultExpr
- else
- mkDebugPoint m resultExpr
-
- Some(resultExpr, tpenv )
-
- | _ -> None
-
- and tcSequenceExprBody env (genOuterTy: TType) tpenv comp =
- let res, tpenv = tcSequenceExprBodyAsSequenceOrStatement env genOuterTy tpenv comp
- match res with
- | Choice1Of2 expr ->
- expr, tpenv
- | Choice2Of2 stmt ->
- let m = comp.Range
- let resExpr = Expr.Sequential(stmt, mkSeqEmpty cenv env m genOuterTy, NormalSeq, m)
- resExpr, tpenv
-
- and tcSequenceExprBodyAsSequenceOrStatement env genOuterTy tpenv comp =
- match tryTcSequenceExprBody env genOuterTy tpenv comp with
- | Some (expr, tpenv) -> Choice1Of2 expr, tpenv
- | None ->
-
- let env = { env with eContextInfo = ContextInfo.SequenceExpression genOuterTy }
-
- if enableImplicitYield then
- let hasTypeUnit, expr, tpenv = TryTcStmt cenv env tpenv comp
- if hasTypeUnit then
- Choice2Of2 expr, tpenv
- else
- let genResultTy = NewInferenceType g
- let mExpr = expr.Range
- UnifyTypes cenv env mExpr genOuterTy (mkSeqTy cenv.g genResultTy)
- let expr, tpenv = TcExprFlex cenv flex true genResultTy env tpenv comp
- let exprTy = tyOfExpr cenv.g expr
- AddCxTypeMustSubsumeType env.eContextInfo env.DisplayEnv cenv.css mExpr NoTrace genResultTy exprTy
- let resExpr = mkCallSeqSingleton cenv.g mExpr genResultTy (mkCoerceExpr(expr, genResultTy, mExpr, exprTy))
- Choice1Of2 resExpr, tpenv
- else
- let stmt, tpenv = TcStmtThatCantBeCtorBody cenv env tpenv comp
- Choice2Of2 stmt, tpenv
-
- let coreExpr, tpenv = tcSequenceExprBody env overallTy.Commit tpenv comp
- let delayedExpr = mkSeqDelayedExpr coreExpr.Range coreExpr
- delayedExpr, tpenv
-
-let TcSequenceExpressionEntry (cenv: cenv) env (overallTy: OverallTy) tpenv (hasBuilder, comp) m =
- match RewriteRangeExpr comp with
- | Some replacementExpr ->
- TcExpr cenv overallTy env tpenv replacementExpr
- | None ->
-
- let implicitYieldEnabled = cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
-
- let validateObjectSequenceOrRecordExpression = not implicitYieldEnabled
-
- match comp with
- | SynExpr.New _ ->
- errorR(Error(FSComp.SR.tcInvalidObjectExpressionSyntaxForm(), m))
- | SimpleSemicolonSequence cenv false _ when validateObjectSequenceOrRecordExpression ->
- errorR(Error(FSComp.SR.tcInvalidObjectSequenceOrRecordExpression(), m))
- | _ ->
- ()
-
- if not hasBuilder && not cenv.g.compilingFSharpCore then
- error(Error(FSComp.SR.tcInvalidSequenceExpressionSyntaxForm(), m))
-
- TcSequenceExpression cenv env tpenv comp overallTy m
-
-let TcArrayOrListComputedExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (isArray, comp) m =
- let g = cenv.g
-
- // The syntax '[ n .. m ]' and '[ n .. step .. m ]' is not really part of array or list syntax.
- // It could be in the future, e.g. '[ 1; 2..30; 400 ]'
- //
- // The elaborated form of '[ n .. m ]' is 'List.ofSeq (seq (op_Range n m))' and this shouldn't change
- match RewriteRangeExpr comp with
- | Some replacementExpr ->
- let genCollElemTy = NewInferenceType g
-
- let genCollTy = (if isArray then mkArrayType else mkListTy) cenv.g genCollElemTy
-
- UnifyTypes cenv env m overallTy.Commit genCollTy
-
- let exprTy = mkSeqTy cenv.g genCollElemTy
-
- let expr, tpenv = TcExpr cenv (MustEqual exprTy) env tpenv replacementExpr
-
- let expr =
- if cenv.g.compilingFSharpCore then
- expr
- else
- // We add a call to 'seq ... ' to make sure sequence expression compilation gets applied to the contents of the
- // comprehension. But don't do this in FSharp.Core.dll since 'seq' may not yet be defined.
- mkCallSeq cenv.g m genCollElemTy expr
-
- let expr = mkCoerceExpr(expr, exprTy, expr.Range, overallTy.Commit)
-
- let expr =
- if isArray then
- mkCallSeqToArray cenv.g m genCollElemTy expr
- else
- mkCallSeqToList cenv.g m genCollElemTy expr
- expr, tpenv
-
- | None ->
-
- // LanguageFeatures.ImplicitYield do not require this validation
- let implicitYieldEnabled = cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
- let validateExpressionWithIfRequiresParenthesis = not implicitYieldEnabled
- let acceptDeprecatedIfThenExpression = not implicitYieldEnabled
-
- match comp with
- | SimpleSemicolonSequence cenv acceptDeprecatedIfThenExpression elems ->
- match comp with
- | SimpleSemicolonSequence cenv false _ -> ()
- | _ when validateExpressionWithIfRequiresParenthesis -> errorR(Deprecated(FSComp.SR.tcExpressionWithIfRequiresParenthesis(), m))
- | _ -> ()
-
- let replacementExpr =
- if isArray then
- // This are to improve parsing/processing speed for parser tables by converting to an array blob ASAP
- let nelems = elems.Length
- if nelems > 0 && List.forall (function SynExpr.Const (SynConst.UInt16 _, _) -> true | _ -> false) elems
- then SynExpr.Const (SynConst.UInt16s (Array.ofList (List.map (function SynExpr.Const (SynConst.UInt16 x, _) -> x | _ -> failwith "unreachable") elems)), m)
- elif nelems > 0 && List.forall (function SynExpr.Const (SynConst.Byte _, _) -> true | _ -> false) elems
- then SynExpr.Const (SynConst.Bytes (Array.ofList (List.map (function SynExpr.Const (SynConst.Byte x, _) -> x | _ -> failwith "unreachable") elems), SynByteStringKind.Regular, m), m)
- else SynExpr.ArrayOrList (isArray, elems, m)
- else
- if cenv.g.langVersion.SupportsFeature(LanguageFeature.ReallyLongLists) then
- SynExpr.ArrayOrList (isArray, elems, m)
- else
- if elems.Length > 500 then
- error(Error(FSComp.SR.tcListLiteralMaxSize(), m))
- SynExpr.ArrayOrList (isArray, elems, m)
-
- TcExprUndelayed cenv overallTy env tpenv replacementExpr
- | _ ->
-
- let genCollElemTy = NewInferenceType g
-
- let genCollTy = (if isArray then mkArrayType else mkListTy) cenv.g genCollElemTy
-
- // Propagating type directed conversion, e.g. for
- // let x : seq = [ yield 1; if true then yield 2 ]
- TcPropagatingExprLeafThenConvert cenv overallTy genCollTy env (* canAdhoc *) m (fun () ->
-
- let exprTy = mkSeqTy cenv.g genCollElemTy
-
- // Check the comprehension
- let expr, tpenv = TcSequenceExpression cenv env tpenv comp (MustEqual exprTy) m
-
- let expr = mkCoerceIfNeeded cenv.g exprTy (tyOfExpr cenv.g expr) expr
-
- let expr =
- if cenv.g.compilingFSharpCore then
- //warning(Error(FSComp.SR.fslibUsingComputedListOrArray(), expr.Range))
- expr
- else
- // We add a call to 'seq ... ' to make sure sequence expression compilation gets applied to the contents of the
- // comprehension. But don't do this in FSharp.Core.dll since 'seq' may not yet be defined.
- mkCallSeq cenv.g m genCollElemTy expr
-
- let expr = mkCoerceExpr(expr, exprTy, expr.Range, overallTy.Commit)
-
- let expr =
- if isArray then
- mkCallSeqToArray cenv.g m genCollElemTy expr
- else
- mkCallSeqToList cenv.g m genCollElemTy expr
-
- expr, tpenv)
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs b/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs
index 09704614b8..80c1a656c2 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs
+++ b/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs
@@ -4,19 +4,23 @@ module internal FSharp.Compiler.CheckDeclarations
open System
open System.Collections.Generic
+open System.Threading
open FSharp.Compiler.Diagnostics
open Internal.Utilities.Collections
open Internal.Utilities.Library
open Internal.Utilities.Library.Extras
open Internal.Utilities.Library.ResultOrException
-open FSharp.Compiler
-open FSharp.Compiler.AbstractIL.IL
+open FSharp.Compiler
+open FSharp.Compiler.AbstractIL.IL
open FSharp.Compiler.AccessibilityLogic
open FSharp.Compiler.AttributeChecking
open FSharp.Compiler.CheckComputationExpressions
open FSharp.Compiler.CheckExpressions
+open FSharp.Compiler.CheckSequenceExpressions
+open FSharp.Compiler.CheckArrayOrListComputedExpressions
open FSharp.Compiler.CheckBasics
+open FSharp.Compiler.CheckExpressionsOps
open FSharp.Compiler.CheckIncrementalClasses
open FSharp.Compiler.CheckPatterns
open FSharp.Compiler.ConstraintSolver
@@ -278,7 +282,7 @@ let AddModuleAbbreviationAndReport tcSink scopem id modrefs env =
CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
let item = Item.ModuleOrNamespaces modrefs
- CallNameResolutionSink tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.AccessRights)
+ CallNameResolutionSink tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.AccessRights)
env
/// Adjust the TcEnv to account for opening the set of modules or namespaces implied by an `open` declaration
@@ -305,7 +309,7 @@ let AddRootModuleOrNamespaceRefs g amap m env modrefs =
/// Adjust the TcEnv to make more things 'InternalsVisibleTo'
let addInternalsAccessibility env (ccu: CcuThunk) =
- let compPath = CompPath (ccu.ILScopeRef, [])
+ let compPath = CompPath (ccu.ILScopeRef, TypedTree.SyntaxAccess.Unknown, [])
let eInternalsVisibleCompPaths = compPath :: env.eInternalsVisibleCompPaths
{ env with
eAccessRights = ComputeAccessRights env.eAccessPath eInternalsVisibleCompPaths env.eFamilyType // update this computed field
@@ -400,7 +404,7 @@ let private CheckDuplicatesArgNames (synVal: SynValSig) m =
for name in argNames do
errorR(Error((FSComp.SR.chkDuplicatedMethodParameter(name), m)))
-let private CheckDuplicatesAbstractMethodParmsSig (typeSpecs: SynTypeDefnSig list) =
+let private CheckDuplicatesAbstractMethodParamsSig (typeSpecs: SynTypeDefnSig list) =
for SynTypeDefnSig(typeRepr= trepr) in typeSpecs do
match trepr with
| SynTypeDefnSigRepr.ObjectModel(_, synMemberSigs, _) ->
@@ -412,25 +416,27 @@ let private CheckDuplicatesAbstractMethodParmsSig (typeSpecs: SynTypeDefnSig li
| _ -> ()
module TcRecdUnionAndEnumDeclarations =
+ open CheckExpressionsOps
let CombineReprAccess parent vis =
match parent with
| ParentNone -> vis
| Parent tcref -> combineAccess vis tcref.TypeReprAccessibility
- let MakeRecdFieldSpec _cenv env parent (isStatic, konst, tyR, attrsForProperty, attrsForField, id, nameGenerated, isMutable, vol, xmldoc, vis, m) =
- let vis, _ = ComputeAccessAndCompPath env None m vis None parent
+ let MakeRecdFieldSpec g env parent (isStatic, konst, tyR, attrsForProperty, attrsForField, id, nameGenerated, isMutable, vol, xmldoc, vis, m) =
+ let vis, _ = ComputeAccessAndCompPath g env None m vis None parent
let vis = CombineReprAccess parent vis
Construct.NewRecdField isStatic konst id nameGenerated tyR isMutable vol attrsForProperty attrsForField xmldoc vis false
let TcFieldDecl (cenv: cenv) env parent isIncrClass tpenv (isStatic, synAttrs, id: Ident, nameGenerated, ty, isMutable, xmldoc, vis) =
let g = cenv.g
let m = id.idRange
- let attrs, _ = TcAttributesWithPossibleTargets false cenv env AttributeTargets.FieldDecl synAttrs
+ let attrs, _ = TcAttributesWithPossibleTargets TcCanFail.ReportAllErrors cenv env AttributeTargets.FieldDecl synAttrs
+
let attrsForProperty, attrsForField = attrs |> List.partition (fun (attrTargets, _) -> (attrTargets &&& AttributeTargets.Property) <> enum 0)
let attrsForProperty = (List.map snd attrsForProperty)
let attrsForField = (List.map snd attrsForField)
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
let zeroInit = HasFSharpAttribute g g.attrib_DefaultValueAttribute attrsForField
let isVolatile = HasFSharpAttribute g g.attrib_VolatileFieldAttribute attrsForField
@@ -445,11 +451,11 @@ module TcRecdUnionAndEnumDeclarations =
let isPrivate = match vis with | Some (SynAccess.Private _) -> true | _ -> false
if isStatic && (not zeroInit || not isMutable || not isPrivate) then errorR(Error(FSComp.SR.tcStaticValFieldsMustBeMutableAndPrivate(), m))
let konst = if zeroInit then Some Const.Zero else None
- let rfspec = MakeRecdFieldSpec cenv env parent (isStatic, konst, tyR, attrsForProperty, attrsForField, id, nameGenerated, isMutable, isVolatile, xmldoc, vis, m)
+ let rfspec = MakeRecdFieldSpec g env parent (isStatic, konst, tyR, attrsForProperty, attrsForField, id, nameGenerated, isMutable, isVolatile, xmldoc, vis, m)
match parent with
| Parent tcref when useGenuineField tcref.Deref rfspec ->
// Recheck the attributes for errors if the definition only generates a field
- TcAttributesWithPossibleTargets false cenv env AttributeTargets.FieldDeclRestricted synAttrs |> ignore
+ TcAttributesWithPossibleTargets TcCanFail.ReportAllErrors cenv env AttributeTargets.FieldDeclRestricted synAttrs |> ignore
| _ -> ()
rfspec
@@ -494,25 +500,32 @@ module TcRecdUnionAndEnumDeclarations =
if not (String.isLeadingIdentifierCharacterUpperCase name) && name <> opNameCons && name <> opNameNil then
errorR(NotUpperCaseConstructor(id.idRange))
- let ValidateFieldNames (synFields: SynField list, tastFields: RecdField list) =
+ let private CheckUnionDuplicateFields (elems: Ident list) =
+ elems |> List.iteri (fun i (uc1: Ident) ->
+ elems |> List.iteri (fun j (uc2: Ident) ->
+ if j > i && uc1.idText = uc2.idText then
+ errorR(Error(FSComp.SR.tcFieldNameIsUsedModeThanOnce(uc1.idText), uc1.idRange))))
+
+ let ValidateFieldNames (synFields: SynField list, tastFields: RecdField list) =
+ let fields = synFields |> List.choose (function SynField(idOpt = Some ident) -> Some ident | _ -> None)
+ if fields.Length > 1 then
+ CheckUnionDuplicateFields fields
+
let seen = Dictionary()
(synFields, tastFields) ||> List.iter2 (fun sf f ->
match seen.TryGetValue f.LogicalName with
| true, synField ->
match sf, synField with
- | SynField(idOpt = Some id), SynField(idOpt = Some _) ->
- error(Error(FSComp.SR.tcFieldNameIsUsedModeThanOnce(id.idText), id.idRange))
| SynField(idOpt = Some id), SynField(idOpt = None)
| SynField(idOpt = None), SynField(idOpt = Some id) ->
- error(Error(FSComp.SR.tcFieldNameConflictsWithGeneratedNameForAnonymousField(id.idText), id.idRange))
- | _ -> assert false
+ errorR(Error(FSComp.SR.tcFieldNameConflictsWithGeneratedNameForAnonymousField(id.idText), id.idRange))
+ | _ -> ()
| _ ->
seen.Add(f.LogicalName, sf))
let TcUnionCaseDecl (cenv: cenv) env parent thisTy thisTyInst tpenv hasRQAAttribute (SynUnionCase(Attributes synAttrs, SynIdent(id, _), args, xmldoc, vis, m, _)) =
let g = cenv.g
- let attrs = TcAttributes cenv env AttributeTargets.UnionCaseDecl synAttrs // the attributes of a union case decl get attached to the generated "static factory" method
- let vis, _ = ComputeAccessAndCompPath env None m vis None parent
+ let vis, _ = ComputeAccessAndCompPath g env None m vis None parent
let vis = CombineReprAccess parent vis
CheckUnionCaseName cenv id hasRQAAttribute
@@ -527,7 +540,7 @@ module TcRecdUnionAndEnumDeclarations =
match idOpt, parent with
| Some fieldId, Parent tcref ->
let item = Item.UnionCaseField (UnionCaseInfo (thisTyInst, UnionCaseRef (tcref, id.idText)), i)
- CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
TcNamedFieldDecl cenv env parent false tpenv fld
| _ ->
Some(TcAnonFieldDecl cenv env parent tpenv (mkUnionCaseFieldName nFields i) fld)
@@ -539,7 +552,7 @@ module TcRecdUnionAndEnumDeclarations =
rfields, thisTy
| SynUnionCaseKind.FullType (ty, arity) ->
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
let curriedArgTys, recordTy = GetTopTauTypeInFSharpForm g (arity |> TranslateSynValInfo cenv m (TcAttributes cenv env) |> TranslatePartialValReprInfo []).ArgInfos tyR m
if curriedArgTys.Length > 1 then
@@ -551,7 +564,7 @@ module TcRecdUnionAndEnumDeclarations =
let rfields =
argTys |> List.mapi (fun i (argTy, argInfo) ->
let id = (match argInfo.Name with Some id -> id | None -> mkSynId m (mkUnionCaseFieldName nFields i))
- MakeRecdFieldSpec cenv env parent (false, None, argTy, [], [], id, argInfo.Name.IsNone, false, false, XmlDoc.Empty, None, m))
+ MakeRecdFieldSpec g env parent (false, None, argTy, [], [], id, argInfo.Name.IsNone, false, false, XmlDoc.Empty, None, m))
if not (typeEquiv g recordTy thisTy) then
error(Error(FSComp.SR.tcReturnTypesForUnionMustBeSameAsType(), m))
@@ -564,6 +577,23 @@ module TcRecdUnionAndEnumDeclarations =
let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs
let xmlDoc = xmldoc.ToXmlDoc(checkXmlDocs, Some names)
+ let attrs =
+ (*
+ The attributes of a union case decl get attached to the generated "static factory" method.
+ Enforce union-cases AttributeTargets:
+ - AttributeTargets.Method
+ type SomeUnion =
+ | Case1 of int // Compiles down to a static method
+ - AttributeTargets.Property
+ type SomeUnion =
+ | Case1 // Compiles down to a static property
+ *)
+ if g.langVersion.SupportsFeature(LanguageFeature.EnforceAttributeTargets) then
+ let target = if rfields.IsEmpty then AttributeTargets.Property else AttributeTargets.Method
+ TcAttributes cenv env target synAttrs
+ else
+ TcAttributes cenv env AttributeTargets.UnionCaseDecl synAttrs
+
Construct.NewUnionCase id rfields recordTy attrs xmlDoc vis
let TcUnionCaseDecls (cenv: cenv) env (parent: ParentRef) (thisTy: TType) (thisTyInst: TypeInst) hasRQAAttribute tpenv unionCases =
@@ -573,15 +603,15 @@ module TcRecdUnionAndEnumDeclarations =
|> List.map (TcUnionCaseDecl cenv env parent thisTy thisTyInst tpenv hasRQAAttribute)
unionCasesR |> CheckDuplicates (fun uc -> uc.Id) "union case"
- let MakeEnumCaseSpec cenv env parent attrs thisTy caseRange (caseIdent: Ident) (xmldoc: PreXmlDoc) value =
- let vis, _ = ComputeAccessAndCompPath env None caseRange None None parent
+ let MakeEnumCaseSpec g cenv env parent attrs thisTy caseRange (caseIdent: Ident) (xmldoc: PreXmlDoc) value =
+ let vis, _ = ComputeAccessAndCompPath g env None caseRange None None parent
let vis = CombineReprAccess parent vis
if caseIdent.idText = "value__" then errorR(Error(FSComp.SR.tcNotValidEnumCaseName(), caseIdent.idRange))
let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs
let xmlDoc = xmldoc.ToXmlDoc(checkXmlDocs, Some [])
Construct.NewRecdField true (Some value) caseIdent false thisTy false false [] attrs xmlDoc vis false
- let TcEnumDecl cenv env tpenv parent thisTy fieldTy (SynEnumCase (attributes = Attributes synAttrs; ident = SynIdent (id, _); valueExpr = valueExpr; xmlDoc = xmldoc; range = caseRange)) =
+ let TcEnumDecl g cenv env tpenv parent thisTy fieldTy (SynEnumCase (attributes = Attributes synAttrs; ident = SynIdent (id, _); valueExpr = valueExpr; xmlDoc = xmldoc; range = caseRange)) =
let attrs = TcAttributes cenv env AttributeTargets.Field synAttrs
let valueRange = valueExpr.Range
@@ -590,19 +620,19 @@ module TcRecdUnionAndEnumDeclarations =
error(Error(FSComp.SR.tcInvalidEnumerationLiteral(), valueRange))
| SynExpr.Const (synConst, _) ->
let konst = TcConst cenv fieldTy valueRange env synConst
- MakeEnumCaseSpec cenv env parent attrs thisTy caseRange id xmldoc konst
+ MakeEnumCaseSpec g cenv env parent attrs thisTy caseRange id xmldoc konst
| _ ->
let expr, actualTy, _ = TcExprOfUnknownType cenv env tpenv valueExpr
UnifyTypes cenv env valueRange fieldTy actualTy
-
+
match EvalLiteralExprOrAttribArg cenv.g expr with
- | Expr.Const (konst, _, _) -> MakeEnumCaseSpec cenv env parent attrs thisTy caseRange id xmldoc konst
+ | Expr.Const (konst, _, _) -> MakeEnumCaseSpec g cenv env parent attrs thisTy caseRange id xmldoc konst
| _ -> error(Error(FSComp.SR.tcInvalidEnumerationLiteral(), valueRange))
let TcEnumDecls (cenv: cenv) env tpenv parent thisTy enumCases =
let g = cenv.g
let fieldTy = NewInferenceType g
- let enumCases' = enumCases |> List.map (TcEnumDecl cenv env tpenv parent thisTy fieldTy) |> CheckDuplicates (fun f -> f.Id) "enum element"
+ let enumCases' = enumCases |> List.map (TcEnumDecl g cenv env tpenv parent thisTy fieldTy) |> CheckDuplicates (fun f -> f.Id) "enum element"
fieldTy, enumCases'
//-------------------------------------------------------------------------
@@ -663,7 +693,7 @@ let TcOpenModuleOrNamespaceDecl tcSink g amap scopem env (longId, m) =
CheckNamespaceModuleOrTypeName g id
let IsPartiallyQualifiedNamespace (modref: ModuleOrNamespaceRef) =
- let (CompPath(_, p)) = modref.CompilationPath
+ let (CompPath(_, _, p)) = modref.CompilationPath
// Bug FSharp 1.0 3274: FSI paths don't count when determining this warning
let p =
match p with
@@ -713,7 +743,7 @@ let TcOpenTypeDecl (cenv: cenv) mOpenDecl scopem env (synType: SynType, m) =
checkLanguageFeatureError g.langVersion LanguageFeature.OpenTypeDeclaration mOpenDecl
- let ty, _tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Open WarnOnIWSAM.Yes env emptyUnscopedTyparEnv synType
+ let ty, _tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurrence.Open WarnOnIWSAM.Yes env emptyUnscopedTyparEnv synType
if not (isAppTy g ty) then
error(Error(FSComp.SR.tcNamedTypeRequired("open type"), m))
@@ -759,7 +789,7 @@ module AddAugmentationDeclarations =
let tcaug = tycon.TypeContents
let ty = if tcref.Deref.IsFSharpException then g.exn_ty else generalizedTyconRef g tcref
let m = tycon.Range
- let genericIComparableTy = mkAppTy g.system_GenericIComparable_tcref [ty]
+ let genericIComparableTy = mkWoNullAppTy g.system_GenericIComparable_tcref [ty]
let hasExplicitIComparable = tycon.HasInterface g g.mk_IComparable_ty
@@ -800,12 +830,18 @@ module AddAugmentationDeclarations =
if hasExplicitIStructuralEquatable then
errorR(Error(FSComp.SR.tcImplementsIStructuralEquatableExplicitly(tycon.DisplayName), m))
else
- let evspec1, evspec2, evspec3 = AugmentTypeDefinitions.MakeValsForEqualityWithComparerAugmentation g tcref
+ let augmentation = AugmentTypeDefinitions.MakeValsForEqualityWithComparerAugmentation g tcref
PublishInterface cenv env.DisplayEnv tcref m true g.mk_IStructuralEquatable_ty
- tcaug.SetHashAndEqualsWith (mkLocalValRef evspec1, mkLocalValRef evspec2, mkLocalValRef evspec3)
- PublishValueDefn cenv env ModuleOrMemberBinding evspec1
- PublishValueDefn cenv env ModuleOrMemberBinding evspec2
- PublishValueDefn cenv env ModuleOrMemberBinding evspec3
+ tcaug.SetHashAndEqualsWith (
+ mkLocalValRef augmentation.GetHashCode,
+ mkLocalValRef augmentation.GetHashCodeWithComparer,
+ mkLocalValRef augmentation.EqualsWithComparer,
+ Some (mkLocalValRef augmentation.EqualsExactWithComparer))
+
+ PublishValueDefn cenv env ModuleOrMemberBinding augmentation.GetHashCode
+ PublishValueDefn cenv env ModuleOrMemberBinding augmentation.GetHashCodeWithComparer
+ PublishValueDefn cenv env ModuleOrMemberBinding augmentation.EqualsWithComparer
+ PublishValueDefnMaybeInclCompilerGenerated cenv env true ModuleOrMemberBinding augmentation.EqualsExactWithComparer
let AddGenericCompareBindings (cenv: cenv) (tycon: Tycon) =
if (* AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && *) Option.isSome tycon.GeneratedCompareToValues then
@@ -843,7 +879,7 @@ module AddAugmentationDeclarations =
let m = tycon.Range
// Note: tycon.HasOverride only gives correct results after we've done the type augmentation
- let hasExplicitObjectEqualsOverride = tycon.HasOverride g "Equals" [g.obj_ty]
+ let hasExplicitObjectEqualsOverride = tycon.HasOverride g "Equals" [g.obj_ty_ambivalent]
let hasExplicitGenericIEquatable = tcaugHasNominalInterface g tcaug g.system_GenericIEquatable_tcref
if hasExplicitGenericIEquatable then
@@ -857,7 +893,7 @@ module AddAugmentationDeclarations =
let vspec1, vspec2 = AugmentTypeDefinitions.MakeValsForEqualsAugmentation g tcref
tcaug.SetEquals (mkLocalValRef vspec1, mkLocalValRef vspec2)
if not tycon.IsFSharpException then
- PublishInterface cenv env.DisplayEnv tcref m true (mkAppTy g.system_GenericIEquatable_tcref [ty])
+ PublishInterface cenv env.DisplayEnv tcref m true (mkWoNullAppTy g.system_GenericIEquatable_tcref [ty])
PublishValueDefn cenv env ModuleOrMemberBinding vspec1
PublishValueDefn cenv env ModuleOrMemberBinding vspec2
AugmentTypeDefinitions.MakeBindingsForEqualsAugmentation g tycon
@@ -866,7 +902,8 @@ module AddAugmentationDeclarations =
let ShouldAugmentUnion (g: TcGlobals) (tycon: Tycon) =
g.langVersion.SupportsFeature LanguageFeature.UnionIsPropertiesVisible &&
- HasDefaultAugmentationAttribute g (mkLocalTyconRef tycon)
+ HasDefaultAugmentationAttribute g (mkLocalTyconRef tycon) &&
+ tycon.UnionCasesArray.Length > 1
let AddUnionAugmentationValues (cenv: cenv) (env: TcEnv) tycon =
let tcref = mkLocalTyconRef tycon
@@ -902,11 +939,6 @@ module MutRecBindingChecking =
/// A 'member' definition in a class
| Phase2AMember of PreCheckingRecursiveBinding
-#if OPEN_IN_TYPE_DECLARATIONS
- /// A dummy declaration, should we ever support 'open' in type definitions
- | Phase2AOpen of SynOpenDeclTarget * range
-#endif
-
/// Indicates the super init has just been called, 'this' may now be published
| Phase2AIncrClassCtorJustAfterSuperInit
@@ -1039,7 +1071,7 @@ module MutRecBindingChecking =
let innerState = (None, envForTycon, tpenv, recBindIdx, uncheckedBindsRev)
[Phase2AIncrClassCtor (staticCtorInfo, None)], innerState
- | Some (SynMemberDefn.ImplicitCtor (vis, Attributes attrs, SynSimplePats.SimplePats(pats=spats), thisIdOpt, xmlDoc, m,_)), ContainerInfo(_, Some memberContainerInfo) ->
+ | Some (SynMemberDefn.ImplicitCtor (vis, Attributes attrs, pat, thisIdOpt, xmlDoc, m,_)), ContainerInfo(_, Some memberContainerInfo) ->
let (MemberOrValContainerInfo(tcref, _, baseValOpt, safeInitInfo, _)) = memberContainerInfo
@@ -1050,7 +1082,7 @@ module MutRecBindingChecking =
let staticCtorInfo = TcStaticImplicitCtorInfo_Phase2A(cenv, envForTycon, tcref, m, copyOfTyconTypars)
// Phase2A: make incrCtorInfo - ctorv, thisVal etc, type depends on argty(s)
- let incrCtorInfo = TcImplicitCtorInfo_Phase2A(cenv, envForTycon, tpenv, tcref, vis, attrs, spats, thisIdOpt, baseValOpt, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc)
+ let incrCtorInfo = TcImplicitCtorInfo_Phase2A(cenv, envForTycon, tpenv, tcref, vis, attrs, pat, thisIdOpt, baseValOpt, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc)
// Phase2A: Add copyOfTyconTypars from incrCtorInfo - or from tcref
let envForTycon = AddDeclaredTypars CheckForDuplicateTypars staticCtorInfo.IncrCtorDeclaredTypars envForTycon
@@ -1058,7 +1090,7 @@ module MutRecBindingChecking =
[Phase2AIncrClassCtor (staticCtorInfo, Some incrCtorInfo)], innerState
- | Some (SynMemberDefn.ImplicitInherit (ty, arg, _baseIdOpt, m)), _ ->
+ | Some (SynMemberDefn.ImplicitInherit (ty, arg, _baseIdOpt, m, _)), _ ->
if tcref.TypeOrMeasureKind = TyparKind.Measure then
error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m))
@@ -1124,13 +1156,6 @@ module MutRecBindingChecking =
let innerState = (incrCtorInfoOpt, envForTycon, tpenv, recBindIdx, List.rev binds @ uncheckedBindsRev)
cbinds, innerState
-
-#if OPEN_IN_TYPE_DECLARATIONS
- | Some (SynMemberDefn.Open (target, m)), _ ->
- let innerState = (incrCtorInfoOpt, env, tpenv, recBindIdx, prelimRecValuesRev, uncheckedBindsRev)
- [ Phase2AOpen (target, m) ], innerState
-#endif
-
| definition ->
error(InternalError(sprintf "Unexpected definition %A" definition, m)))
@@ -1139,11 +1164,11 @@ module MutRecBindingChecking =
for b1, b2 in List.pairwise defnAs do
match b1, b2 with
| TyconBindingPhase2A.Phase2AMember {
- SyntacticBinding = NormalizedBinding(pat = SynPat.Named(ident = SynIdent(ident = getIdent)); valSynData = SynValData(memberFlags = Some mf))
+ SyntacticBinding = NormalizedBinding(pat = SynPat.Named(ident = SynIdent(ident = Get_OrSet_Ident & getIdent)); valSynData = SynValData(memberFlags = Some mf))
RecBindingInfo = RecursiveBindingInfo(vspec = vGet)
},
TyconBindingPhase2A.Phase2AMember {
- SyntacticBinding = NormalizedBinding(pat = SynPat.Named(ident = SynIdent(ident = setIdent)))
+ SyntacticBinding = NormalizedBinding(pat = SynPat.Named(ident = SynIdent(ident = Get_OrSet_Ident & setIdent)))
RecBindingInfo = RecursiveBindingInfo(vspec = vSet)
} when Range.equals getIdent.idRange setIdent.idRange ->
match vGet.ApparentEnclosingEntity with
@@ -1162,7 +1187,7 @@ module MutRecBindingChecking =
[ PropInfo.FSProp(g, apparentEnclosingType, Some (mkLocalValRef vGet), Some (mkLocalValRef vSet)) ],
Some getIdent.idRange
)
- CallNameResolutionSink cenv.tcSink (getIdent.idRange, envForTycon.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, envForTycon.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (getIdent.idRange, envForTycon.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, envForTycon.eAccessRights)
| _ -> ()
// If no constructor call, insert Phase2AIncrClassCtorJustAfterSuperInit at start
@@ -1178,9 +1203,6 @@ module MutRecBindingChecking =
let rest =
let isAfter b =
match b with
-#if OPEN_IN_TYPE_DECLARATIONS
- | Phase2AOpen _
-#endif
| Phase2AIncrClassCtor _ | Phase2AInherit _ | Phase2AIncrClassCtorJustAfterSuperInit -> false
| Phase2AIncrClassBindings (_, binds, _, _, _) -> binds |> List.exists (function SynBinding (kind=SynBindingKind.Do) -> true | _ -> false)
| Phase2AIncrClassCtorJustAfterLastLet
@@ -1334,10 +1356,10 @@ module MutRecBindingChecking =
// Phase2B: typecheck the argument to an 'inherits' call and build the new object expr for the inherit-call
| Phase2AInherit (synBaseTy, arg, baseValOpt, m) ->
- let baseTy, tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Use WarnOnIWSAM.Yes envInstance tpenv synBaseTy
- let baseTy = baseTy |> convertToTypeWithMetadataIfPossible g
let inheritsExpr, tpenv =
- try
+ try
+ let baseTy, tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurrence.Use WarnOnIWSAM.Yes envInstance tpenv synBaseTy
+ let baseTy = baseTy |> convertToTypeWithMetadataIfPossible g
TcNewExpr cenv envInstance tpenv baseTy (Some synBaseTy.Range) true arg m
with RecoverableException e ->
errorRecovery e m
@@ -1399,16 +1421,6 @@ module MutRecBindingChecking =
| Phase2AIncrClassCtorJustAfterLastLet ->
let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
Phase2BIncrClassCtorJustAfterLastLet, innerState
-
-
-#if OPEN_IN_TYPE_DECLARATIONS
- | Phase2AOpen(target, m) ->
- let envInstance = TcOpenDecl cenv m scopem envInstance target
- let envStatic = TcOpenDecl cenv m scopem envStatic target
- let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
- Phase2BOpen, innerState
-#endif
-
// Note: this path doesn't add anything the environment, because the member is already available off via its type
@@ -1592,7 +1604,7 @@ module MutRecBindingChecking =
if tcref.IsStructOrEnumTycon then
Some (incrCtorInfo, mkUnit g tcref.Range, false), defnCs
else
- let inheritsExpr, _ = TcNewExpr cenv envForDecls tpenv g.obj_ty None true (SynExpr.Const (SynConst.Unit, tcref.Range)) tcref.Range
+ let inheritsExpr, _ = TcNewExpr cenv envForDecls tpenv g.obj_ty_noNulls None true (SynExpr.Const (SynConst.Unit, tcref.Range)) tcref.Range
// If there is no 'inherits' and no simple non-static 'let' of a non-method then add a debug point at the entry to the constructor over the type name itself.
let addDebugPointAtImplicitCtorArguments =
@@ -1926,9 +1938,10 @@ module MutRecBindingChecking =
let private ReportErrorOnStaticClass (synMembers: SynMemberDefn list) =
for mem in synMembers do
match mem with
- | SynMemberDefn.ImplicitCtor(ctorArgs = SynSimplePats.SimplePats(pats = pats)) when (not pats.IsEmpty) ->
- for pat in pats do
- warning(Error(FSComp.SR.chkConstructorWithArgumentsOnStaticClasses(), pat.Range))
+ | SynMemberDefn.ImplicitCtor(ctorArgs = pat) ->
+ match pat with
+ | SynPat.Paren(innerPat, _) -> warning(Error(FSComp.SR.chkConstructorWithArgumentsOnStaticClasses(), innerPat.Range))
+ | _ -> ()
| SynMemberDefn.Member(SynBinding(valData = SynValData(memberFlags = Some memberFlags)), m) when memberFlags.MemberKind = SynMemberKind.Constructor ->
warning(Error(FSComp.SR.chkAdditionalConstructorOnStaticClasses(), m))
| SynMemberDefn.Member(SynBinding(valData = SynValData(memberFlags = Some memberFlags)), m) when memberFlags.IsInstance ->
@@ -1962,7 +1975,7 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial mBinds scopem mutRecNSInfo (env
let intfTyR =
let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTyconTypars envForTycon
- TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType WarnOnIWSAM.No envinner emptyUnscopedTyparEnv intfTy |> fst
+ TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.No envinner emptyUnscopedTyparEnv intfTy |> fst
if not (tcref.HasInterface g intfTyR) then
error(Error(FSComp.SR.tcAllImplementedInterfacesShouldBeDeclared(), intfTy.Range))
@@ -1973,8 +1986,8 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial mBinds scopem mutRecNSInfo (env
if (generatedCompareToValues && typeEquiv g intfTyR g.mk_IComparable_ty) ||
(generatedCompareToWithComparerValues && typeEquiv g intfTyR g.mk_IStructuralComparable_ty) ||
- (generatedCompareToValues && typeEquiv g intfTyR (mkAppTy g.system_GenericIComparable_tcref [ty])) ||
- (generatedHashAndEqualsWithComparerValues && typeEquiv g intfTyR (mkAppTy g.system_GenericIEquatable_tcref [ty])) ||
+ (generatedCompareToValues && typeEquiv g intfTyR (mkWoNullAppTy g.system_GenericIComparable_tcref [ty])) ||
+ (generatedHashAndEqualsWithComparerValues && typeEquiv g intfTyR (mkWoNullAppTy g.system_GenericIEquatable_tcref [ty])) ||
(generatedHashAndEqualsWithComparerValues && typeEquiv g intfTyR g.mk_IStructuralEquatable_ty) then
errorR(Error(FSComp.SR.tcDefaultImplementationForInterfaceHasAlreadyBeenAdded(), intfTy.Range))
@@ -2387,10 +2400,10 @@ let CheckForDuplicateModule env nm m =
/// Check 'exception' declarations in implementations and signatures
module TcExceptionDeclarations =
- let TcExnDefnCore_Phase1A cenv env parent (SynExceptionDefnRepr(Attributes synAttrs, SynUnionCase(ident= SynIdent(id,_)), _, xmlDoc, vis, m)) =
+ let TcExnDefnCore_Phase1A g cenv env parent (SynExceptionDefnRepr(Attributes synAttrs, SynUnionCase(ident= SynIdent(id,_)), _, xmlDoc, vis, m)) =
let attrs = TcAttributes cenv env AttributeTargets.ExnDecl synAttrs
if not (String.isLeadingIdentifierCharacterUpperCase id.idText) then errorR(NotUpperCaseConstructor id.idRange)
- let vis, cpath = ComputeAccessAndCompPath env None m vis None parent
+ let vis, cpath = ComputeAccessAndCompPath g env None m vis None parent
let vis = TcRecdUnionAndEnumDeclarations.CombineReprAccess parent vis
CheckForDuplicateConcreteType env (id.idText + "Exception") id.idRange
CheckForDuplicateConcreteType env id.idText id.idRange
@@ -2413,7 +2426,7 @@ module TcExceptionDeclarations =
let tcref = mkLocalTyconRef exnc
let thisTypInst, _ = generalizeTyconRef g tcref
let item = Item.RecdField (RecdFieldInfo (thisTypInst, RecdFieldRef (tcref, fieldId.idText)))
- CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
| _ -> ()
TcRecdUnionAndEnumDeclarations.TcAnonFieldDecl cenv env parent emptyUnscopedTyparEnv (mkExceptionFieldName i) fdef)
@@ -2456,12 +2469,12 @@ module TcExceptionDeclarations =
exnc.SetExceptionInfo repr
let item = Item.ExnCase(mkLocalTyconRef exnc)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
args'
let private TcExnDefnCore (cenv: cenv) env parent synExnDefnRepr =
let g = cenv.g
- let exnc = TcExnDefnCore_Phase1A cenv env parent synExnDefnRepr
+ let exnc = TcExnDefnCore_Phase1A g cenv env parent synExnDefnRepr
let args' = TcExnDefnCore_Phase1G_EstablishRepresentation cenv env parent exnc synExnDefnRepr
exnc.TypeContents.tcaug_super <- Some g.exn_ty
@@ -2495,7 +2508,7 @@ module TcExceptionDeclarations =
let TcExnSignature (cenv: cenv) envInitial parent tpenv (SynExceptionSig(exnRepr=core; members=aug), scopem) =
match core with
- | SynExceptionDefnRepr(caseName = SynUnionCase(ident = SynIdent(ident, _))) when ident.idText = "" ->
+ | SynExceptionDefnRepr(caseName = SynUnionCase(ident = SynIdent(ident, _))) when String.IsNullOrEmpty(ident.idText) ->
[], [], None, envInitial
| _ ->
let g = cenv.g
@@ -2600,11 +2613,11 @@ module EstablishTypeDefinitionCores =
match args with
| SynUnionCaseKind.Fields flds ->
for SynField(fieldType = ty; range = m) in flds do
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
yield (tyR, m)
| SynUnionCaseKind.FullType (ty, arity) ->
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
let curriedArgTys, _ = GetTopTauTypeInFSharpForm g (arity |> TranslateSynValInfo cenv m (TcAttributes cenv env) |> TranslatePartialValReprInfo []).ArgInfos tyR m
if curriedArgTys.Length > 1 then
@@ -2618,13 +2631,13 @@ module EstablishTypeDefinitionCores =
for field in fields do
let (SynField(isStatic = isStatic; fieldType = ty; range = m)) = field
if not isStatic then
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
yield (tyR, m)
match implicitCtorSynPats with
| None -> ()
- | Some spats ->
- let ctorArgNames, patEnv = TcSimplePatsOfUnknownType cenv true NoCheckCxs env tpenv spats
+ | Some pat ->
+ let ctorArgNames, patEnv, _ = TcSimplePatsOfUnknownType cenv true NoCheckCxs env tpenv pat
let (TcPatLinearEnv(_, names, _)) = patEnv
@@ -2637,7 +2650,7 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnSimpleRepr.Record (_, fields, _) ->
for SynField(fieldType = ty; range = m) in fields do
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
yield (tyR, m)
| _ ->
@@ -2728,7 +2741,7 @@ module EstablishTypeDefinitionCores =
let moduleKind = ComputeModuleOrNamespaceKind g true typeNames modAttrs id.idText
let modName = AdjustModuleName moduleKind id.idText
- let vis, _ = ComputeAccessAndCompPath envInitial None id.idRange vis None parent
+ let vis, _ = ComputeAccessAndCompPath g envInitial None id.idRange vis None parent
CheckForDuplicateModule envInitial id.idText id.idRange
let id = ident (modName, id.idRange)
@@ -2757,13 +2770,13 @@ module EstablishTypeDefinitionCores =
match synTyconRepr with
| SynTypeDefnSimpleRepr.Exception synExnDefnRepr ->
- TcExceptionDeclarations.TcExnDefnCore_Phase1A cenv env parent synExnDefnRepr
+ TcExceptionDeclarations.TcExnDefnCore_Phase1A g cenv env parent synExnDefnRepr
| _ ->
let id = ComputeTyconName (id, (match synTyconRepr with SynTypeDefnSimpleRepr.TypeAbbrev _ -> false | _ -> true), checkedTypars)
// Augmentations of type definitions are allowed within the same file as long as no new type representation or abbreviation is given
CheckForDuplicateConcreteType env id.idText id.idRange
- let vis, cpath = ComputeAccessAndCompPath env None id.idRange synVis None parent
+ let vis, cpath = ComputeAccessAndCompPath g env None id.idRange synVis None parent
// Establish the visibility of the representation, e.g.
// type R =
@@ -2780,7 +2793,8 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnSimpleRepr.Enum _ -> None
| SynTypeDefnSimpleRepr.Exception _ -> None
- let visOfRepr, _ = ComputeAccessAndCompPath env None id.idRange synVisOfRepr None parent
+ let visOfRepr, _ = ComputeAccessAndCompPath g env None id.idRange synVisOfRepr None parent
+
let visOfRepr = combineAccess vis visOfRepr
// If we supported nested types and modules then additions would be needed here
let lmodTy = MaybeLazy.Strict (Construct.NewEmptyModuleOrNamespaceType ModuleOrType)
@@ -2790,19 +2804,24 @@ module EstablishTypeDefinitionCores =
match synTyconRepr with
| SynTypeDefnSimpleRepr.General (SynTypeDefnKind.Delegate (_ty, arity), _, _, _, _, _, _, _) -> arity.ArgNames
| SynTypeDefnSimpleRepr.General (SynTypeDefnKind.Unspecified, _, _, _, _, _, Some synPats, _) ->
- let rec patName (p: SynSimplePat) =
+ let rec patName (p: SynPat) =
match p with
- | SynSimplePat.Id (id, _, _, _, _, _) -> id.idText
- | SynSimplePat.Typed(pat, _, _) -> patName pat
- | SynSimplePat.Attrib(pat, _, _) -> patName pat
+ | SynPat.Named(ident = (SynIdent(id, _))) -> Some id.idText
+ | SynPat.Typed(pat = pat)
+ | SynPat.Attrib(pat = pat) -> patName pat
+ | _ -> None
- let rec pats (p: SynSimplePats) =
- match p with
- | SynSimplePats.SimplePats (pats = ps) -> ps
+ let getSimplePats (pat: SynPat) =
+ match pat with
+ | SynPat.Paren(pat, _) ->
+ match pat with
+ | SynPat.Tuple(false, pats, _, _) -> pats
+ | pat -> [pat]
+ | _ -> []
let patNames =
- pats synPats
- |> List.map patName
+ getSimplePats synPats
+ |> List.choose patName
patNames
| _ -> []
@@ -2834,12 +2853,28 @@ module EstablishTypeDefinitionCores =
// Allow failure of constructor resolution because Vals for members in the same recursive group are not yet available
let attrs, getFinalAttrs = TcAttributesCanFail cenv envinner AttributeTargets.TyconDecl synAttrs
let hasMeasureAttr = HasFSharpAttribute g g.attrib_MeasureAttribute attrs
+ let hasStructAttr = HasFSharpAttribute g g.attrib_StructAttribute attrs
+ let hasCLIMutable = HasFSharpAttribute g g.attrib_CLIMutableAttribute attrs
+ let hasAllowNullLiteralAttr = HasFSharpAttribute g g.attrib_AllowNullLiteralAttribute attrs
+ let hasSealedAttr = HasFSharpAttribute g g.attrib_SealedAttribute attrs
+ let structLayoutAttr = HasFSharpAttribute g g.attrib_StructLayoutAttribute attrs
+
+ // We want to keep these special attributes treatment and avoid having two errors for the same attribute.
+ let reportAttributeTargetsErrors =
+ g.langVersion.SupportsFeature(LanguageFeature.EnforceAttributeTargets)
+ && not hasCLIMutable // CLIMutableAttribute has a special treatment(specific error FS3132)
+ && not hasAllowNullLiteralAttr // AllowNullLiteralAttribute has a special treatment(specific errors FS0934, FS093)
+ && not hasSealedAttr // SealedAttribute has a special treatment(specific error FS942)
+ && not structLayoutAttr // StructLayoutAttribute has a special treatment(specific error FS0937)
+
+ let noCLIMutableAttributeCheck() =
+ if hasCLIMutable then errorR (Error(FSComp.SR.tcThisTypeMayNotHaveACLIMutableAttribute(), m))
let isStructRecordOrUnionType =
match synTyconRepr with
| SynTypeDefnSimpleRepr.Record _
| TyconCoreAbbrevThatIsReallyAUnion (hasMeasureAttr, envinner, id) _
- | SynTypeDefnSimpleRepr.Union _ ->
+ | SynTypeDefnSimpleRepr.Union _ ->
HasFSharpAttribute g g.attrib_StructAttribute attrs
| _ ->
false
@@ -2868,9 +2903,15 @@ module EstablishTypeDefinitionCores =
| TyconCoreAbbrevThatIsReallyAUnion (hasMeasureAttr, envinner, id) (_, m)
| SynTypeDefnSimpleRepr.Union (_, _, m) ->
-
+ noCLIMutableAttributeCheck()
// Run InferTyconKind to raise errors on inconsistent attribute sets
InferTyconKind g (SynTypeDefnKind.Union, attrs, [], [], inSig, true, m) |> ignore
+
+ if reportAttributeTargetsErrors then
+ if hasStructAttr then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Struct synAttrs |> ignore
+ else
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Class synAttrs |> ignore
// Note: the table of union cases is initially empty
Construct.MakeUnionRepr []
@@ -2882,35 +2923,57 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (s, m) ->
let s = (s :?> ILType)
+ noCLIMutableAttributeCheck()
// Run InferTyconKind to raise errors on inconsistent attribute sets
InferTyconKind g (SynTypeDefnKind.IL, attrs, [], [], inSig, true, m) |> ignore
TAsmRepr s
| SynTypeDefnSimpleRepr.Record (_, _, m) ->
-
// Run InferTyconKind to raise errors on inconsistent attribute sets
InferTyconKind g (SynTypeDefnKind.Record, attrs, [], [], inSig, true, m) |> ignore
+
+ if reportAttributeTargetsErrors then
+ if hasStructAttr then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Struct synAttrs |> ignore
+ else
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Class synAttrs |> ignore
// Note: the table of record fields is initially empty
TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData TFSharpRecord)
| SynTypeDefnSimpleRepr.General (kind, _, slotsigs, fields, isConcrete, _, _, _) ->
let kind = InferTyconKind g (kind, attrs, slotsigs, fields, inSig, isConcrete, m)
+ noCLIMutableAttributeCheck()
match kind with
| SynTypeDefnKind.Opaque ->
TNoRepr
| _ ->
let kind =
match kind with
- | SynTypeDefnKind.Class -> TFSharpClass
- | SynTypeDefnKind.Interface -> TFSharpInterface
- | SynTypeDefnKind.Delegate _ -> TFSharpDelegate (MakeSlotSig("Invoke", g.unit_ty, [], [], [], None))
- | SynTypeDefnKind.Struct -> TFSharpStruct
+ | SynTypeDefnKind.Class ->
+ if reportAttributeTargetsErrors then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Class synAttrs |> ignore
+ TFSharpClass
+ | SynTypeDefnKind.Interface ->
+ if reportAttributeTargetsErrors then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Interface synAttrs |> ignore
+ TFSharpInterface
+ | SynTypeDefnKind.Delegate _ ->
+ if reportAttributeTargetsErrors then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Delegate synAttrs |> ignore
+ TFSharpDelegate (MakeSlotSig("Invoke", g.unit_ty, [], [], [], None))
+ | SynTypeDefnKind.Struct ->
+ if reportAttributeTargetsErrors then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Struct synAttrs |> ignore
+ TFSharpStruct
| _ -> error(InternalError("should have inferred tycon kind", m))
TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData kind)
- | SynTypeDefnSimpleRepr.Enum _ ->
+ | SynTypeDefnSimpleRepr.Enum _ ->
+ noCLIMutableAttributeCheck()
+ if reportAttributeTargetsErrors then
+ TcAttributesWithPossibleTargets TcCanFail.IgnoreMemberResoutionError cenv envinner AttributeTargets.Enum synAttrs |> ignore
TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData TFSharpEnum)
// OK, now fill in the (partially computed) type representation
@@ -2934,8 +2997,8 @@ module EstablishTypeDefinitionCores =
| None -> None
| Some (tc, args, m) ->
let ad = envinner.AccessRights
- match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInType OpenQualified envinner.NameEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.Yes with
- | Result (_, tcrefBeforeStaticArguments) when
+ match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.UseInType OpenQualified envinner.NameEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.Yes with
+ | Result (_, tcrefBeforeStaticArguments, _) when
tcrefBeforeStaticArguments.IsProvided &&
not tcrefBeforeStaticArguments.IsErased ->
@@ -3162,7 +3225,7 @@ module EstablishTypeDefinitionCores =
// This case deals with ordinary type and measure abbreviations
if not hasMeasureableAttr then
let kind = if hasMeasureAttr then TyparKind.Measure else TyparKind.Type
- let ty, _ = TcTypeOrMeasureAndRecover (Some kind) cenv NoNewTypars checkConstraints ItemOccurence.UseInType WarnOnIWSAM.No envinner tpenv rhsType
+ let ty, _ = TcTypeOrMeasureAndRecover (Some kind) cenv NoNewTypars checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.No envinner tpenv rhsType
// Give a warning if `AutoOpenAttribute` is being aliased.
// If the user were to alias the `Microsoft.FSharp.Core.AutoOpenAttribute` type, it would not be detected by the project graph dependency resolution algorithm.
@@ -3207,7 +3270,7 @@ module EstablishTypeDefinitionCores =
let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars m) envinner
let envinner = MakeInnerEnvForTyconRef envinner tcref false
- let implementedTys, _ = List.mapFold (mapFoldFst (TcTypeAndRecover cenv NoNewTypars checkConstraints ItemOccurence.UseInType WarnOnIWSAM.No envinner)) tpenv explicitImplements
+ let implementedTys, _ = List.mapFold (mapFoldFst (TcTypeAndRecover cenv NoNewTypars checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.No envinner)) tpenv explicitImplements
if firstPass then
tycon.entity_attribs <- attrs
@@ -3219,7 +3282,7 @@ module EstablishTypeDefinitionCores =
let kind = InferTyconKind g (kind, attrs, slotsigs, fields, inSig, isConcrete, m)
let inherits = inherits |> List.map (fun (ty, m, _) -> (ty, m))
- let inheritedTys = fst (List.mapFold (mapFoldFst (TcTypeAndRecover cenv NoNewTypars checkConstraints ItemOccurence.UseInType WarnOnIWSAM.No envinner)) tpenv inherits)
+ let inheritedTys = fst (List.mapFold (mapFoldFst (TcTypeAndRecover cenv NoNewTypars checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.No envinner)) tpenv inherits)
let implementedTys, inheritedTys =
match kind with
| SynTypeDefnKind.Interface ->
@@ -3259,9 +3322,8 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnSimpleRepr.Record _ ->
if tycon.IsStructRecordOrUnionTycon then Some(g.system_Value_ty)
else None
- | SynTypeDefnSimpleRepr.General (kind, _, slotsigs, fields, isConcrete, _, _, _) ->
+ | SynTypeDefnSimpleRepr.General (kind, inherits, slotsigs, fields, isConcrete, _, _, _) ->
let kind = InferTyconKind g (kind, attrs, slotsigs, fields, inSig, isConcrete, m)
-
match inheritedTys with
| [] ->
match kind with
@@ -3270,18 +3332,27 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnKind.Opaque | SynTypeDefnKind.Class | SynTypeDefnKind.Interface -> None
| _ -> error(InternalError("should have inferred tycon kind", m))
- | [(ty, m)] ->
- if not firstPass && not (match kind with SynTypeDefnKind.Class -> true | _ -> false) then
- errorR (Error(FSComp.SR.tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes(), m))
- CheckSuperType cenv ty m
+ | [(ty, m)] ->
+ let inheritRange =
+ match inherits with
+ | [] -> m
+ | (synType, _, _) :: _ -> synType.Range
+ if not firstPass && not (match kind with SynTypeDefnKind.Class -> true | _ -> false) then
+ errorR (Error(FSComp.SR.tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes(), inheritRange))
+ CheckSuperType cenv ty inheritRange
if isTyparTy g ty then
if firstPass then
- errorR(Error(FSComp.SR.tcCannotInheritFromVariableType(), m))
- Some g.obj_ty // a "super" that is a variable type causes grief later
- else
+ errorR(Error(FSComp.SR.tcCannotInheritFromVariableType(), inheritRange))
+ Some g.obj_ty_noNulls // a "super" that is a variable type causes grief later
+ else
Some ty
- | _ ->
- error(Error(FSComp.SR.tcTypesCannotInheritFromMultipleConcreteTypes(), m))
+ | _ ->
+ match inherits with
+ | [] -> ()
+ | _ :: inherits ->
+ for synType, _, _ in inherits do
+ errorR(Error(FSComp.SR.tcTypesCannotInheritFromMultipleConcreteTypes(), synType.Range))
+ None
| SynTypeDefnSimpleRepr.Enum _ ->
Some(g.system_Enum_ty)
@@ -3292,7 +3363,7 @@ module EstablishTypeDefinitionCores =
super |> Option.map (fun ty ->
if isFunTy g ty then
let a,b = destFunTy g ty
- mkAppTy g.fastFunc_tcr [a; b]
+ mkWoNullAppTy g.fastFunc_tcr [a; b]
else ty)
// Publish the super type
@@ -3322,7 +3393,6 @@ module EstablishTypeDefinitionCores =
// REVIEW: for hasMeasureableAttr we need to be stricter about checking these
// are only used on exactly the right kinds of type definitions and not in conjunction with other attributes.
let hasMeasureableAttr = HasFSharpAttribute g g.attrib_MeasureableAttribute attrs
- let hasCLIMutable = HasFSharpAttribute g g.attrib_CLIMutableAttribute attrs
let structLayoutAttr = TryFindFSharpInt32Attribute g g.attrib_StructLayoutAttribute attrs
let hasAllowNullLiteralAttr = TryFindFSharpBoolAttribute g g.attrib_AllowNullLiteralAttribute attrs = Some true
@@ -3343,7 +3413,6 @@ module EstablishTypeDefinitionCores =
tycon.TypeContents.tcaug_super |> Option.iter (fun ty -> if not (TypeNullIsExtraValue g m ty) then errorR (Error(FSComp.SR.tcAllowNullTypesMayOnlyInheritFromAllowNullTypes(), m)))
tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.iter (fun ty -> if not (TypeNullIsExtraValue g m ty) then errorR (Error(FSComp.SR.tcAllowNullTypesMayOnlyInheritFromAllowNullTypes(), m)))
-
let structLayoutAttributeCheck allowed =
let explicitKind = int32 System.Runtime.InteropServices.LayoutKind.Explicit
match structLayoutAttr with
@@ -3367,9 +3436,6 @@ module EstablishTypeDefinitionCores =
let noMeasureAttributeCheck() =
if hasMeasureAttr then errorR (Error(FSComp.SR.tcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasure(), m))
- let noCLIMutableAttributeCheck() =
- if hasCLIMutable then errorR (Error(FSComp.SR.tcThisTypeMayNotHaveACLIMutableAttribute(), m))
-
let noSealedAttributeCheck k =
if hasSealedAttr = Some true then errorR (Error(k(), m))
@@ -3378,14 +3444,13 @@ module EstablishTypeDefinitionCores =
| rf :: _ -> errorR (Error(FSComp.SR.tcInterfaceTypesAndDelegatesCannotContainFields(), rf.Range))
| _ -> ()
- let primaryConstructorInDelegateCheck(implicitCtorSynPats : SynSimplePats option) =
+ let primaryConstructorInDelegateCheck(implicitCtorSynPats : SynPat option) =
match implicitCtorSynPats with
| None -> ()
- | Some spats ->
- let ctorArgNames, _ = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv spats
+ | Some pat ->
+ let ctorArgNames, _, _ = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv pat
if not ctorArgNames.IsEmpty then
- match spats with
- | SynSimplePats.SimplePats(range = m) -> errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m))
+ errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), pat.Range))
let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars m) envinner
let envinner = MakeInnerEnvForTyconRef envinner thisTyconRef false
@@ -3421,7 +3486,7 @@ module EstablishTypeDefinitionCores =
for fspec in fields do
if not fspec.IsCompilerGenerated then
let item = Item.RecdField(FreshenRecdFieldRef cenv.nameResolver m (thisTyconRef.MakeNestedRecdFieldRef fspec))
- CallNameResolutionSink cenv.tcSink (fspec.Range, nenv, item, emptyTyparInst, ItemOccurence.Binding, ad)
+ CallNameResolutionSink cenv.tcSink (fspec.Range, nenv, item, emptyTyparInst, ItemOccurrence.Binding, ad)
// Notify the Language Service about constructors in discriminated union declaration
let writeFakeUnionCtorsToSink (unionCases: UnionCase list) =
@@ -3430,7 +3495,7 @@ module EstablishTypeDefinitionCores =
for unionCase in unionCases do
let info = UnionCaseInfo(thisTyInst, mkUnionCaseRef thisTyconRef unionCase.Id.idText)
let item = Item.UnionCase(info, false)
- CallNameResolutionSink cenv.tcSink (unionCase.Range, nenv, item, emptyTyparInst, ItemOccurence.Binding, ad)
+ CallNameResolutionSink cenv.tcSink (unionCase.Range, nenv, item, emptyTyparInst, ItemOccurrence.Binding, ad)
let typeRepr, baseValOpt, safeInitInfo =
match synTyconRepr with
@@ -3474,7 +3539,7 @@ module EstablishTypeDefinitionCores =
noAllowNullLiteralAttributeCheck()
if hasMeasureableAttr then
let kind = if hasMeasureAttr then TyparKind.Measure else TyparKind.Type
- let theTypeAbbrev, _ = TcTypeOrMeasureAndRecover (Some kind) cenv NoNewTypars CheckCxs ItemOccurence.UseInType WarnOnIWSAM.No envinner tpenv rhsType
+ let theTypeAbbrev, _ = TcTypeOrMeasureAndRecover (Some kind) cenv NoNewTypars CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.No envinner tpenv rhsType
TMeasureableRepr theTypeAbbrev, None, NoSafeInitInfo
// If we already computed a representation, e.g. for a generative type definition, then don't change it here.
@@ -3484,7 +3549,6 @@ module EstablishTypeDefinitionCores =
TNoRepr, None, NoSafeInitInfo
| SynTypeDefnSimpleRepr.Union (_, unionCases, mRepr) ->
- noCLIMutableAttributeCheck()
noMeasureAttributeCheck()
noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedDU
noAbstractClassAttributeCheck()
@@ -3524,7 +3588,6 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (s, _) ->
let s = (s :?> ILType)
- noCLIMutableAttributeCheck()
noMeasureAttributeCheck()
noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedAssemblyCode
noAllowNullLiteralAttributeCheck()
@@ -3539,9 +3602,9 @@ module EstablishTypeDefinitionCores =
match implicitCtorSynPats with
| None ->
()
- | Some spats ->
- if tycon.IsFSharpStructOrEnumTycon then
- let ctorArgNames, patEnv = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv spats
+ | Some pat ->
+ if tycon.IsFSharpStructOrEnumTycon then
+ let ctorArgNames, patEnv, _ = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv pat
let (TcPatLinearEnv(_, names, _)) = patEnv
@@ -3567,16 +3630,33 @@ module EstablishTypeDefinitionCores =
// Note: for a mutually recursive set we can't check this condition
// until "isSealedTy" and "isClassTy" give reliable results.
superTy |> Option.iter (fun ty ->
- let m = match inherits with | [] -> m | (_, m, _) :: _ -> m
+ let m =
+ match inherits with
+ | [] -> m
+ | (synType, _, _) :: _ -> synType.Range
+
if isSealedTy g ty then
errorR(Error(FSComp.SR.tcCannotInheritFromSealedType(), m))
elif not (isClassTy g ty) then
errorR(Error(FSComp.SR.tcCannotInheritFromInterfaceType(), m)))
+ let abstractSlots =
+ [ for synValSig, memberFlags in slotsigs do
+
+ let (SynValSig(range=m)) = synValSig
+
+ CheckMemberFlags None NewSlotsOK OverridesOK memberFlags m
+
+ let slots = fst (TcAndPublishValSpec (cenv, envinner, containerInfo, ModuleOrMemberBinding, Some memberFlags, tpenv, synValSig))
+ // Multiple slots may be returned, e.g. for
+ // abstract P: int with get, set
+
+ for slot in slots do
+ yield mkLocalValRef slot ]
+
let kind =
match kind with
| SynTypeDefnKind.Struct ->
- noCLIMutableAttributeCheck()
noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedStruct
noAbstractClassAttributeCheck()
noAllowNullLiteralAttributeCheck()
@@ -3587,26 +3667,26 @@ module EstablishTypeDefinitionCores =
TFSharpStruct
| SynTypeDefnKind.Interface ->
if hasSealedAttr = Some true then errorR (Error(FSComp.SR.tcInterfaceTypesCannotBeSealed(), m))
- noCLIMutableAttributeCheck()
structLayoutAttributeCheck false
noAbstractClassAttributeCheck()
allowNullLiteralAttributeCheck()
noFieldsCheck userFields
TFSharpInterface
| SynTypeDefnKind.Class ->
- noCLIMutableAttributeCheck()
structLayoutAttributeCheck(not isIncrClass)
allowNullLiteralAttributeCheck()
+ for slot in abstractSlots do
+ if not slot.IsInstanceMember then
+ errorR(Error(FSComp.SR.chkStaticAbstractMembersOnClasses(), slot.Range))
TFSharpClass
| SynTypeDefnKind.Delegate (ty, arity) ->
- noCLIMutableAttributeCheck()
noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedDelegate
structLayoutAttributeCheck false
noAllowNullLiteralAttributeCheck()
noAbstractClassAttributeCheck()
noFieldsCheck userFields
primaryConstructorInDelegateCheck(implicitCtorSynPats)
- let tyR, _ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes envinner tpenv ty
+ let tyR, _ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes envinner tpenv ty
let _, _, curriedArgInfos, returnTy, _ = GetValReprTypeInCompiledForm g (arity |> TranslateSynValInfo cenv m (TcAttributes cenv envinner) |> TranslatePartialValReprInfo []) 0 tyR m
if curriedArgInfos.Length < 1 then error(Error(FSComp.SR.tcInvalidDelegateSpecification(), m))
if curriedArgInfos.Length > 1 then error(Error(FSComp.SR.tcDelegatesCannotBeCurried(), m))
@@ -3631,21 +3711,7 @@ module EstablishTypeDefinitionCores =
| (_, m, baseIdOpt) :: _ ->
match baseIdOpt with
| None -> Some(ident("base", m))
- | Some id -> Some id
-
- let abstractSlots =
- [ for synValSig, memberFlags in slotsigs do
-
- let (SynValSig(range=m)) = synValSig
-
- CheckMemberFlags None NewSlotsOK OverridesOK memberFlags m
-
- let slots = fst (TcAndPublishValSpec (cenv, envinner, containerInfo, ModuleOrMemberBinding, Some memberFlags, tpenv, synValSig))
- // Multiple slots may be returned, e.g. for
- // abstract P: int with get, set
-
- for slot in slots do
- yield mkLocalValRef slot ]
+ | Some id -> Some id
let baseValOpt = MakeAndPublishBaseVal cenv envinner baseIdOpt (superOfTycon g tycon)
let safeInitInfo = ComputeInstanceSafeInitInfo cenv envinner thisTyconRef.Range thisTy
@@ -3664,7 +3730,6 @@ module EstablishTypeDefinitionCores =
let fieldTy, fields' = TcRecdUnionAndEnumDeclarations.TcEnumDecls cenv envinner tpenv innerParent thisTy decls
let kind = TFSharpEnum
structLayoutAttributeCheck false
- noCLIMutableAttributeCheck()
noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedEnum
noAllowNullLiteralAttributeCheck()
let vid = ident("value__", m)
@@ -3693,7 +3758,7 @@ module EstablishTypeDefinitionCores =
// validate ConditionalAttribute, should it be applied (it's only valid on a type if the type is an attribute type)
match attrs |> List.tryFind (IsMatchingFSharpAttribute g g.attrib_ConditionalAttribute) with
| Some _ ->
- if not(ExistsInEntireHierarchyOfType (fun t -> typeEquiv g t (mkAppTy g.tcref_System_Attribute [])) g cenv.amap m AllowMultiIntfInstantiations.Yes thisTy) then
+ if not(ExistsInEntireHierarchyOfType (fun t -> typeEquiv g t (mkWoNullAppTy g.tcref_System_Attribute [])) g cenv.amap m AllowMultiIntfInstantiations.Yes thisTy) then
errorR(Error(FSComp.SR.tcConditionalAttributeUsage(), m))
| _ -> ()
@@ -3815,12 +3880,12 @@ module EstablishTypeDefinitionCores =
| _ ->
acc
- // collect edges from an a struct field (which is struct-contained in tycon)
+ // collect edges from a struct field (which is struct-contained in tycon)
let rec accStructField (structTycon: Tycon) structTyInst (fspec: RecdField) (doneTypes, acc) =
let fieldTy = actualTyOfRecdFieldForTycon structTycon structTyInst fspec
accStructFieldType structTycon structTyInst fspec fieldTy (doneTypes, acc)
- // collect edges from an a struct field (given the field type, which may be expanded if it is a type abbreviation)
+ // collect edges from a struct field (given the field type, which may be expanded if it is a type abbreviation)
and accStructFieldType structTycon structTyInst fspec fieldTy (doneTypes, acc) =
let fieldTy = stripTyparEqns fieldTy
match fieldTy with
@@ -3918,7 +3983,7 @@ module EstablishTypeDefinitionCores =
let thisTyconRef = mkLocalTyconRef tycon
let envForTycon = MakeInnerEnvForTyconRef envForTycon thisTyconRef false
try
- TcTyparConstraints cenv NoNewTypars checkConstraints ItemOccurence.UseInType envForTycon tpenv synTyconConstraints |> ignore
+ TcTyparConstraints cenv NoNewTypars checkConstraints ItemOccurrence.UseInType envForTycon tpenv synTyconConstraints |> ignore
with RecoverableException exn ->
errorRecovery exn m
| _ -> ())
@@ -3982,7 +4047,7 @@ module EstablishTypeDefinitionCores =
// Phase 1B. Establish the kind of each type constructor
// Here we run InferTyconKind and record partial information about the kind of the type constructor.
// This means FSharpTyconKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results.
- let withAttrs =
+ let withAttrs =
(envMutRecPrelim, withEnvs) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls (origInfo, tyconOpt) ->
let res =
match origInfo, tyconOpt with
@@ -4105,18 +4170,18 @@ module TcDeclarations =
// This records a name resolution of the type at the location
let resInfo = TypeNameResolutionStaticArgsInfo.FromTyArgs synTypars.Length
- ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Binding OpenQualified envForDecls.NameEnv ad longPath resInfo PermitDirectReferenceToGeneratedType.No
+ ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.Binding OpenQualified envForDecls.NameEnv ad longPath resInfo PermitDirectReferenceToGeneratedType.No
|> ignore
mkLocalTyconRef tycon
| _ ->
let resInfo = TypeNameResolutionStaticArgsInfo.FromTyArgs synTypars.Length
- let _, tcref =
- match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Binding OpenQualified envForDecls.NameEnv ad longPath resInfo PermitDirectReferenceToGeneratedType.No with
+ let tcref =
+ match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.Binding OpenQualified envForDecls.NameEnv ad longPath resInfo PermitDirectReferenceToGeneratedType.No with
| Result res ->
// Update resolved type parameters with the names from the source.
- let _, tcref = res
+ let _, tcref, _ = res
if tcref.TyparsNoRange.Length = synTypars.Length then
(tcref.TyparsNoRange, synTypars)
||> List.zip
@@ -4126,11 +4191,12 @@ module TcDeclarations =
typar.SetIdent(untypedIdent)
)
- res
- | res when inSig && List.isSingleton longPath ->
- errorR(Deprecated(FSComp.SR.tcReservedSyntaxForAugmentation(), m))
- ForceRaise res
- | res -> ForceRaise res
+ tcref
+
+ | Exception exn ->
+ if inSig && List.isSingleton longPath then
+ errorR(Deprecated(FSComp.SR.tcReservedSyntaxForAugmentation(), m))
+ ForceRaise (Exception exn)
tcref
let isInterfaceOrDelegateOrEnum =
@@ -4165,7 +4231,7 @@ module TcDeclarations =
let declaredTypars = TcTyparDecls cenv envForDecls synTypars
let envForTycon = AddDeclaredTypars CheckForDuplicateTypars declaredTypars envForDecls
- let _tpenv = TcTyparConstraints cenv NoNewTypars CheckCxs ItemOccurence.UseInType envForTycon emptyUnscopedTyparEnv synTyparCxs
+ let _tpenv = TcTyparConstraints cenv NoNewTypars CheckCxs ItemOccurrence.UseInType envForTycon emptyUnscopedTyparEnv synTyparCxs
declaredTypars |> List.iter (SetTyparRigid envForDecls.DisplayEnv m)
if isInSameModuleOrNamespace && not isInterfaceOrDelegateOrEnum then
@@ -4215,7 +4281,7 @@ module TcDeclarations =
// multiple (binding or slotsig or field or interface or inherit).
// i.e. not local-bindings, implicit ctor or implicit inherit (or tycon?).
// atMostOne inherit.
- let private CheckMembersForm ds =
+ let private CheckMembersForm ds m =
match ds with
| d :: ds when isImplicitCtor d ->
// Implicit construction
@@ -4227,7 +4293,7 @@ module TcDeclarations =
// Skip over 'let' and 'do' bindings
let _, ds = ds |> List.takeUntil (function SynMemberDefn.LetBindings _ -> false | _ -> true)
- // Skip over 'let' and 'do' bindings
+ // Skip over member bindings, abstract slots, interfaces and auto properties
let _, ds = ds |> List.takeUntil (allFalse [isMember;isAbstractSlot;isInterface;isAutoProperty])
match ds with
@@ -4236,9 +4302,9 @@ module TcDeclarations =
| SynMemberDefn.Interface (range=m) :: _ -> errorR(InternalError("List.takeUntil is wrong, have interface", m))
| SynMemberDefn.ImplicitCtor (range=m) :: _ -> errorR(InternalError("implicit class construction with two implicit constructions", m))
| SynMemberDefn.AutoProperty (range=m) :: _ -> errorR(InternalError("List.takeUntil is wrong, have auto property", m))
- | SynMemberDefn.ImplicitInherit (range=m) :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit(), m))
+ | SynMemberDefn.ImplicitInherit _ :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit(), m))
| SynMemberDefn.LetBindings (range=m) :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers(), m))
- | SynMemberDefn.Inherit (range=m) :: _ -> errorR(Error(FSComp.SR.tcInheritDeclarationMissingArguments(), m))
+ | SynMemberDefn.Inherit (trivia= { InheritKeyword = m }) :: _ -> errorR(Error(FSComp.SR.tcInheritDeclarationMissingArguments(), m))
| SynMemberDefn.NestedType (range=m) :: _ -> errorR(Error(FSComp.SR.tcTypesCannotContainNestedTypes(), m))
| _ -> ()
| ds ->
@@ -4285,7 +4351,7 @@ module TcDeclarations =
| _ -> ()
/// Split auto-properties into 'let' and 'member' bindings
- let private SplitAutoProps members =
+ let private SplitAutoProps (g: TcGlobals) members =
let membersIncludingAutoProps, vals_Inherits_Abstractslots =
members |> List.partition (fun memb ->
match memb with
@@ -4306,7 +4372,7 @@ module TcDeclarations =
// Convert auto properties to let bindings in the pre-list
let rec preAutoProps memb =
match memb with
- | SynMemberDefn.AutoProperty(ident = id) when id.idText = "" -> []
+ | SynMemberDefn.AutoProperty(ident = id) when String.IsNullOrEmpty(id.idText) -> []
| SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; xmlDoc=xmlDoc; synExpr=synExpr; range=mWholeAutoProp) ->
// Only the keep the field-targeted attributes
let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> true | _ -> false)
@@ -4334,8 +4400,8 @@ module TcDeclarations =
// Convert auto properties to member bindings in the post-list
let rec postAutoProps memb =
match memb with
- | SynMemberDefn.AutoProperty(ident = id) when id.idText = "" -> []
- | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; accessibility=access; trivia = { GetSetKeywords = mGetSetOpt }) ->
+ | SynMemberDefn.AutoProperty(ident = id) when String.IsNullOrEmpty(id.idText) -> []
+ | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; trivia = { GetSetKeywords = mGetSetOpt }; accessibility = access) ->
let mMemberPortion = id.idRange
// Only the keep the non-field-targeted attributes
let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true)
@@ -4348,7 +4414,8 @@ module TcDeclarations =
match propKind, mGetSetOpt with
| SynMemberKind.PropertySet, Some getSetKeywords -> errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(), getSetKeywords.Range))
| _ -> ()
-
+
+ let getterAccess, setterAccess = getGetterSetterAccess access propKind g.langVersion
[
match propKind with
| SynMemberKind.Member
@@ -4358,7 +4425,7 @@ module TcDeclarations =
let rhsExpr = SynExpr.Ident fldId
let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
let attribs = mkAttributeList attribs mMemberPortion
- let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero)
+ let binding = mkSynBinding (xmlDoc, headPat) (getterAccess, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero)
SynMemberDefn.Member (binding, mMemberPortion)
yield getter
| _ -> ()
@@ -4370,7 +4437,7 @@ module TcDeclarations =
let vId = ident("v", mMemberPortion)
let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [mkSynPatVar None vId], None, mMemberPortion)
let rhsExpr = mkSynAssign (SynExpr.Ident fldId) (SynExpr.Ident vId)
- let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero)
+ let binding = mkSynBinding (xmlDoc, headPat) (setterAccess, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero)
SynMemberDefn.Member (binding, mMemberPortion)
yield setter
| _ -> ()]
@@ -4394,30 +4461,30 @@ module TcDeclarations =
/// where simpleRepr can contain inherit type, declared fields and virtual slots.
/// body = members
/// where members contain methods/overrides, also implicit ctor, inheritCall and local definitions.
- let rec private SplitTyconDefn (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) =
+ let rec private SplitTyconDefn g (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) =
let extraMembers = desugarGetSetMembers extraMembers
- let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps extraMembers
+ let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps g extraMembers
let implements1 = extraMembers |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None)
match trepr with
| SynTypeDefnRepr.ObjectModel(kind, members, m) ->
let members = desugarGetSetMembers members
- CheckMembersForm members
+ CheckMembersForm members synTyconInfo.Range
let fields = members |> List.choose (function SynMemberDefn.ValField (fieldInfo = f) -> Some f | _ -> None)
let implements2 = members |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None)
let inherits =
members |> List.choose (function
- | SynMemberDefn.Inherit (ty, idOpt, m) -> Some(ty, m, idOpt)
- | SynMemberDefn.ImplicitInherit (ty, _, idOpt, m) -> Some(ty, m, idOpt)
+ | SynMemberDefn.Inherit (Some ty, idOpt, m, _) -> Some(ty, m, idOpt)
+ | SynMemberDefn.ImplicitInherit (ty, _, idOpt, m, _) -> Some(ty, m, idOpt)
| _ -> None)
//let nestedTycons = cspec |> List.choose (function SynMemberDefn.NestedType (x, _, _) -> Some x | _ -> None)
let slotsigs = members |> List.choose (function SynMemberDefn.AbstractSlot (slotSig = x; flags = y) -> Some(x, y) | _ -> None)
- let members,_vals_Inherits_Abstractslots = SplitAutoProps members
+ let members, _vals_Inherits_Abstractslots = SplitAutoProps g members
let isConcrete =
members |> List.exists (function
@@ -4441,7 +4508,7 @@ module TcDeclarations =
let implicitCtorSynPats =
members |> List.tryPick (function
- | SynMemberDefn.ImplicitCtor (ctorArgs = SynSimplePats.SimplePats _ as spats) -> Some spats
+ | SynMemberDefn.ImplicitCtor (ctorArgs = pat) -> Some pat
| _ -> None)
// An ugly bit of code to pre-determine if a type has a nullary constructor, prior to establishing the
@@ -4450,7 +4517,7 @@ module TcDeclarations =
members |> List.exists (function
| SynMemberDefn.Member(memberDefn=SynBinding(valData=SynValData(memberFlags=Some memberFlags); headPat = SynPatForConstructorDecl SynPatForNullaryArgs)) ->
memberFlags.MemberKind=SynMemberKind.Constructor
- | SynMemberDefn.ImplicitCtor (ctorArgs = SynSimplePats.SimplePats(pats = spats)) -> isNil spats
+ | SynMemberDefn.ImplicitCtor (ctorArgs = SynPat.Const(SynConst.Unit, _)) -> true
| _ -> false)
let repr = SynTypeDefnSimpleRepr.General(kind, inherits, slotsigs, fields, isConcrete, isIncrClass, implicitCtorSynPats, m)
let isAtOriginalTyconDefn = not (isAugmentationTyconDefnRepr repr)
@@ -4471,7 +4538,6 @@ module TcDeclarations =
core, extra_vals_Inherits_Abstractslots @ extraMembers
//-------------------------------------------------------------------------
-
/// Bind a collection of mutually recursive definitions in an implementation file
let TcMutRecDefinitions (cenv: cenv) envInitial parent typeNames tpenv m scopem mutRecNSInfo (mutRecDefns: MutRecDefnsInitialData) isMutRec =
@@ -4479,7 +4545,7 @@ module TcDeclarations =
// Split the definitions into "core representations" and "members". The code to process core representations
// is shared between processing of signature files and implementation files.
- let mutRecDefnsAfterSplit = mutRecDefns |> MutRecShapes.mapTycons SplitTyconDefn
+ let mutRecDefnsAfterSplit = mutRecDefns |> MutRecShapes.mapTycons (fun i -> SplitTyconDefn g i)
// Create the entities for each module and type definition, and process the core representation of each type definition.
let tycons, envMutRecPrelim, mutRecDefnsAfterCore =
@@ -4720,7 +4786,6 @@ module TcDeclarations =
let env = List.foldBack (AddLocalVal g cenv.tcSink scopem) idvs envForDecls
env)
-
/// Bind a collection of mutually recursive declarations in a signature file
let TcMutRecSignatureDecls (cenv: cenv) envInitial parent typeNames tpenv m scopem mutRecNSInfo (mutRecSigs: MutRecSigsInitialData) =
let mutRecSigsAfterSplit = mutRecSigs |> MutRecShapes.mapTycons SplitTyconSignature
@@ -4732,6 +4797,18 @@ module TcDeclarations =
// Updates the types of the modules to contain the contents so far, which now includes values and members
MutRecBindingChecking.TcMutRecDefns_UpdateModuleContents mutRecNSInfo mutRecDefnsAfterCore
+ // Generate the union augmentation values for all tycons.
+ let mutable vals = List.empty
+ (envMutRec, mutRecDefnsAfterCore)
+ ||> MutRecShapes.iterTyconsWithEnv (fun envForDecls ((tyconCore, _, _), tyconOpt, _, _, _) ->
+ let (MutRecDefnsPhase1DataForTycon (isAtOriginalTyconDefn=isAtOriginalTyconDefn)) = tyconCore
+ match tyconOpt with
+ | Some tycon when isAtOriginalTyconDefn ->
+ if tycon.IsUnionTycon && AddAugmentationDeclarations.ShouldAugmentUnion cenv.g tycon then
+ let vspecs = AddAugmentationDeclarations.AddUnionAugmentationValues cenv envForDecls tycon
+ vals <- vspecs @ vals
+ | _ -> ())
+
// By now we've established the full contents of type definitions apart from their
// members and any fields determined by implicit construction. We know the kinds and
// representations of types and have established them as valid.
@@ -4740,28 +4817,19 @@ module TcDeclarations =
//
// Note: This environment reconstruction doesn't seem necessary. We're about to create Val's for all members,
// which does require type checking, but no more information than is already available.
- let envMutRecPrelimWithReprs, withEnvs =
+
+ let envMutRecPrelimWithReprs, withEnvs =
(envInitial, MutRecShapes.dropEnvs mutRecDefnsAfterCore)
- ||> MutRecBindingChecking.TcMutRecDefns_ComputeEnvs
- (fun (_, tyconOpt, _, _, _) -> tyconOpt)
- (fun _binds -> [ (* no values are available yet *) ])
- cenv true scopem m
+ ||> MutRecBindingChecking.TcMutRecDefns_ComputeEnvs
+ (fun (_, tyconOpt, _, _, _) -> tyconOpt)
+ (fun _binds -> vals)
+ cenv true scopem m
let mutRecDefnsAfterVals = TcMutRecSignatureDecls_Phase2 cenv scopem envMutRecPrelimWithReprs withEnvs
// Updates the types of the modules to contain the contents so far, which now includes values and members
MutRecBindingChecking.TcMutRecDefns_UpdateModuleContents mutRecNSInfo mutRecDefnsAfterVals
- // Generate the union augmentation values for all tycons.
- (envMutRec, mutRecDefnsAfterCore) ||> MutRecShapes.iterTyconsWithEnv (fun envForDecls ((tyconCore, _, _), tyconOpt, _, _, _) ->
- let (MutRecDefnsPhase1DataForTycon (isAtOriginalTyconDefn=isAtOriginalTyconDefn)) = tyconCore
- match tyconOpt with
- | Some tycon when isAtOriginalTyconDefn ->
- if tycon.IsUnionTycon && AddAugmentationDeclarations.ShouldAugmentUnion cenv.g tycon then
- let vspecs = AddAugmentationDeclarations.AddUnionAugmentationValues cenv envForDecls tycon
- ignore vspecs
- | _ -> ())
-
envMutRec
//-------------------------------------------------------------------------
@@ -4779,7 +4847,7 @@ let rec TcSignatureElementNonMutRec (cenv: cenv) parent typeNames endm (env: TcE
return env
| SynModuleSigDecl.Types (typeSpecs, m) ->
- CheckDuplicatesAbstractMethodParmsSig typeSpecs
+ CheckDuplicatesAbstractMethodParamsSig typeSpecs
let scopem = unionRanges m endm
let mutRecDefns = typeSpecs |> List.map MutRecShape.Tycon
let env = TcDeclarations.TcMutRecSignatureDecls cenv env parent typeNames emptyUnscopedTyparEnv m scopem None mutRecDefns
@@ -4809,7 +4877,7 @@ let rec TcSignatureElementNonMutRec (cenv: cenv) parent typeNames endm (env: TcE
return! TcSignatureElementsMutRec cenv parent typeNames endm None env [modDecl]
else
let id = ComputeModuleName longPath
- let vis, _ = ComputeAccessAndCompPath env None im vis None parent
+ let vis, _ = ComputeAccessAndCompPath g env None im vis None parent
let attribs = TcAttributes cenv env AttributeTargets.ModuleDecl attribs
CheckNamespaceModuleOrTypeName g id
let moduleKind = EstablishTypeDefinitionCores.ComputeModuleOrNamespaceKind g true typeNames attribs id.idText
@@ -4888,7 +4956,7 @@ let rec TcSignatureElementNonMutRec (cenv: cenv) parent typeNames endm (env: TcE
modulNSs |> List.iter (fun moduleEntity ->
let modref = mkLocalModuleRef moduleEntity
let item = Item.ModuleOrNamespaces [modref]
- CallNameResolutionSink cenv.tcSink (moduleEntity.Range, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights))
+ CallNameResolutionSink cenv.tcSink (moduleEntity.Range, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights))
// For 'namespace rec' and 'module rec' we add the thing being defined
let envNS = if isRec then AddLocalRootModuleOrNamespace cenv.tcSink g cenv.amap m envNS modTyRoot else envNS
@@ -4953,7 +5021,7 @@ and TcSignatureElementsMutRec cenv parent typeNames m mutRecNSInfo envInitial (d
((true, true), defs) ||> List.collectFold (fun (openOk, moduleAbbrevOk) def ->
match def with
| SynModuleSigDecl.Types (typeSpecs, _) ->
- CheckDuplicatesAbstractMethodParmsSig typeSpecs
+ CheckDuplicatesAbstractMethodParamsSig typeSpecs
let decls = typeSpecs |> List.map MutRecShape.Tycon
decls, (false, false)
@@ -5057,8 +5125,106 @@ let CheckLetOrDoInNamespace binds m =
| _ ->
error(Error(FSComp.SR.tcNamespaceCannotContainValues(), binds.Head.RangeOfHeadPattern))
+let rec TcMutRecDefsFinish cenv defs m =
+ let opens =
+ [ for def in defs do
+ match def with
+ | MutRecShape.Open (MutRecDataForOpen (_target, _m, _moduleRange, openDeclsRef)) ->
+ yield! openDeclsRef.Value
+ | _ -> () ]
+
+ let tycons = defs |> List.choose (function MutRecShape.Tycon (Some tycon, _) -> Some tycon | _ -> None)
+
+ let binds =
+ defs |> List.collect (function
+ | MutRecShape.Open _ -> []
+ | MutRecShape.ModuleAbbrev _ -> []
+ | MutRecShape.Tycon (_, binds)
+ | MutRecShape.Lets binds ->
+ binds |> List.map ModuleOrNamespaceBinding.Binding
+ | MutRecShape.Module ((MutRecDefnsPhase2DataForModule(moduleTyAcc, moduleEntity), _), moduleDefs) ->
+ let moduleContents = TcMutRecDefsFinish cenv moduleDefs m
+ moduleEntity.entity_modul_type <- MaybeLazy.Strict moduleTyAcc.Value
+ [ ModuleOrNamespaceBinding.Module(moduleEntity, moduleContents) ])
+
+ TMDefRec(true, opens, tycons, binds, m)
+
+/// The mutually recursive case for a sequence of declarations (and nested modules)
+let TcModuleOrNamespaceElementsMutRec (cenv: cenv) parent typeNames m envInitial mutRecNSInfo (defs: SynModuleDecl list) =
+ let m = match defs with [] -> m | _ -> defs |> List.map (fun d -> d.Range) |> List.reduce unionRanges
+ let scopem = (defs, m) ||> List.foldBack (fun h m -> unionRanges h.Range m)
+
+ let mutRecDefns, (_, _, Attributes synAttrs) =
+ let rec loop isNamespace moduleRange attrs defs: MutRecDefnsInitialData * _ =
+ ((true, true, attrs), defs) ||> List.collectFold (fun (openOk, moduleAbbrevOk, attrs) def ->
+ match ElimSynModuleDeclExpr def with
+
+ | SynModuleDecl.Types (typeDefs, _) ->
+ let decls = typeDefs |> List.map MutRecShape.Tycon
+ decls, (false, false, attrs)
+
+ | SynModuleDecl.Let (letrec, binds, m) ->
+ let binds =
+ if isNamespace then
+ CheckLetOrDoInNamespace binds m; []
+ else
+ if letrec then [MutRecShape.Lets binds]
+ else List.map (List.singleton >> MutRecShape.Lets) binds
+ binds, (false, false, attrs)
+
+ | SynModuleDecl.NestedModule(moduleInfo = (SynComponentInfo(longId = []))) ->
+ [], (openOk, moduleAbbrevOk, attrs)
+
+ | SynModuleDecl.NestedModule(moduleInfo=compInfo; isRecursive=isRec; decls=synDefs; range=moduleRange) ->
+ if isRec then warning(Error(FSComp.SR.tcRecImplied(), compInfo.Range))
+ let mutRecDefs, (_, _, attrs) = loop false moduleRange attrs synDefs
+ let decls = [MutRecShape.Module (compInfo, mutRecDefs)]
+ decls, (false, false, attrs)
+
+ | SynModuleDecl.Open (target, m) ->
+ if not openOk then errorR(Error(FSComp.SR.tcOpenFirstInMutRec(), m))
+ let decls = [ MutRecShape.Open (MutRecDataForOpen(target, m, moduleRange, ref [])) ]
+ decls, (openOk, moduleAbbrevOk, attrs)
+
+ | SynModuleDecl.Exception (SynExceptionDefn(repr, _, members, _), _m) ->
+ let members = desugarGetSetMembers members
+ let (SynExceptionDefnRepr(synAttrs, SynUnionCase(ident=SynIdent(id,_)), _repr, xmlDoc, vis, m)) = repr
+ let compInfo = SynComponentInfo(synAttrs, None, [], [id], xmlDoc, false, vis, id.idRange)
+ let decls = [ MutRecShape.Tycon(SynTypeDefn(compInfo, SynTypeDefnRepr.Exception repr, members, None, m, SynTypeDefnTrivia.Zero)) ]
+ decls, (false, false, attrs)
+
+ | SynModuleDecl.HashDirective _ ->
+ [ ], (openOk, moduleAbbrevOk, attrs)
+
+ | SynModuleDecl.Attributes (synAttrs, _) ->
+ [ ], (false, false, synAttrs)
+
+ | SynModuleDecl.ModuleAbbrev (id, p, m) ->
+ if not moduleAbbrevOk then errorR(Error(FSComp.SR.tcModuleAbbrevFirstInMutRec(), m))
+ let decls = [ MutRecShape.ModuleAbbrev (MutRecDataForModuleAbbrev(id, p, m)) ]
+ decls, (false, moduleAbbrevOk, attrs)
+
+ | SynModuleDecl.Expr _ -> failwith "unreachable: SynModuleDecl.Expr - ElimSynModuleDeclExpr"
+
+ | SynModuleDecl.NamespaceFragment _ as d -> error(Error(FSComp.SR.tcUnsupportedMutRecDecl(), d.Range)))
+
+ loop (match parent with ParentNone -> true | Parent _ -> false) m [] defs
+
+ let tpenv = emptyUnscopedTyparEnv
+ let mutRecDefnsChecked, envAfter = TcDeclarations.TcMutRecDefinitions cenv envInitial parent typeNames tpenv m scopem mutRecNSInfo mutRecDefns true
+
+ // Check the assembly attributes
+ let attrs, _ = TcAttributesWithPossibleTargets TcCanFail.ReportAllErrors cenv envAfter AttributeTargets.Top synAttrs
+
+ // Check the non-escaping condition as we build the list of module expressions on the way back up
+ let moduleContents = TcMutRecDefsFinish cenv mutRecDefnsChecked m
+ let escapeCheck () =
+ TcMutRecDefnsEscapeCheck mutRecDefnsChecked envInitial
+
+ ([ moduleContents ], [ escapeCheck ], attrs), envAfter, envAfter
+
/// The non-mutually recursive case for a declaration
-let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem env synDecl =
+let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem env synDecl =
cancellable {
let g = cenv.g
cenv.synArgNameGenerator.Reset()
@@ -5073,7 +5239,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
return ([], [], []), env, env
| SynModuleDecl.Exception (SynExceptionDefn(SynExceptionDefnRepr(caseName = SynUnionCase(ident = SynIdent(id, _))) as exnRepr, withKeyword, ms, mExDefn), m) ->
- if id.idText = "" then
+ if String.IsNullOrEmpty(id.idText) then
return ([], [], []), env, env
else
let edef = SynExceptionDefn(exnRepr, withKeyword, desugarGetSetMembers ms, mExDefn)
@@ -5125,7 +5291,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
return! failwith "unreachable"
| SynModuleDecl.Attributes (Attributes synAttrs, _) ->
- let attrs, _ = TcAttributesWithPossibleTargets false cenv env AttributeTargets.Top synAttrs
+ let attrs, _ = TcAttributesWithPossibleTargets TcCanFail.ReportAllErrors cenv env AttributeTargets.Top synAttrs
return ([], [], attrs), env, env
| SynModuleDecl.HashDirective _ ->
@@ -5140,7 +5306,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
if isRec then
assert (not isContinuingModule)
let modDecl = SynModuleDecl.NestedModule(compInfo, false, moduleDefs, isContinuingModule, m, trivia)
- return! TcModuleOrNamespaceElementsMutRec cenv parent typeNames m env None [modDecl]
+ return TcModuleOrNamespaceElementsMutRec cenv parent typeNames m env None [modDecl]
else
let (SynComponentInfo(Attributes attribs, _, _, longPath, xml, _, vis, im)) = compInfo
let id = ComputeModuleName longPath
@@ -5150,7 +5316,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
let modName = EstablishTypeDefinitionCores.AdjustModuleName moduleKind id.idText
CheckForDuplicateConcreteType env modName im
CheckForDuplicateModule env id.idText id.idRange
- let vis, _ = ComputeAccessAndCompPath env None id.idRange vis None parent
+ let vis, _ = ComputeAccessAndCompPath g env None id.idRange vis None parent
let endm = m.EndRange
let id = ident (modName, id.idRange)
@@ -5168,7 +5334,9 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
let moduleEntity = Construct.NewModuleOrNamespace (Some env.eCompPath) vis id xmlDoc modAttrs (MaybeLazy.Strict moduleTy)
// Now typecheck.
- let! moduleContents, topAttrsNew, envAtEnd = TcModuleOrNamespaceElements cenv (Parent (mkLocalModuleRef moduleEntity)) endm envForModule xml None [] moduleDefs
+ let! moduleContents, topAttrsNew, envAtEnd =
+ TcModuleOrNamespaceElements cenv (Parent (mkLocalModuleRef moduleEntity)) endm envForModule xml None [] moduleDefs
+ |> cenv.stackGuard.GuardCancellable
// Get the inferred type of the decls and record it in the modul.
moduleEntity.entity_modul_type <- MaybeLazy.Strict moduleTyAcc.Value
@@ -5250,14 +5418,16 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
modulNSs |> List.iter (fun moduleEntity ->
let modref = mkLocalModuleRef moduleEntity
let item = Item.ModuleOrNamespaces [modref]
- CallNameResolutionSink cenv.tcSink (moduleEntity.Range, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights))
+ CallNameResolutionSink cenv.tcSink (moduleEntity.Range, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights))
// For 'namespace rec' and 'module rec' we add the thing being defined
let envNS = if isRec then AddLocalRootModuleOrNamespace cenv.tcSink g cenv.amap m envNS modTyRoot else envNS
let nsInfo = Some (modulNSOpt, envNS.eModuleOrNamespaceTypeAccumulator)
let mutRecNSInfo = if isRec then nsInfo else None
- let! moduleContents, topAttrs, envAtEnd = TcModuleOrNamespaceElements cenv parent endm envNS xml mutRecNSInfo [] defs
+ let! moduleContents, topAttrs, envAtEnd =
+ TcModuleOrNamespaceElements cenv parent endm envNS xml mutRecNSInfo [] defs
+ |> cenv.stackGuard.GuardCancellable
MutRecBindingChecking.TcMutRecDefns_UpdateNSContents nsInfo
let env, openDecls =
@@ -5293,124 +5463,30 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
}
/// The non-mutually recursive case for a sequence of declarations
-and TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm (defsSoFar, env, envAtEnd) (moreDefs: SynModuleDecl list) =
- cancellable {
- match moreDefs with
- | firstDef :: otherDefs ->
- // Lookahead one to find out the scope of the next declaration.
- let scopem =
- if isNil otherDefs then unionRanges firstDef.Range endm
- else unionRanges (List.head otherDefs).Range endm
-
- let! firstDef, env, envAtEnd = TcModuleOrNamespaceElementNonMutRec cenv parent typeNames scopem env firstDef
-
- // tail recursive
- return! TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ( (firstDef :: defsSoFar), env, envAtEnd) otherDefs
- | [] ->
- return List.rev defsSoFar, envAtEnd
- }
-
-/// The mutually recursive case for a sequence of declarations (and nested modules)
-and TcModuleOrNamespaceElementsMutRec (cenv: cenv) parent typeNames m envInitial mutRecNSInfo (defs: SynModuleDecl list) =
- cancellable {
-
- let m = match defs with [] -> m | _ -> defs |> List.map (fun d -> d.Range) |> List.reduce unionRanges
- let scopem = (defs, m) ||> List.foldBack (fun h m -> unionRanges h.Range m)
+and [] TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm (defsSoFar, env, envAtEnd) (moreDefs: SynModuleDecl list) (ct: CancellationToken) =
- let mutRecDefns, (_, _, Attributes synAttrs) =
- let rec loop isNamespace moduleRange attrs defs: MutRecDefnsInitialData * _ =
- ((true, true, attrs), defs) ||> List.collectFold (fun (openOk, moduleAbbrevOk, attrs) def ->
- match ElimSynModuleDeclExpr def with
-
- | SynModuleDecl.Types (typeDefs, _) ->
- let decls = typeDefs |> List.map MutRecShape.Tycon
- decls, (false, false, attrs)
-
- | SynModuleDecl.Let (letrec, binds, m) ->
- let binds =
- if isNamespace then
- CheckLetOrDoInNamespace binds m; []
- else
- if letrec then [MutRecShape.Lets binds]
- else List.map (List.singleton >> MutRecShape.Lets) binds
- binds, (false, false, attrs)
-
- | SynModuleDecl.NestedModule(moduleInfo = (SynComponentInfo(longId = []))) ->
- [], (openOk, moduleAbbrevOk, attrs)
-
- | SynModuleDecl.NestedModule(moduleInfo=compInfo; isRecursive=isRec; decls=synDefs; range=moduleRange) ->
- if isRec then warning(Error(FSComp.SR.tcRecImplied(), compInfo.Range))
- let mutRecDefs, (_, _, attrs) = loop false moduleRange attrs synDefs
- let decls = [MutRecShape.Module (compInfo, mutRecDefs)]
- decls, (false, false, attrs)
-
- | SynModuleDecl.Open (target, m) ->
- if not openOk then errorR(Error(FSComp.SR.tcOpenFirstInMutRec(), m))
- let decls = [ MutRecShape.Open (MutRecDataForOpen(target, m, moduleRange, ref [])) ]
- decls, (openOk, moduleAbbrevOk, attrs)
-
- | SynModuleDecl.Exception (SynExceptionDefn(repr, _, members, _), _m) ->
- let members = desugarGetSetMembers members
- let (SynExceptionDefnRepr(synAttrs, SynUnionCase(ident=SynIdent(id,_)), _repr, xmlDoc, vis, m)) = repr
- let compInfo = SynComponentInfo(synAttrs, None, [], [id], xmlDoc, false, vis, id.idRange)
- let decls = [ MutRecShape.Tycon(SynTypeDefn(compInfo, SynTypeDefnRepr.Exception repr, members, None, m, SynTypeDefnTrivia.Zero)) ]
- decls, (false, false, attrs)
-
- | SynModuleDecl.HashDirective _ ->
- [ ], (openOk, moduleAbbrevOk, attrs)
-
- | SynModuleDecl.Attributes (synAttrs, _) ->
- [ ], (false, false, synAttrs)
-
- | SynModuleDecl.ModuleAbbrev (id, p, m) ->
- if not moduleAbbrevOk then errorR(Error(FSComp.SR.tcModuleAbbrevFirstInMutRec(), m))
- let decls = [ MutRecShape.ModuleAbbrev (MutRecDataForModuleAbbrev(id, p, m)) ]
- decls, (false, moduleAbbrevOk, attrs)
-
- | SynModuleDecl.Expr _ -> failwith "unreachable: SynModuleDecl.Expr - ElimSynModuleDeclExpr"
-
- | SynModuleDecl.NamespaceFragment _ as d -> error(Error(FSComp.SR.tcUnsupportedMutRecDecl(), d.Range)))
-
- loop (match parent with ParentNone -> true | Parent _ -> false) m [] defs
-
- let tpenv = emptyUnscopedTyparEnv
- let mutRecDefnsChecked, envAfter = TcDeclarations.TcMutRecDefinitions cenv envInitial parent typeNames tpenv m scopem mutRecNSInfo mutRecDefns true
-
- // Check the assembly attributes
- let attrs, _ = TcAttributesWithPossibleTargets false cenv envAfter AttributeTargets.Top synAttrs
-
- // Check the non-escaping condition as we build the list of module expressions on the way back up
- let moduleContents = TcMutRecDefsFinish cenv mutRecDefnsChecked m
- let escapeCheck () =
- TcMutRecDefnsEscapeCheck mutRecDefnsChecked envInitial
-
- return ([ moduleContents ], [ escapeCheck ], attrs), envAfter, envAfter
-
- }
-
-and TcMutRecDefsFinish cenv defs m =
- let opens =
- [ for def in defs do
- match def with
- | MutRecShape.Open (MutRecDataForOpen (_target, _m, _moduleRange, openDeclsRef)) ->
- yield! openDeclsRef.Value
- | _ -> () ]
+ if ct.IsCancellationRequested then
+ ValueOrCancelled.Cancelled (OperationCanceledException())
+ else
+ match moreDefs with
+ | [] ->
+ ValueOrCancelled.Value (List.rev defsSoFar, envAtEnd)
+ | firstDef :: otherDefs ->
+ // Lookahead one to find out the scope of the next declaration.
+ let scopem =
+ if isNil otherDefs then
+ unionRanges firstDef.Range endm
+ else
+ unionRanges (List.head otherDefs).Range endm
- let tycons = defs |> List.choose (function MutRecShape.Tycon (Some tycon, _) -> Some tycon | _ -> None)
+ let result = Cancellable.run ct (TcModuleOrNamespaceElementNonMutRec cenv parent typeNames scopem env firstDef |> cenv.stackGuard.GuardCancellable)
- let binds =
- defs |> List.collect (function
- | MutRecShape.Open _ -> []
- | MutRecShape.ModuleAbbrev _ -> []
- | MutRecShape.Tycon (_, binds)
- | MutRecShape.Lets binds ->
- binds |> List.map ModuleOrNamespaceBinding.Binding
- | MutRecShape.Module ((MutRecDefnsPhase2DataForModule(moduleTyAcc, moduleEntity), _), moduleDefs) ->
- let moduleContents = TcMutRecDefsFinish cenv moduleDefs m
- moduleEntity.entity_modul_type <- MaybeLazy.Strict moduleTyAcc.Value
- [ ModuleOrNamespaceBinding.Module(moduleEntity, moduleContents) ])
+ match result with
+ | ValueOrCancelled.Cancelled x ->
+ ValueOrCancelled.Cancelled x
+ | ValueOrCancelled.Value(firstDef, env, envAtEnd) ->
+ TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ((firstDef :: defsSoFar), env, envAtEnd) otherDefs ct
- TMDefRec(true, opens, tycons, binds, m)
and TcModuleOrNamespaceElements cenv parent endm env xml mutRecNSInfo openDecls0 synModuleDecls =
cancellable {
@@ -5425,7 +5501,8 @@ and TcModuleOrNamespaceElements cenv parent endm env xml mutRecNSInfo openDecls0
match mutRecNSInfo with
| Some _ ->
- let! (moduleDefs, escapeChecks, topAttrsNew), _, envAtEnd = TcModuleOrNamespaceElementsMutRec cenv parent typeNames endm env mutRecNSInfo synModuleDecls
+ let (moduleDefs, escapeChecks, topAttrsNew), _, envAtEnd =
+ TcModuleOrNamespaceElementsMutRec cenv parent typeNames endm env mutRecNSInfo synModuleDecls
let moduleContents = TMDefs(moduleDefs)
// Run the escape checks (for compat run in reverse order)
do
@@ -5433,20 +5510,24 @@ and TcModuleOrNamespaceElements cenv parent endm env xml mutRecNSInfo openDecls0
escapeCheck()
return (moduleContents, topAttrsNew, envAtEnd)
- | None ->
-
- let! compiledDefs, envAtEnd = TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ([], env, env) synModuleDecls
-
- // Apply the functions for each declaration to build the overall expression-builder
- let moduleDefs = List.collect p13 compiledDefs
- let moduleDefs = match openDecls0 with [] -> moduleDefs | _ -> TMDefOpens openDecls0 :: moduleDefs
- let moduleContents = TMDefs moduleDefs
+ | None ->
+ let! ct = Cancellable.token ()
+ let result = TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ([], env, env) synModuleDecls ct
+
+ match result with
+ | ValueOrCancelled.Value(compiledDefs, envAtEnd) ->
+ // Apply the functions for each declaration to build the overall expression-builder
+ let moduleDefs = List.collect p13 compiledDefs
+ let moduleDefs = match openDecls0 with [] -> moduleDefs | _ -> TMDefOpens openDecls0 :: moduleDefs
+ let moduleContents = TMDefs moduleDefs
+
+ // Collect up the attributes that are global to the file
+ let topAttrsNew = List.collect p33 compiledDefs
+ return (moduleContents, topAttrsNew, envAtEnd)
+ | ValueOrCancelled.Cancelled x ->
+ return! Cancellable(fun _ -> ValueOrCancelled.Cancelled x)
+ }
- // Collect up the attributes that are global to the file
- let topAttrsNew = compiledDefs |> List.collect p33
- return (moduleContents, topAttrsNew, envAtEnd)
- }
-
//--------------------------------------------------------------------------
// CheckOneImplFile - Typecheck all the namespace fragments in a file.
@@ -5503,7 +5584,8 @@ let emptyTcEnv g =
eCtorInfo = None
eCallerMemberName = None
eLambdaArgInfos = []
- eIsControlFlow = false }
+ eIsControlFlow = false
+ eCachedImplicitYieldExpressions = HashMultiMap(HashIdentity.Structural, useConcurrentDictionary = true) }
let CreateInitialTcEnv(g, amap, scopem, assemblyName, ccus) =
(emptyTcEnv g, ccus) ||> List.collectFold (fun env (ccu, autoOpens, internalsVisible) ->
@@ -5577,7 +5659,7 @@ let CheckValueRestriction denvAtEnd infoReader rootSigOpt implFileTypePriorToSig
// for example FSharp 1.0 3661.
(match v.ValReprInfo with None -> true | Some tvi -> tvi.HasNoArgs)) then
match ftyvs with
- | tp :: _ -> errorR (ValueRestriction(denvAtEnd, infoReader, false, v, tp, v.Range))
+ | tp :: _ -> errorR (ValueRestriction(denvAtEnd, infoReader, v, tp, v.Range))
| _ -> ()
mty.ModuleAndNamespaceDefinitions |> List.iter (fun v -> check v.ModuleOrNamespaceType)
try check implFileTypePriorToSig with RecoverableException e -> errorRecovery e m
@@ -5590,7 +5672,7 @@ let SolveInternalUnknowns g (cenv: cenv) denvAtEnd moduleContents extraAttribs =
if (tp.Rigidity <> TyparRigidity.Rigid) && not tp.IsSolved then
ChooseTyparSolutionAndSolve cenv.css denvAtEnd tp
-let CheckModuleSignature g (cenv: cenv) m denvAtEnd rootSigOpt implFileTypePriorToSig implFileSpecPriorToSig moduleContents =
+let CheckModuleSignature g (cenv: cenv) m denvAtEnd rootSigOpt implFileTypePriorToSig implFileSpecPriorToSig moduleContents fileName qualifiedNameOfFile =
match rootSigOpt with
| None ->
// Deep copy the inferred type of the module
@@ -5598,7 +5680,13 @@ let CheckModuleSignature g (cenv: cenv) m denvAtEnd rootSigOpt implFileTypePrior
(implFileTypePriorToSigCopied, moduleContents)
- | Some sigFileType ->
+ | Some sigFileType ->
+ use _ =
+ Activity.start "CheckDeclarations.CheckModuleSignature"
+ [|
+ Activity.Tags.fileName, fileName
+ Activity.Tags.qualifiedNameOfFile, qualifiedNameOfFile
+ |]
// We want to show imperative type variables in any types in error messages at this late point
let denv = { denvAtEnd with showInferenceTyparAnnotations=true }
@@ -5658,7 +5746,10 @@ let CheckOneImplFile
|]
let cenv =
cenv.Create (g, isScript, amap, thisCcu, false, Option.isSome rootSigOpt,
- conditionalDefines, tcSink, (LightweightTcValForUsingInBuildMethodCall g), isInternalTestSpanStackReferring,
+ conditionalDefines,
+ tcSink,
+ LightweightTcValForUsingInBuildMethodCall g,
+ isInternalTestSpanStackReferring,
diagnosticOptions,
tcPat=TcPat,
tcSimplePats=TcSimplePats,
@@ -5669,7 +5760,9 @@ let CheckOneImplFile
let envinner, moduleTyAcc = MakeInitialEnv env
let defs = [ for x in implFileFrags -> SynModuleDecl.NamespaceFragment x ]
- let! moduleContents, topAttrs, envAtEnd = TcModuleOrNamespaceElements cenv ParentNone qualNameOfFile.Range envinner PreXmlDoc.Empty None openDecls0 defs
+ let! moduleContents, topAttrs, envAtEnd =
+ TcModuleOrNamespaceElements cenv ParentNone qualNameOfFile.Range envinner PreXmlDoc.Empty None openDecls0 defs
+ |> cenv.stackGuard.GuardCancellable
let implFileTypePriorToSig = moduleTyAcc.Value
@@ -5724,7 +5817,7 @@ let CheckOneImplFile
// Check the module matches the signature
let implFileTy, implFileContents =
conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
- CheckModuleSignature g cenv m denvAtEnd rootSigOpt implFileTypePriorToSig implFileSpecPriorToSig moduleContents)
+ CheckModuleSignature g cenv m denvAtEnd rootSigOpt implFileTypePriorToSig implFileSpecPriorToSig moduleContents fileName qualNameOfFile.Text)
do
conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
@@ -5744,8 +5837,14 @@ let CheckOneImplFile
try
let reportErrors = not (checkForErrors())
let tcVal = LightweightTcValForUsingInBuildMethodCall g
+ use _ =
+ Activity.start "PostTypeCheckSemanticChecks.CheckImplFile"
+ [|
+ Activity.Tags.fileName, fileName
+ Activity.Tags.qualifiedNameOfFile, qualNameOfFile.Text
+ |]
PostTypeCheckSemanticChecks.CheckImplFile
- (g, cenv.amap, reportErrors, cenv.infoReader,
+ (g, cenv.amap, reportErrors, cenv.infoReader,
env.eInternalsVisibleCompPaths, cenv.thisCcu, tcVal, envAtEnd.DisplayEnv,
implFileTy, implFileContents, extraAttribs, isLastCompiland,
isInternalTestSpanStackReferring)
@@ -5791,23 +5890,25 @@ let CheckOneSigFile (g, amap, thisCcu, checkForErrors, conditionalDefines, tcSin
Activity.Tags.qualifiedNameOfFile, sigFile.QualifiedName.Text
|]
let cenv =
- cenv.Create
- (g, false, amap, thisCcu, true, false, conditionalDefines, tcSink,
- (LightweightTcValForUsingInBuildMethodCall g), isInternalTestSpanStackReferring,
- diagnosticOptions,
- tcPat=TcPat,
- tcSimplePats=TcSimplePats,
- tcSequenceExpressionEntry=TcSequenceExpressionEntry,
- tcArrayOrListSequenceExpression=TcArrayOrListComputedExpression,
- tcComputationExpression=TcComputationExpression)
+ cenv.Create(g, false, amap, thisCcu, true, false,
+ conditionalDefines,
+ tcSink,
+ LightweightTcValForUsingInBuildMethodCall g,
+ isInternalTestSpanStackReferring,
+ diagnosticOptions,
+ tcPat=TcPat,
+ tcSimplePats=TcSimplePats,
+ tcSequenceExpressionEntry=TcSequenceExpressionEntry,
+ tcArrayOrListSequenceExpression=TcArrayOrListComputedExpression,
+ tcComputationExpression=TcComputationExpression)
let envinner, moduleTyAcc = MakeInitialEnv tcEnv
-
+ let m = sigFile.QualifiedName.Range
let specs = [ for x in sigFile.Contents -> SynModuleSigDecl.NamespaceFragment x ]
- let! tcEnv = TcSignatureElements cenv ParentNone sigFile.QualifiedName.Range envinner PreXmlDoc.Empty None specs
-
- let sigFileType = moduleTyAcc.Value
+ let! tcEnv = TcSignatureElements cenv ParentNone m envinner PreXmlDoc.Empty None specs
+ let sigFileType = moduleTyAcc.Value
+
if not (checkForErrors()) then
try
sigFileType |> IterTyconsOfModuleOrNamespaceType (fun tycon ->
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs b/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs
index e32d073cbd..e0555ef2a7 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs
+++ b/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs
@@ -2,6 +2,7 @@
module internal FSharp.Compiler.CheckFormatStrings
+open System
open System.Text
open Internal.Utilities.Library
open Internal.Utilities.Library.Extras
@@ -58,7 +59,7 @@ let escapeDotnetFormatString str =
[]
let (|PrefixedBy|_|) (prefix: string) (str: string) =
- if str.StartsWith prefix then
+ if str.StartsWithOrdinal(prefix) then
ValueSome prefix.Length
else
ValueNone
@@ -358,10 +359,10 @@ let parseFormatStringInternal
let acc = if widthArg then (Option.map ((+)1) posi, g.int_ty) :: acc else acc
let checkOtherFlags c =
- if info.precision then failwith (FSComp.SR.forFormatDoesntSupportPrecision(c.ToString()))
- if info.addZeros then failwith (FSComp.SR.forDoesNotSupportZeroFlag(c.ToString()))
+ if info.precision then failwith (FSComp.SR.forFormatDoesntSupportPrecision(c.ToString() |> string))
+ if info.addZeros then failwith (FSComp.SR.forDoesNotSupportZeroFlag(c.ToString() |> string))
match info.numPrefixIfPos with
- | Some n -> failwith (FSComp.SR.forDoesNotSupportPrefixFlag(c.ToString(), n.ToString()))
+ | Some n -> failwith (FSComp.SR.forDoesNotSupportPrefixFlag(c.ToString() |> string, n.ToString()))
| None -> ()
let skipPossibleInterpolationHole pos = Parse.skipPossibleInterpolationHole isInterpolated isFormattableString fmt pos
@@ -370,12 +371,12 @@ let parseFormatStringInternal
// type checker. They should always have '(...)' after for format string.
let requireAndSkipInterpolationHoleFormat i =
if i < len && fmt[i] = '(' then
- let i2 = fmt.IndexOf(")", i+1)
+ let i2 = fmt.IndexOfOrdinal(")", i+1)
if i2 = -1 then
failwith (FSComp.SR.forFormatInvalidForInterpolated3())
else
let dotnetAlignment = match widthValue with None -> "" | Some w -> "," + (if info.leftJustify then "-" else "") + string w
- let dotnetNumberFormat = match fmt[i+1..i2-1] with "" -> "" | s -> ":" + s
+ let dotnetNumberFormat = match fmt[i+1..i2-1] with s when String.IsNullOrEmpty(s) -> "" | s -> ":" + s
appendToDotnetFormatString ("{" + string dotnetFormatStringInterpolationHoleCount + dotnetAlignment + dotnetNumberFormat + "}")
dotnetFormatStringInterpolationHoleCount <- dotnetFormatStringInterpolationHoleCount + 1
i2+1
@@ -448,7 +449,8 @@ let parseFormatStringInternal
checkOtherFlags ch
collectSpecifierLocation fragLine fragCol 1
let i = skipPossibleInterpolationHole (i+1)
- parseLoop ((posi, g.string_ty) :: acc) (i, fragLine, fragCol+1) fragments
+ let stringTy = if g.checkNullness && g.langFeatureNullness then g.string_ty_ambivalent else g.string_ty
+ parseLoop ((posi, stringTy) :: acc) (i, fragLine, fragCol+1) fragments
| 'O' ->
checkOtherFlags ch
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs
index 8ef4d3734f..5630fc2d4c 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs
+++ b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs
@@ -5,6 +5,7 @@ module internal FSharp.Compiler.CheckIncrementalClasses
open System
open FSharp.Compiler.Diagnostics
+open FSharp.Compiler.Features
open Internal.Utilities.Collections
open Internal.Utilities.Library
open Internal.Utilities.Library.Extras
@@ -123,7 +124,7 @@ let TcStaticImplicitCtorInfo_Phase2A(cenv: cenv, env, tcref: TyconRef, m, copyOf
/// Check and elaborate the "left hand side" of the implicit class construction
/// syntax.
-let TcImplicitCtorInfo_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attrs, spats, thisIdOpt, baseValOpt: Val option, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc: PreXmlDoc) =
+let TcImplicitCtorInfo_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attrs, pat: SynPat, thisIdOpt, baseValOpt: Val option, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc: PreXmlDoc) =
let g = cenv.g
let baseValOpt =
@@ -135,16 +136,30 @@ let TcImplicitCtorInfo_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, att
let env = AddDeclaredTypars CheckForDuplicateTypars copyOfTyconTypars env
// Type check arguments by processing them as 'simple' patterns
- // NOTE: if we allow richer patterns here this is where we'd process those patterns
- let ctorArgNames, patEnv = TcSimplePatsOfUnknownType cenv true CheckCxs env tpenv (SynSimplePats.SimplePats (spats, [], m))
+ let ctorArgNames, patEnv, SynSimplePats.SimplePats(spats, _, _) = TcSimplePatsOfUnknownType cenv true CheckCxs env tpenv pat
+
+ let rec reportGeneratedPattern spat =
+ match spat with
+ | SynSimplePat.Id(_, _, isCompilerGenerated, _, _, m) ->
+ if isCompilerGenerated then
+ errorR (Error(FSComp.SR.parsOnlySimplePatternsAreAllowedInConstructors(), m))
+
+ | SynSimplePat.Typed(pat, _, _)
+ | SynSimplePat.Attrib(pat, _, _) ->
+ reportGeneratedPattern pat
+
+ for spat in spats do
+ reportGeneratedPattern spat
let (TcPatLinearEnv(_, names, _)) = patEnv
// Create the values with the given names
let _, vspecs = MakeAndPublishSimpleVals cenv env names
- if tcref.IsStructOrEnumTycon && isNil spats then
+ match tcref.IsStructOrEnumTycon, pat with
+ | true, SynPat.Const(SynConst.Unit, _) ->
errorR (ParameterlessStructCtor(tcref.Range))
+ | _ -> ()
// Put them in order
let ctorArgs = List.map (fun v -> NameMap.find v vspecs) ctorArgNames
@@ -159,7 +174,13 @@ let TcImplicitCtorInfo_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, att
let ctorTy = mkFunTy g argTy objTy
// NOTE: no attributes can currently be specified for the implicit constructor
- let attribs = TcAttributes cenv env (AttributeTargets.Constructor ||| AttributeTargets.Method) attrs
+ let attribs =
+ // Implicit constructors can only target AttributeTargets.Constructor
+ if g.langVersion.SupportsFeature(LanguageFeature.EnforceAttributeTargets) then
+ TcAttributes cenv env AttributeTargets.Constructor attrs
+ else
+ TcAttributes cenv env (AttributeTargets.Constructor ||| AttributeTargets.Method) attrs
+
let memberFlags = CtorMemberFlags
let synArgInfos = List.map (SynInfo.InferSynArgInfoFromSimplePat []) spats
@@ -277,13 +298,15 @@ type IncrClassReprInfo =
/// The vars forced to be fields due to static member bindings, instance initialization expressions or instance member bindings
/// The vars forced to be fields due to instance member bindings
///
+ ///
///
member localRep.ChooseRepresentation (cenv: cenv, env: TcEnv, isStatic, isCtorArg,
staticCtorInfo: StaticCtorInfo,
ctorInfoOpt: IncrClassCtorInfo option,
staticForcedFieldVars: FreeLocals,
instanceForcedFieldVars: FreeLocals,
- takenFieldNames: Set,
+ takenFieldNames: Set,
+ declKind: DeclKind,
bind: Binding) =
let g = cenv.g
let v = bind.Var
@@ -373,7 +396,7 @@ type IncrClassReprInfo =
// it a "member" in the F# sense, but the F# spec says it is generated and it is reasonable to reflect on it.
let memberValScheme = ValScheme(id, prelimTyschemeG, Some valReprInfo, None, Some memberInfo, false, ValInline.Never, NormalVal, None, true (* isCompilerGenerated *), true (* isIncrClass *), false, false)
- let methodVal = MakeAndPublishVal cenv env (Parent tcref, false, ModuleOrMemberBinding, ValNotInRecScope, memberValScheme, v.Attribs, XmlDoc.Empty, None, false)
+ let methodVal = MakeAndPublishVal cenv env (Parent tcref, false, declKind, ValNotInRecScope, memberValScheme, v.Attribs, XmlDoc.Empty, None, false)
reportIfUnused()
InMethod(isStatic, methodVal, valReprInfo)
@@ -381,9 +404,9 @@ type IncrClassReprInfo =
repr, takenFieldNames
/// Extend the known local representations by choosing a representation for a binding
- member localRep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, bind: Binding) =
+ member localRep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, declKind, bind: Binding) =
let v = bind.Var
- let repr, takenFieldNames = localRep.ChooseRepresentation (cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, localRep.TakenFieldNames, bind )
+ let repr, takenFieldNames = localRep.ChooseRepresentation (cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, localRep.TakenFieldNames, declKind, bind )
// OK, representation chosen, now add it
{localRep with
TakenFieldNames=takenFieldNames
@@ -425,7 +448,7 @@ type IncrClassReprInfo =
| InMethod(isStatic, methodVal, valReprInfo), _ ->
//dprintfn "Rewriting application of %s to be call to method %s" v.LogicalName methodVal.LogicalName
let expr, exprTy = AdjustValForExpectedValReprInfo g m (mkLocalValRef methodVal) NormalValUse valReprInfo
- // Prepend the the type arguments for the class
+ // Prepend the type arguments for the class
let tyargs = tinst @ tyargs
let thisArgs =
if isStatic then []
@@ -663,11 +686,10 @@ let MakeCtorForIncrClassConstructionPhase2C(
(staticForcedFieldVars.FreeLocals, instanceForcedFieldVars.FreeLocals)
-
// Compute the implicit construction side effects of single
// 'let' or 'let rec' binding in the implicit class construction sequence
let TransBind (reps: IncrClassReprInfo) (TBind(v, rhsExpr, spBind)) =
- if v.MustInline then
+ if v.ShouldInline then
error(Error(FSComp.SR.tcLocalClassBindingsCannotBeInline(), v.Range))
let rhsExpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt safeStaticInitInfo thisTyInst rhsExpr
@@ -758,7 +780,8 @@ let MakeCtorForIncrClassConstructionPhase2C(
match dec with
| IncrClassBindingGroup(binds, isStatic, isRec) ->
let actions, reps, methodBinds =
- let reps = (reps, binds) ||> List.fold (fun rep bind -> rep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, bind)) // extend
+ // let reps = (reps, binds) ||> List.fold (fun rep bind -> rep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, (ClassLetBinding isStatic), bind)) // extend
+ let reps = (reps, binds) ||> List.fold (fun rep bind -> rep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, ModuleOrMemberBinding, bind)) // extend
if isRec then
// Note: the recursive calls are made via members on the object
// or via access to fields. This means the recursive loop is "broken",
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi
index 0de56111ff..428ae98b63 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi
@@ -130,7 +130,7 @@ val TcImplicitCtorInfo_Phase2A:
tcref: TyconRef *
vis: SynAccess option *
attrs: SynAttribute list *
- spats: SynSimplePat list *
+ pat: SynPat *
thisIdOpt: Ident option *
baseValOpt: Val option *
safeInitInfo: SafeInitData *
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs
index 00229e5eb4..3f97cf8178 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs
+++ b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs
@@ -27,6 +27,7 @@ open FSharp.Compiler.Text.Range
open FSharp.Compiler.TypedTree
open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypedTreeOps
+open FSharp.Compiler.CheckExpressionsOps
type cenv = TcFileState
@@ -57,10 +58,12 @@ let UnifyRefTupleType contextInfo (cenv: cenv) denv m ty ps =
AddCxTypeEqualsType contextInfo denv cenv.css m ty (TType_tuple (tupInfoRef, ptys))
ptys
-let rec TryAdjustHiddenVarNameToCompGenName cenv env (id: Ident) altNameRefCellOpt =
+let rec TryAdjustHiddenVarNameToCompGenName (cenv: cenv) env (id: Ident) altNameRefCellOpt =
match altNameRefCellOpt with
| Some ({contents = SynSimplePatAlternativeIdInfo.Undecided altId } as altNameRefCell) ->
- match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false id.idRange env.eAccessRights env.eNameResEnv TypeNameResolutionInfo.Default [id] ExtraDotAfterIdentifier.No with
+ let supportsWarnOnUpperIdentifiersInPatterns = cenv.g.langVersion.SupportsFeature(LanguageFeature.DontWarnOnUppercaseIdentifiersInBindingPatterns)
+ let warnOnUpperFlag = if supportsWarnOnUpperIdentifiersInPatterns then WarnOnUpperVariablePatterns else AllIdsOK
+ match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver warnOnUpperFlag false id.idRange env.eAccessRights env.eNameResEnv TypeNameResolutionInfo.Default [id] ExtraDotAfterIdentifier.No with
| Item.NewDef _ ->
// The name is not in scope as a pattern identifier (e.g. union case), so do not use the alternate ID
None
@@ -97,7 +100,7 @@ and TcSimplePat optionalArgsOK checkConstraints (cenv: cenv) ty env patEnv p =
id.idText, patEnvR
| SynSimplePat.Typed (p, cty, m) ->
- let ctyR, tpenv = TcTypeAndRecover cenv NewTyparsOK checkConstraints ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv cty
+ let ctyR, tpenv = TcTypeAndRecover cenv NewTyparsOK checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv cty
match p with
// Optional arguments on members
@@ -171,11 +174,13 @@ and TcSimplePats (cenv: cenv) optionalArgsOK checkConstraints ty env patEnv synS
let ps', patEnvR = (patEnv, List.zip ptys ps) ||> List.mapFold (fun patEnv (ty, pat) -> TcSimplePat optionalArgsOK checkConstraints cenv ty env patEnv pat)
ps', patEnvR
-and TcSimplePatsOfUnknownType (cenv: cenv) optionalArgsOK checkConstraints env tpenv synSimplePats =
+and TcSimplePatsOfUnknownType (cenv: cenv) optionalArgsOK checkConstraints env tpenv (pat: SynPat) =
let g = cenv.g
let argTy = NewInferenceType g
let patEnv = TcPatLinearEnv (tpenv, NameMap.empty, Set.empty)
- TcSimplePats cenv optionalArgsOK checkConstraints argTy env patEnv synSimplePats
+ let spats, _ = SimplePatsOfPat cenv.synArgNameGenerator pat
+ let names, patEnv = TcSimplePats cenv optionalArgsOK checkConstraints argTy env patEnv spats
+ names, patEnv, spats
and TcPatBindingName cenv env id ty isMemberThis vis1 valReprInfo (vFlags: TcPatValFlags) (names, takenNames: Set) =
let (TcPatValFlags(inlineFlag, declaredTypars, argAttribs, isMutable, vis2, isCompGen)) = vFlags
@@ -207,7 +212,7 @@ and TcPatBindingName cenv env id ty isMemberThis vis1 valReprInfo (vFlags: TcPat
// For non-left-most paths, we register the name resolutions here
if not isLeftMost && not vspec.IsCompilerGenerated && not (vspec.LogicalName.StartsWithOrdinal("_")) then
let item = Item.Value(mkLocalValRef vspec)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
PatternValBinding(vspec, typeScheme)
@@ -271,7 +276,7 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn
| SynPat.Typed (p, cty, m) ->
let (TcPatLinearEnv(tpenv, names, takenNames)) = patEnv
- let ctyR, tpenvR = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv cty
+ let ctyR, tpenvR = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv cty
UnifyTypes cenv env m ty ctyR
let patEnvR = TcPatLinearEnv(tpenvR, names, takenNames)
TcPat warnOnUpper cenv env valReprInfo vFlags patEnvR ty p
@@ -291,7 +296,11 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn
TcPatAnds warnOnUpper cenv env vFlags patEnv ty pats m
| SynPat.LongIdent (longDotId=longDotId; typarDecls=tyargs; argPats=args; accessibility=vis; range=m) ->
- TcPatLongIdent warnOnUpper cenv env ad valReprInfo vFlags patEnv ty (longDotId, tyargs, args, vis, m)
+ try
+ TcPatLongIdent warnOnUpper cenv env ad valReprInfo vFlags patEnv ty (longDotId, tyargs, args, vis, m)
+ with RecoverableException e ->
+ errorRecovery e m
+ (fun _ -> TPat_error m), patEnv
| SynPat.QuoteExpr(_, m) ->
errorR (Error(FSComp.SR.tcInvalidPattern(), m))
@@ -349,6 +358,12 @@ and TcPatNamedAs warnOnUpper cenv env valReprInfo vFlags patEnv ty synInnerPat i
and TcPatUnnamedAs warnOnUpper cenv env vFlags patEnv ty pat1 pat2 m =
let pats = [pat1; pat2]
+ let warnOnUpper =
+ if cenv.g.langVersion.SupportsFeature(LanguageFeature.DontWarnOnUppercaseIdentifiersInBindingPatterns) then
+ AllIdsOK
+ else
+ warnOnUpper
+
let patsR, patEnvR = TcPatterns warnOnUpper cenv env vFlags patEnv (List.map (fun _ -> ty) pats) pats
let phase2 values = TPat_conjs(List.map (fun f -> f values) patsR, m)
phase2, patEnvR
@@ -363,7 +378,7 @@ and TcPatNamed warnOnUpper cenv env vFlags patEnv id ty isMemberThis vis valRepr
and TcPatIsInstance warnOnUpper cenv env valReprInfo vFlags patEnv srcTy synPat synTargetTy m =
let (TcPatLinearEnv(tpenv, names, takenNames)) = patEnv
- let tgtTy, tpenv = TcTypeAndRecover cenv NewTyparsOKButWarnIfNotRigid CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synTargetTy
+ let tgtTy, tpenv = TcTypeAndRecover cenv NewTyparsOKButWarnIfNotRigid CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synTargetTy
TcRuntimeTypeTest false true cenv env.DisplayEnv m tgtTy srcTy
let patEnv = TcPatLinearEnv(tpenv, names, takenNames)
match synPat with
@@ -434,13 +449,13 @@ and TcPatArrayOrList warnOnUpper cenv env vFlags patEnv ty isArray args m =
else List.foldBack (mkConsListPat g argTy) argsR (mkNilListPat g m argTy)
phase2, acc
-and TcRecordPat warnOnUpper cenv env vFlags patEnv ty fieldPats m =
+and TcRecordPat warnOnUpper (cenv: cenv) env vFlags patEnv ty fieldPats m =
let fieldPats = fieldPats |> List.map (fun (fieldId, _, fieldPat) -> fieldId, fieldPat)
match BuildFieldMap cenv env false ty fieldPats m with
| None -> (fun _ -> TPat_error m), patEnv
| Some(tinst, tcref, fldsmap, _fldsList) ->
- let gtyp = mkAppTy tcref tinst
+ let gtyp = mkWoNullAppTy tcref tinst
let inst = List.zip (tcref.Typars m) tinst
UnifyTypes cenv env m ty gtyp
@@ -451,7 +466,13 @@ and TcRecordPat warnOnUpper cenv env vFlags patEnv ty fieldPats m =
let fieldPats, patEnvR =
(patEnv, ftys) ||> List.mapFold (fun s (ty, fsp) ->
match fldsmap.TryGetValue fsp.rfield_id.idText with
- | true, v -> TcPat warnOnUpper cenv env None vFlags s ty v
+ | true, v ->
+ let warnOnUpper =
+ if cenv.g.langVersion.SupportsFeature(LanguageFeature.DontWarnOnUppercaseIdentifiersInBindingPatterns) then
+ AllIdsOK
+ else
+ warnOnUpper
+ TcPat warnOnUpper cenv env None vFlags s ty v
| _ -> (fun _ -> TPat_wild m), s)
let phase2 values =
@@ -596,7 +617,7 @@ and TcPatLongIdentUnionCaseOrExnCase warnOnUpper cenv env ad vFlags patEnv ty (m
let g = cenv.g
// Report information about the case occurrence to IDE
- CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurence.Pattern, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Pattern, env.eAccessRights)
let mkf, argTys, argNames = ApplyUnionCaseOrExn m cenv env ty item
let numArgTys = argTys.Length
@@ -645,11 +666,11 @@ and TcPatLongIdentUnionCaseOrExnCase warnOnUpper cenv env ad vFlags patEnv ty (m
| Item.ExnCase tref -> Item.RecdField (RecdFieldInfo ([], RecdFieldRef (tref, id.idText)))
| _ -> failwithf "Expecting union case or exception item, got: %O" item
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, argItem, emptyTyparInst, ItemOccurence.Pattern, ad)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, argItem, emptyTyparInst, ItemOccurrence.Pattern, ad)
match box result[idx] with
- | Null -> result[idx] <- pat
- | NonNull _ ->
+ | null -> result[idx] <- pat
+ | _ ->
extraPatterns.Add pat
errorR (Error (FSComp.SR.tcUnionCaseFieldCannotBeUsedMoreThanOnce id.idText, id.idRange))
@@ -736,7 +757,7 @@ and TcPatLongIdentILField warnOnUpper (cenv: cenv) env vFlags patEnv ty (mLongId
UnifyTypes cenv env m ty (finfo.FieldType (cenv.amap, m))
let c' = TcFieldInit mLongId lit
let item = Item.ILField finfo
- CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurence.Pattern, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Pattern, env.AccessRights)
(fun _ -> TPat_const (c', m)), acc
/// Check a long identifier that has been resolved to a record field
@@ -756,7 +777,7 @@ and TcPatLongIdentRecdField warnOnUpper cenv env vFlags patEnv ty (mLongId, rfin
let item = Item.RecdField rfinfo
// FUTURE: can we do better than emptyTyparInst here, in order to display instantiations
// of type variables in the quick info provided in the IDE.
- CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurence.Pattern, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Pattern, env.AccessRights)
(fun _ -> TPat_const (lit, m)), acc
/// Check a long identifier that has been resolved to an F# value that is a literal
@@ -775,10 +796,9 @@ and TcPatLongIdentLiteral warnOnUpper (cenv: cenv) env vFlags patEnv ty (mLongId
UnifyTypes cenv env m ty vexpty
let item = Item.Value vref
- CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurence.Pattern, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Pattern, env.AccessRights)
(fun _ -> TPat_const (lit, m)), acc
and TcPatterns warnOnUpper cenv env vFlags s argTys args =
assert (List.length args = List.length argTys)
List.mapFold (fun s (ty, pat) -> TcPat warnOnUpper cenv env None vFlags s ty pat) s (List.zip argTys args)
-
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fsi b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fsi
index 46e400b8a9..da797b35a8 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fsi
@@ -15,8 +15,8 @@ val TcSimplePatsOfUnknownType:
checkConstraints: CheckConstraints ->
env: TcEnv ->
tpenv: UnscopedTyparEnv ->
- synSimplePats: SynSimplePats ->
- string list * TcPatLinearEnv
+ pat: SynPat ->
+ string list * TcPatLinearEnv * SynSimplePats
// Check a pattern, e.g. for a binding or a match clause
val TcPat:
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs
index 5f59e1ac3e..8783da1031 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs
+++ b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs
@@ -90,26 +90,26 @@ let TransformAstForNestedUpdates (cenv: TcFileState) (env: TcEnv) overallTy (lid
let totalRange (origId: Ident) (id: Ident) =
withStartEnd origId.idRange.End id.idRange.Start origId.idRange
- let rangeOfBlockSeperator (id: Ident) =
+ let rangeOfBlockSeparator (id: Ident) =
let idEnd = id.idRange.End
- let blockSeperatorStartCol = idEnd.Column
- let blockSeperatorEndCol = blockSeperatorStartCol + 4
- let blockSeperatorStartPos = mkPos idEnd.Line blockSeperatorStartCol
- let blockSeporatorEndPos = mkPos idEnd.Line blockSeperatorEndCol
+ let blockSeparatorStartCol = idEnd.Column
+ let blockSeparatorEndCol = blockSeparatorStartCol + 4
+ let blockSeparatorStartPos = mkPos idEnd.Line blockSeparatorStartCol
+ let blockSeparatorEndPos = mkPos idEnd.Line blockSeparatorEndCol
- withStartEnd blockSeperatorStartPos blockSeporatorEndPos id.idRange
+ withStartEnd blockSeparatorStartPos blockSeparatorEndPos id.idRange
match withExpr with
| SynExpr.Ident origId, (sepRange, _) ->
let lid, rng = upToId sepRange id (origId :: ids)
- Some(SynExpr.LongIdent(false, LongIdentWithDots(lid, rng), None, totalRange origId id), (rangeOfBlockSeperator id, None))
+ Some(SynExpr.LongIdent(false, LongIdentWithDots(lid, rng), None, totalRange origId id), (rangeOfBlockSeparator id, None))
| _ -> None
let rec synExprRecd copyInfo (outerFieldId: Ident) innerFields exprBeingAssigned =
match innerFields with
| [] -> failwith "unreachable"
| (fieldId: Ident, item) :: rest ->
- CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, [], ItemOccurence.Use, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, [], ItemOccurrence.Use, env.AccessRights)
let fieldId = ident (fieldId.idText, fieldId.idRange.MakeSynthetic())
@@ -143,7 +143,7 @@ let TransformAstForNestedUpdates (cenv: TcFileState) (env: TcEnv) overallTy (lid
| accessIds, (outerFieldId, item) :: rest ->
checkLanguageFeatureAndRecover cenv.g.langVersion LanguageFeature.NestedCopyAndUpdate (rangeOfLid lid)
- CallNameResolutionSink cenv.tcSink (outerFieldId.idRange, env.NameEnv, item, [], ItemOccurence.Use, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (outerFieldId.idRange, env.NameEnv, item, [], ItemOccurrence.Use, env.AccessRights)
let outerFieldId = ident (outerFieldId.idText, outerFieldId.idRange.MakeSynthetic())
diff --git a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs
index b1b472a9dd..cc318d3717 100644
--- a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs
+++ b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs
@@ -57,25 +57,29 @@ open FSharp.Compiler.Import
open FSharp.Compiler.InfoReader
open FSharp.Compiler.Infos
open FSharp.Compiler.MethodCalls
+open FSharp.Compiler.NameResolution
open FSharp.Compiler.Syntax
open FSharp.Compiler.Syntax.PrettyNaming
open FSharp.Compiler.SyntaxTreeOps
open FSharp.Compiler.TcGlobals
open FSharp.Compiler.Text
-open FSharp.Compiler.Text.Range
open FSharp.Compiler.TypedTree
open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.TypeHierarchy
open FSharp.Compiler.TypeRelations
+#if !NO_TYPEPROVIDERS
+open FSharp.Compiler.TypeProviders
+#endif
+
//-------------------------------------------------------------------------
// Generate type variables and record them in within the scope of the
// compilation environment, which currently corresponds to the scope
// of the constraint resolution carried out by type checking.
//-------------------------------------------------------------------------
-let compgenId = mkSynId range0 unassignedTyparName
+let compgenId = mkSynId Range.range0 unassignedTyparName
let NewCompGenTypar (kind, rigid, staticReq, dynamicReq, error) =
Construct.NewTypar(kind, rigid, SynTypar(compgenId, staticReq, true), error, dynamicReq, [], false, false)
@@ -93,28 +97,10 @@ let NewInferenceMeasurePar () =
let NewErrorTypar () =
NewCompGenTypar (TyparKind.Type, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, true)
-
-let NewErrorMeasureVar () =
- NewCompGenTypar (TyparKind.Measure, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, true)
-
-let NewInferenceType (g: TcGlobals) =
- ignore g // included for future, minimizing code diffs, see https://github.com/dotnet/fsharp/pull/6804
- mkTyparTy (Construct.NewTypar (TyparKind.Type, TyparRigidity.Flexible, SynTypar(compgenId, TyparStaticReq.None, true), false, TyparDynamicReq.No, [], false, false))
-
+
let NewErrorType () =
mkTyparTy (NewErrorTypar ())
-let NewErrorMeasure () =
- Measure.Var (NewErrorMeasureVar ())
-
-let NewByRefKindInferenceType (g: TcGlobals) m =
- let tp = Construct.NewTypar (TyparKind.Type, TyparRigidity.Flexible, SynTypar(compgenId, TyparStaticReq.HeadType, true), false, TyparDynamicReq.No, [], false, false)
- if g.byrefkind_InOut_tcr.CanDeref then
- tp.SetConstraints [TyparConstraint.DefaultsTo(10, TType_app(g.byrefkind_InOut_tcr, [], g.knownWithoutNull), m)]
- mkTyparTy tp
-
-let NewInferenceTypes g l = l |> List.map (fun _ -> NewInferenceType g)
-
let FreshenTypar (g: TcGlobals) rigid (tp: Typar) =
let clearStaticReq = g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers
let staticReq = if clearStaticReq then TyparStaticReq.None else tp.StaticReq
@@ -137,13 +123,6 @@ let FreshenTypeInst g m tpsorig =
let FreshMethInst g m fctps tinst tpsorig =
FreshenAndFixupTypars g m TyparRigidity.Flexible fctps tinst tpsorig
-let FreshenTypars g m tpsorig =
- match tpsorig with
- | [] -> []
- | _ ->
- let _, _, tpTys = FreshenTypeInst g m tpsorig
- tpTys
-
let FreshenMethInfo m (minfo: MethInfo) =
let _, _, tpTys = FreshMethInst minfo.TcGlobals m (minfo.GetFormalTyparsOfDeclaringType m) minfo.DeclaringTypeInst minfo.FormalMethodTypars
tpTys
@@ -240,7 +219,15 @@ exception ConstraintSolverTypesNotInEqualityRelation of displayEnv: DisplayEnv *
exception ConstraintSolverTypesNotInSubsumptionRelation of displayEnv: DisplayEnv * argTy: TType * paramTy: TType * callRange: range * parameterRange: range
-exception ConstraintSolverMissingConstraint of displayEnv: DisplayEnv * Typar * TyparConstraint * range * range
+exception ConstraintSolverMissingConstraint of displayEnv: DisplayEnv * Typar * TyparConstraint * range * range
+
+exception ConstraintSolverNullnessWarningEquivWithTypes of DisplayEnv * TType * TType * NullnessInfo * NullnessInfo * range * range
+
+exception ConstraintSolverNullnessWarningWithTypes of DisplayEnv * TType * TType * NullnessInfo * NullnessInfo * range * range
+
+exception ConstraintSolverNullnessWarningWithType of DisplayEnv * TType * NullnessInfo * range * range
+
+exception ConstraintSolverNullnessWarning of string * range * range
exception ConstraintSolverError of string * range * range
@@ -281,6 +268,7 @@ type ConstraintSolverState =
/// Checks to run after all inference is complete.
PostInferenceChecksFinal: ResizeArray unit>
+ WarnWhenUsingWithoutNullOnAWithNullTarget: string option
}
static member New(g, amap, infoReader, tcVal) =
@@ -290,7 +278,8 @@ type ConstraintSolverState =
InfoReader = infoReader
TcVal = tcVal
PostInferenceChecksPreDefaults = ResizeArray()
- PostInferenceChecksFinal = ResizeArray() }
+ PostInferenceChecksFinal = ResizeArray()
+ WarnWhenUsingWithoutNullOnAWithNullTarget = None }
member this.PushPostInferenceCheck (preDefaults, check) =
if preDefaults then
@@ -319,6 +308,9 @@ type ConstraintSolverEnv =
// Is this speculative, with a trace allowing undo, and trial method overload resolution
IsSpeculativeForMethodOverloading: bool
+ // Can this ignore the 'must support null' constraint, e.g. in a mutable assignment scenario
+ IsSupportsNullFlex: bool
+
/// Indicates that when unifying ty1 = ty2, only type variables in ty1 may be solved. Constraints
/// can't be added to type variables in ty2
MatchingOnly: bool
@@ -355,6 +347,7 @@ let MakeConstraintSolverEnv contextInfo css m denv =
EquivEnv = TypeEquivEnv.Empty
DisplayEnv = denv
IsSpeculativeForMethodOverloading = false
+ IsSupportsNullFlex = false
ExtraRigidTypars = emptyFreeTypars
}
@@ -377,7 +370,7 @@ let rec occursCheck g un ty =
//-------------------------------------------------------------------------
/// Some additional solutions are forced prior to generalization (permitWeakResolution=true). These are, roughly speaking, rules
-/// for binary-operand constraints arising from constructs such as "1.0 + x" where "x" is an unknown type. THe constraint here
+/// for binary-operand constraints arising from constructs such as "1.0 + x" where "x" is an unknown type. The constraint here
/// involves two type parameters - one for the left, and one for the right. The left is already known to be Double.
/// In this situation (and in the absence of other evidence prior to generalization), constraint solving forces an assumption that
/// the right is also Double - this is "weak" because there is only weak evidence for it.
@@ -729,22 +722,23 @@ let SolveTypIsCompatFlex (csenv: ConstraintSolverEnv) trace req ty =
else
CompleteD
-let SubstMeasureWarnIfRigid (csenv: ConstraintSolverEnv) trace (v: Typar) ms = trackErrors {
- if v.Rigidity.WarnIfUnified && not (isAnyParTy csenv.g (TType_measure ms)) then
- // NOTE: we grab the name eagerly to make sure the type variable prints as a type variable
- let tpnmOpt = if v.IsCompilerGenerated then None else Some v.Name
- do! SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms)
- SubstMeasure v ms
- return! WarnD(NonRigidTypar(csenv.DisplayEnv, tpnmOpt, v.Range, TType_measure (Measure.Var v), TType_measure ms, csenv.m))
- else
- // Propagate static requirements from 'tp' to 'ty'
- do! SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms)
- SubstMeasure v ms
- if v.Rigidity = TyparRigidity.Anon && measureEquiv csenv.g ms Measure.One then
- return! WarnD(Error(FSComp.SR.csCodeLessGeneric(), v.Range))
- else
- ()
- }
+let SubstMeasureWarnIfRigid (csenv: ConstraintSolverEnv) trace (v: Typar) ms =
+ trackErrors {
+ if v.Rigidity.WarnIfUnified && not (isAnyParTy csenv.g (TType_measure ms)) then
+ // NOTE: we grab the name eagerly to make sure the type variable prints as a type variable
+ let tpnmOpt = if v.IsCompilerGenerated then None else Some v.Name
+ do! SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms)
+ SubstMeasure v ms
+ return! WarnD(NonRigidTypar(csenv.DisplayEnv, tpnmOpt, v.Range, TType_measure (Measure.Var v), TType_measure ms, csenv.m))
+ else
+ // Propagate static requirements from 'tp' to 'ty'
+ do! SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms)
+ SubstMeasure v ms
+ if v.Rigidity = TyparRigidity.Anon && measureEquiv csenv.g ms Measure.One then
+ return! WarnD(Error(FSComp.SR.csCodeLessGeneric(), v.Range))
+ else
+ ()
+ }
let IsRigid (csenv: ConstraintSolverEnv) (tp: Typar) =
tp.Rigidity = TyparRigidity.Rigid
@@ -952,111 +946,198 @@ let CheckWarnIfRigid (csenv: ConstraintSolverEnv) ty1 (r: Typar) ty =
/// Add the constraint "ty1 = ty" to the constraint problem, where ty1 is a type variable.
/// Propagate all effects of adding this constraint, e.g. to solve other variables
-let rec SolveTyparEqualsTypePart1 (csenv: ConstraintSolverEnv) m2 (trace: OptionalTrace) ty1 r ty = trackErrors {
- // The types may still be equivalent due to abbreviations, which we are trying not to eliminate
- if typeEquiv csenv.g ty1 ty then () else
- // The famous 'occursCheck' check to catch "infinite types" like 'a = list<'a> - see also https://github.com/dotnet/fsharp/issues/1170
- if occursCheck csenv.g r ty then return! ErrorD (ConstraintSolverInfiniteTypes(csenv.DisplayEnv, csenv.eContextInfo, ty1, ty, csenv.m, m2)) else
- // Note: warn _and_ continue!
- do! CheckWarnIfRigid csenv ty1 r ty
- // Record the solution before we solve the constraints, since
- // We may need to make use of the equation when solving the constraints.
- // Record a entry in the undo trace if one is provided
- trace.Exec (fun () -> r.typar_solution <- Some ty) (fun () -> r.typar_solution <- None)
- }
-
-and SolveTyparEqualsTypePart2 (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) (r: Typar) ty = trackErrors {
- // Only solve constraints if this is not an error var
- if r.IsFromError then () else
-
- // Check to see if this type variable is relevant to any trait constraints.
- // If so, re-solve the relevant constraints.
- if csenv.SolverState.ExtraCxs.ContainsKey r.Stamp then
- do! RepeatWhileD ndeep (fun ndeep -> SolveRelevantMemberConstraintsForTypar csenv ndeep PermitWeakResolution.No trace r)
-
- // Re-solve the other constraints associated with this type variable
- return! SolveTypMeetsTyparConstraints csenv ndeep m2 trace ty r
+let rec SolveTyparEqualsTypePart1 (csenv: ConstraintSolverEnv) m2 (trace: OptionalTrace) ty1 r ty =
+ trackErrors {
+ // The types may still be equivalent due to abbreviations, which we are trying not to eliminate
+ if typeEquiv csenv.g ty1 ty then () else
+ // The famous 'occursCheck' check to catch "infinite types" like 'a = list<'a> - see also https://github.com/dotnet/fsharp/issues/1170
+ if occursCheck csenv.g r ty then return! ErrorD (ConstraintSolverInfiniteTypes(csenv.DisplayEnv, csenv.eContextInfo, ty1, ty, csenv.m, m2)) else
+ // Note: warn _and_ continue!
+ do! CheckWarnIfRigid csenv ty1 r ty
+ // Record the solution before we solve the constraints, since
+ // We may need to make use of the equation when solving the constraints.
+ // Record a entry in the undo trace if one is provided
+
+ //let ty1AllowsNull = r.Constraints |> List.exists (function | TyparConstraint.SupportsNull _ -> true | _ -> false )
+ //let tyAllowsNull() = TypeNullIsExtraValueNew csenv.g m2 ty
+ //if ty1AllowsNull && not (tyAllowsNull()) then
+ // trace.Exec (fun () -> r.typar_solution <- Some (ty |> replaceNullnessOfTy csenv.g.knownWithNull)) (fun () -> r.typar_solution <- None)
+ //else
+ // trace.Exec (fun () -> r.typar_solution <- Some ty) (fun () -> r.typar_solution <- None)
+ trace.Exec (fun () -> r.typar_solution <- Some ty) (fun () -> r.typar_solution <- None)
+ }
+
+and SolveTyparEqualsTypePart2 (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) (r: Typar) ty =
+ trackErrors {
+ // Only solve constraints if this is not an error var
+ if r.IsFromError then () else
- }
+ // Check to see if this type variable is relevant to any trait constraints.
+ // If so, re-solve the relevant constraints.
+ if csenv.SolverState.ExtraCxs.ContainsKey r.Stamp then
+ do! RepeatWhileD ndeep (fun ndeep -> SolveRelevantMemberConstraintsForTypar csenv ndeep PermitWeakResolution.No trace r)
-/// Apply the constraints on 'typar' to the type 'ty'
-and SolveTypMeetsTyparConstraints (csenv: ConstraintSolverEnv) ndeep m2 trace ty (r: Typar) = trackErrors {
- let g = csenv.g
+ // Re-solve the other constraints associated with this type variable
+ return! SolveTypMeetsTyparConstraints csenv ndeep m2 trace ty r
- // Propagate compat flex requirements from 'tp' to 'ty'
- do! SolveTypIsCompatFlex csenv trace r.IsCompatFlex ty
+ }
- // Propagate dynamic requirements from 'tp' to 'ty'
- do! SolveTypDynamicReq csenv trace r.DynamicReq ty
+/// Apply the constraints on 'typar' to the type 'ty'
+and SolveTypMeetsTyparConstraints (csenv: ConstraintSolverEnv) ndeep m2 trace ty (r: Typar) =
+ trackErrors {
+ let g = csenv.g
- // Propagate static requirements from 'tp' to 'ty'
- do! SolveTypStaticReq csenv trace r.StaticReq ty
+ // Propagate compat flex requirements from 'tp' to 'ty'
+ do! SolveTypIsCompatFlex csenv trace r.IsCompatFlex ty
- if not (g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers) then
- // Propagate static requirements from 'tp' to 'ty'
- //
- // If IWSAMs are not supported then this is done on a per-type-variable basis when constraints
- // are applied - see other calls to SolveTypStaticReq
+ // Propagate dynamic requirements from 'tp' to 'ty'
+ do! SolveTypDynamicReq csenv trace r.DynamicReq ty
+
+ // Propagate static requirements from 'tp' to 'ty'
do! SolveTypStaticReq csenv trace r.StaticReq ty
- // Solve constraints on 'tp' w.r.t. 'ty'
- for e in r.Constraints do
- do!
- match e with
- | TyparConstraint.DefaultsTo (priority, dty, m) ->
- if typeEquiv g ty dty then
- CompleteD
- else
- match tryDestTyparTy g ty with
- | ValueNone -> CompleteD
- | ValueSome destTypar ->
- AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.DefaultsTo(priority, dty, m))
-
- | TyparConstraint.SupportsNull m2 -> SolveTypeUseSupportsNull csenv ndeep m2 trace ty
- | TyparConstraint.IsEnum(underlyingTy, m2) -> SolveTypeIsEnum csenv ndeep m2 trace ty underlyingTy
- | TyparConstraint.SupportsComparison(m2) -> SolveTypeSupportsComparison csenv ndeep m2 trace ty
- | TyparConstraint.SupportsEquality(m2) -> SolveTypeSupportsEquality csenv ndeep m2 trace ty
- | TyparConstraint.IsDelegate(aty, bty, m2) -> SolveTypeIsDelegate csenv ndeep m2 trace ty aty bty
- | TyparConstraint.IsNonNullableStruct m2 -> SolveTypeIsNonNullableValueType csenv ndeep m2 trace ty
- | TyparConstraint.IsUnmanaged m2 -> SolveTypeIsUnmanaged csenv ndeep m2 trace ty
- | TyparConstraint.IsReferenceType m2 -> SolveTypeIsReferenceType csenv ndeep m2 trace ty
- | TyparConstraint.RequiresDefaultConstructor m2 -> SolveTypeRequiresDefaultConstructor csenv ndeep m2 trace ty
- | TyparConstraint.SimpleChoice(tys, m2) -> SolveTypeChoice csenv ndeep m2 trace ty tys
- | TyparConstraint.CoercesTo(ty2, m2) -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m2 trace None ty2 ty
- | TyparConstraint.MayResolveMember(traitInfo, m2) ->
- SolveMemberConstraint csenv false PermitWeakResolution.No ndeep m2 trace traitInfo |> OperationResult.ignore
- }
+ if not (g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers) then
+ // Propagate static requirements from 'tp' to 'ty'
+ //
+ // If IWSAMs are not supported then this is done on a per-type-variable basis when constraints
+ // are applied - see other calls to SolveTypStaticReq
+ do! SolveTypStaticReq csenv trace r.StaticReq ty
+
+ // Solve constraints on 'tp' w.r.t. 'ty'
+ for e in r.Constraints do
+ do!
+ match e with
+ | TyparConstraint.DefaultsTo (priority, dty, m) ->
+ if typeEquiv g ty dty then
+ CompleteD
+ else
+ match tryDestTyparTy g ty with
+ | ValueNone -> CompleteD
+ | ValueSome destTypar ->
+ AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.DefaultsTo(priority, dty, m))
+
+ | TyparConstraint.NotSupportsNull m2 -> SolveTypeUseNotSupportsNull csenv ndeep m2 trace ty
+ | TyparConstraint.SupportsNull m2 -> SolveTypeUseSupportsNull csenv ndeep m2 trace ty
+ | TyparConstraint.IsEnum(underlyingTy, m2) -> SolveTypeIsEnum csenv ndeep m2 trace ty underlyingTy
+ | TyparConstraint.SupportsComparison(m2) -> SolveTypeSupportsComparison csenv ndeep m2 trace ty
+ | TyparConstraint.SupportsEquality(m2) -> SolveTypeSupportsEquality csenv ndeep m2 trace ty
+ | TyparConstraint.IsDelegate(aty, bty, m2) -> SolveTypeIsDelegate csenv ndeep m2 trace ty aty bty
+ | TyparConstraint.IsNonNullableStruct m2 -> SolveTypeIsNonNullableValueType csenv ndeep m2 trace ty
+ | TyparConstraint.IsUnmanaged m2 -> SolveTypeIsUnmanaged csenv ndeep m2 trace ty
+ | TyparConstraint.AllowsRefStruct _ -> CompleteD
+ | TyparConstraint.IsReferenceType m2 -> SolveTypeIsReferenceType csenv ndeep m2 trace ty
+ | TyparConstraint.RequiresDefaultConstructor m2 -> SolveTypeRequiresDefaultConstructor csenv ndeep m2 trace ty
+ | TyparConstraint.SimpleChoice(tys, m2) -> SolveTypeChoice csenv ndeep m2 trace ty tys
+ | TyparConstraint.CoercesTo(ty2, m2) -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m2 trace None ty2 ty
+ | TyparConstraint.MayResolveMember(traitInfo, m2) ->
+ SolveMemberConstraint csenv false PermitWeakResolution.No ndeep m2 trace traitInfo |> OperationResult.ignore
+ }
+and shouldWarnUselessNullCheck (csenv:ConstraintSolverEnv) =
+ csenv.g.checkNullness &&
+ csenv.SolverState.WarnWhenUsingWithoutNullOnAWithNullTarget.IsSome
+
+// nullness1: actual
+// nullness2: expected
+and SolveNullnessEquiv (csenv: ConstraintSolverEnv) m2 (trace: OptionalTrace) ty1 ty2 nullness1 nullness2 =
+ match nullness1, nullness2 with
+ | Nullness.Variable nv1, Nullness.Variable nv2 when nv1 === nv2 ->
+ CompleteD
+ | Nullness.Variable nv1, _ when nv1.IsSolved ->
+ SolveNullnessEquiv csenv m2 trace ty1 ty2 nv1.Solution nullness2
+ | _, Nullness.Variable nv2 when nv2.IsSolved ->
+ SolveNullnessEquiv csenv m2 trace ty1 ty2 nullness1 nv2.Solution
+ | Nullness.Variable nv1, _ ->
+ trace.Exec (fun () -> nv1.Set nullness2) (fun () -> nv1.Unset())
+ CompleteD
+ | _, Nullness.Variable nv2 ->
+ trace.Exec (fun () -> nv2.Set nullness1) (fun () -> nv2.Unset())
+ CompleteD
+ | Nullness.Known n1, Nullness.Known n2 ->
+ match n1, n2 with
+ | NullnessInfo.AmbivalentToNull, _ -> CompleteD
+ | _, NullnessInfo.AmbivalentToNull -> CompleteD
+ | NullnessInfo.WithNull, NullnessInfo.WithNull -> CompleteD
+ | NullnessInfo.WithoutNull, NullnessInfo.WithoutNull -> CompleteD
+ // Warn for 'strict "must pass null"` APIs like Option.ofObj
+ | NullnessInfo.WithNull, NullnessInfo.WithoutNull when shouldWarnUselessNullCheck csenv ->
+ WarnD(Error(FSComp.SR.tcPassingWithoutNullToANullableExpectingFunc (csenv.SolverState.WarnWhenUsingWithoutNullOnAWithNullTarget.Value),m2))
+ // Allow expected of WithNull and actual of WithoutNull except for specially marked APIs (handled above)
+ | NullnessInfo.WithNull, NullnessInfo.WithoutNull -> CompleteD
+ | _ ->
+ if csenv.g.checkNullness then
+ WarnD(ConstraintSolverNullnessWarningEquivWithTypes(csenv.DisplayEnv, ty1, ty2, n1, n2, csenv.m, m2))
+ else
+ CompleteD
-and SolveTyparEqualsType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) ty1 ty = trackErrors {
- let m = csenv.m
- do! DepthCheck ndeep m
- match ty1 with
- | TType_var (r, _)
- | TType_measure (Measure.Var r) ->
- do! SolveTyparEqualsTypePart1 csenv m2 trace ty1 r ty
- do! SolveTyparEqualsTypePart2 csenv ndeep m2 trace r ty
- | _ -> failwith "SolveTyparEqualsType"
+// nullness1: target
+// nullness2: source
+and SolveNullnessSubsumesNullness (csenv: ConstraintSolverEnv) m2 (trace: OptionalTrace) ty1 ty2 nullness1 nullness2 =
+ match nullness1, nullness2 with
+ | Nullness.Variable nv1, Nullness.Variable nv2 when nv1 === nv2 ->
+ CompleteD
+ | Nullness.Variable nv1, _ when nv1.IsSolved ->
+ SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 nv1.Solution nullness2
+ | _, Nullness.Variable nv2 when nv2.IsSolved ->
+ SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 nullness1 nv2.Solution
+ | Nullness.Variable _nv1, Nullness.Known NullnessInfo.WithoutNull ->
+ CompleteD
+ | Nullness.Variable nv1, _ ->
+ trace.Exec (fun () -> nv1.Set nullness2) (fun () -> nv1.Unset())
+ CompleteD
+ | _, Nullness.Variable nv2 ->
+ trace.Exec (fun () -> nv2.Set nullness1) (fun () -> nv2.Unset())
+ CompleteD
+ | Nullness.Known n1, Nullness.Known n2 ->
+ match n1, n2 with
+ | NullnessInfo.AmbivalentToNull, _ -> CompleteD
+ | _, NullnessInfo.AmbivalentToNull -> CompleteD
+ | NullnessInfo.WithNull, NullnessInfo.WithNull -> CompleteD
+ | NullnessInfo.WithoutNull, NullnessInfo.WithoutNull -> CompleteD
+ // Warn for 'strict "must pass null"` APIs like Option.ofObj
+ | NullnessInfo.WithNull, NullnessInfo.WithoutNull when shouldWarnUselessNullCheck csenv ->
+ WarnD(Error(FSComp.SR.tcPassingWithoutNullToANullableExpectingFunc (csenv.SolverState.WarnWhenUsingWithoutNullOnAWithNullTarget.Value),m2))
+ // Allow target of WithNull and actual of WithoutNull
+ | NullnessInfo.WithNull, NullnessInfo.WithoutNull ->
+ CompleteD
+ | NullnessInfo.WithoutNull, NullnessInfo.WithNull ->
+ if csenv.g.checkNullness then
+ WarnD(ConstraintSolverNullnessWarningWithTypes(csenv.DisplayEnv, ty1, ty2, n1, n2, csenv.m, m2))
+ else
+ CompleteD
+
+and SolveTyparEqualsType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) ty1 ty =
+ trackErrors {
+ let m = csenv.m
+ do! DepthCheck ndeep m
+ match ty1 with
+ | TType_var (r, _)
+ | TType_measure (Measure.Var r) ->
+ do! SolveTyparEqualsTypePart1 csenv m2 trace ty1 r ty
+ do! SolveTyparEqualsTypePart2 csenv ndeep m2 trace r ty
+ | _ -> failwith "SolveTyparEqualsType"
}
// Like SolveTyparEqualsType but asserts all typar equalities simultaneously instead of one by one
-and SolveTyparsEqualTypes (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) tpTys tys = trackErrors {
- do! (tpTys, tys) ||> Iterate2D (fun tpTy ty ->
- match tpTy with
- | TType_var (r, _)
- | TType_measure (Measure.Var r) ->
- SolveTyparEqualsTypePart1 csenv m2 trace tpTy r ty
- | _ ->
- failwith "SolveTyparsEqualTypes")
-
- do! (tpTys, tys) ||> Iterate2D (fun tpTy ty ->
- match tpTy with
- | TType_var (r, _)
- | TType_measure (Measure.Var r) ->
- SolveTyparEqualsTypePart2 csenv ndeep m2 trace r ty
- | _ ->
- failwith "SolveTyparsEqualTypes")
- }
+and SolveTyparsEqualTypes (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) tpTys tys =
+ trackErrors {
+ do! Iterate2D (
+ fun tpTy ty ->
+ match tpTy with
+ | TType_var (r, _)
+ | TType_measure (Measure.Var r) ->
+ SolveTyparEqualsTypePart1 csenv m2 trace tpTy r ty
+ | _ ->
+ failwith "SolveTyparsEqualTypes") tpTys tys
+ do! Iterate2D (
+ fun tpTy ty ->
+ match tpTy with
+ | TType_var (r, _)
+ | TType_measure (Measure.Var r) ->
+ SolveTyparEqualsTypePart2 csenv ndeep m2 trace r ty
+ | _ ->
+ failwith "SolveTyparsEqualTypes") tpTys tys
+ }
and SolveAnonInfoEqualsAnonInfo (csenv: ConstraintSolverEnv) m2 (anonInfo1: AnonRecdTypeInfo) (anonInfo2: AnonRecdTypeInfo) =
if evalTupInfoIsStruct anonInfo1.TupInfo <> evalTupInfoIsStruct anonInfo2.TupInfo then
@@ -1137,80 +1218,171 @@ and SolveTypeEqualsType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTr
let aenv = csenv.EquivEnv
let g = csenv.g
- // Pre F# 6.0 we asssert the trait solution here
-#if TRAIT_CONSTRAINT_CORRECTIONS
- if not (csenv.g.langVersion.SupportsFeature LanguageFeature.TraitConstraintCorrections) then
-#endif
match cxsln with
| Some (traitInfo, traitSln) when traitInfo.Solution.IsNone ->
// If this is an overload resolution at this point it's safe to assume the candidate member being evaluated solves this member constraint.
TransactMemberConstraintSolution traitInfo trace traitSln
| _ -> ()
- if ty1 === ty2 then CompleteD else
-
- let canShortcut = not trace.HasTrace
- let sty1 = stripTyEqnsA csenv.g canShortcut ty1
- let sty2 = stripTyEqnsA csenv.g canShortcut ty2
-
- match sty1, sty2 with
-
- // type vars inside forall-types may be alpha-equivalent
- | TType_var (tp1, _), TType_var (tp2, _) when typarEq tp1 tp2 || (match aenv.EquivTypars.TryFind tp1 with | Some tpTy1 when typeEquiv g tpTy1 ty2 -> true | _ -> false) ->
- CompleteD
+ if ty1 === ty2 then
+ CompleteD
+ else
+ let canShortcut = not trace.HasTrace
+ let sty1 = stripTyEqnsA csenv.g canShortcut ty1
+ let sty2 = stripTyEqnsA csenv.g canShortcut ty2
+
+ let csenv =
+ match ty1 with
+ | TType.TType_var(r,_) when r.typar_flags.IsSupportsNullFlex ->
+ { csenv with IsSupportsNullFlex = true}
+ | _ -> csenv
+
+ match sty1, sty2 with
+ // type vars inside forall-types may be alpha-equivalent
+ | TType_var (tp1, nullness1), TType_var (tp2, nullness2) when typarEq tp1 tp2 || (match aenv.EquivTypars.TryFind tp1 with | Some tpTy1 when typeEquiv g tpTy1 ty2 -> true | _ -> false) ->
+ SolveNullnessEquiv csenv m2 trace ty1 ty2 nullness1 nullness2
+
+ | TType_var (tp1, nullness1), TType_var (tp2, nullness2) when PreferUnifyTypar tp1 tp2 ->
+ match nullness1.TryEvaluate(), nullness2.TryEvaluate() with
+ // Unifying 'T1? and 'T2?
+ | ValueSome NullnessInfo.WithNull, ValueSome NullnessInfo.WithNull ->
+ SolveTyparEqualsType csenv ndeep m2 trace sty1 (TType_var (tp2, g.knownWithoutNull))
+ | ValueSome NullnessInfo.WithNull, ValueSome NullnessInfo.WithoutNull ->
+ let tpNew = NewCompGenTypar(TyparKind.Type, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, false)
+ trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace cxsln sty2 (TType_var(tpNew, g.knownWithNull))
+ do! SolveTypeEqualsType csenv ndeep m2 trace cxsln (TType_var(tpNew, g.knownWithoutNull)) sty1
+ }
+ //// Unifying 'T1 % and 'T2 %
+ //| ValueSome NullnessInfo.AmbivalentToNull, ValueSome NullnessInfo.AmbivalentToNull ->
+ // SolveTyparEqualsType csenv ndeep m2 trace sty1 (TType_var (tp2, g.knownWithoutNull))
+ | _ ->
+ trackErrors {
+ do! SolveTyparEqualsType csenv ndeep m2 trace sty1 ty2
+ let nullnessAfterSolution1 = combineNullness (nullnessOfTy g sty1) nullness1
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 nullnessAfterSolution1 nullness2
+ }
- // 'v1 = 'v2
- | TType_var (tp1, _), TType_var (tp2, _) when PreferUnifyTypar tp1 tp2 ->
- SolveTyparEqualsType csenv ndeep m2 trace sty1 ty2
- // 'v1 = 'v2
- | TType_var (tp1, _), TType_var (tp2, _) when not csenv.MatchingOnly && PreferUnifyTypar tp2 tp1 ->
- SolveTyparEqualsType csenv ndeep m2 trace sty2 ty1
+ | TType_var (tp1, nullness1), TType_var (tp2, nullness2) when not csenv.MatchingOnly && PreferUnifyTypar tp2 tp1 ->
+ match nullness1.TryEvaluate(), nullness2.TryEvaluate() with
+ // Unifying 'T1? and 'T2?
+ | ValueSome NullnessInfo.WithNull, ValueSome NullnessInfo.WithNull ->
+ SolveTyparEqualsType csenv ndeep m2 trace sty2 (TType_var (tp1, g.knownWithoutNull))
+ | ValueSome NullnessInfo.WithNull, ValueSome NullnessInfo.WithoutNull ->
+ let tpNew = NewCompGenTypar(TyparKind.Type, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, false)
+ trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace cxsln sty2 (TType_var(tpNew, g.knownWithNull))
+ do! SolveTypeEqualsType csenv ndeep m2 trace cxsln (TType_var(tpNew, g.knownWithoutNull)) sty1
+ }
+ //// Unifying 'T1 % and 'T2 %
+ //| ValueSome NullnessInfo.AmbivalentToNull, ValueSome NullnessInfo.AmbivalentToNull ->
+ // SolveTyparEqualsType csenv ndeep m2 trace sty2 (TType_var (tp1, g.knownWithoutNull))
+ | _ ->
+ // Unifying 'T1 ? and 'T2 %
+ // Unifying 'T1 % and 'T2 ?
+ trackErrors {
+ do! SolveTyparEqualsType csenv ndeep m2 trace sty2 ty1
+ let nullnessAfterSolution2 = combineNullness (nullnessOfTy g sty2) nullness2
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 nullness1 nullnessAfterSolution2
+ }
- | TType_var (r, _), _ when not (IsRigid csenv r) ->
- SolveTyparEqualsType csenv ndeep m2 trace sty1 ty2
+ | TType_var (tp1, nullness1), _ when not (IsRigid csenv tp1) ->
+ match nullness1.TryEvaluate(), (nullnessOfTy g sty2).TryEvaluate() with
+ // Unifying 'T1? and 'T2?
+ | ValueSome NullnessInfo.WithNull, ValueSome NullnessInfo.WithNull ->
+ SolveTyparEqualsType csenv ndeep m2 trace sty1 (replaceNullnessOfTy g.knownWithoutNull sty2)
+ | ValueSome NullnessInfo.WithoutNull, ValueSome NullnessInfo.WithoutNull when
+ csenv.IsSupportsNullFlex &&
+ isAppTy g sty2 &&
+ tp1.Constraints |> List.exists (function TyparConstraint.SupportsNull _ -> true | _ -> false) ->
+ let tpNew = NewCompGenTypar(TyparKind.Type, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, false)
+ trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace cxsln (TType_var(tpNew, g.knownWithoutNull)) sty2
+ do! SolveTypeEqualsType csenv ndeep m2 trace cxsln ty1 (TType_var(tpNew, g.knownWithNull))
+ }
+ // Unifying 'T1 % and 'T2 %
+ //| ValueSome NullnessInfo.AmbivalentToNull, ValueSome NullnessInfo.AmbivalentToNull ->
+ // SolveTyparEqualsType csenv ndeep m2 trace sty1 (replaceNullnessOfTy g.knownWithoutNull sty2)
+ | _ ->
+ trackErrors {
+ do! SolveTyparEqualsType csenv ndeep m2 trace sty1 ty2
+ let nullnessAfterSolution1 = combineNullness (nullnessOfTy g sty1) nullness1
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 nullnessAfterSolution1 (nullnessOfTy g sty2)
+ }
- | _, TType_var (r, _) when not csenv.MatchingOnly && not (IsRigid csenv r) ->
- SolveTyparEqualsType csenv ndeep m2 trace sty2 ty1
+ | _, TType_var (tp2, nullness2) when not csenv.MatchingOnly && not (IsRigid csenv tp2) ->
+ match (nullnessOfTy g sty1).TryEvaluate(), nullness2.TryEvaluate() with
+ // Unifying 'T1? and 'T2?
+ | ValueSome NullnessInfo.WithNull, ValueSome NullnessInfo.WithNull ->
+ SolveTyparEqualsType csenv ndeep m2 trace sty2 (replaceNullnessOfTy g.knownWithoutNull sty1)
+ // Unifying 'T1 % and 'T2 %
+ //| ValueSome NullnessInfo.AmbivalentToNull, ValueSome NullnessInfo.AmbivalentToNull ->
+ // SolveTyparEqualsType csenv ndeep m2 trace sty2 (replaceNullnessOfTy g.knownWithoutNull sty1)
+ | _ ->
+ trackErrors {
+ do! SolveTyparEqualsType csenv ndeep m2 trace sty2 ty1
+ let nullnessAfterSolution2 = combineNullness (nullnessOfTy g sty2) nullness2
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) nullnessAfterSolution2
+ }
- // Catch float<_>=float<1>, float32<_>=float32<1> and decimal<_>=decimal<1>
- | _, TType_app (tc2, [ms], _) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty1 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) ->
- SolveTypeEqualsType csenv ndeep m2 trace None ms (TType_measure Measure.One)
+ // Catch float<_>=float<1>, float32<_>=float32<1> and decimal<_>=decimal<1>
+ | (_, TType_app (tc2, [ms2], _)) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty1 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms2])) ->
+ trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace None (TType_measure Measure.One) ms2
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) (nullnessOfTy g sty2)
+ }
- | TType_app (tc2, [ms], _), _ when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty2 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) ->
- SolveTypeEqualsType csenv ndeep m2 trace None ms (TType_measure Measure.One)
+ | (TType_app (tc1, [ms1], _), _) when (tc1.IsMeasureableReprTycon && typeEquiv csenv.g sty2 (reduceTyconRefMeasureableOrProvided csenv.g tc1 [ms1])) ->
+ trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace None ms1 (TType_measure Measure.One)
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) (nullnessOfTy g sty2)
+ }
- | TType_app (tc1, l1, _), TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 ->
- SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
+ | TType_app (tc1, l1, _), TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 ->
+ trackErrors {
+ do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) (nullnessOfTy g sty2)
+ }
+ | TType_app _, TType_app _ ->
+ localAbortD
- | TType_app _, TType_app _ ->
- localAbortD
+ | TType_tuple (tupInfo1, l1), TType_tuple (tupInfo2, l2) ->
+ if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then
+ ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2))
+ else
+ SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
- | TType_tuple (tupInfo1, l1), TType_tuple (tupInfo2, l2) ->
- if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2)) else
- SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
+ | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) ->
+ trackErrors {
+ do! SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2
+ do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
+ }
- | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) -> trackErrors {
- do! SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2
- do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
- }
- | TType_fun (domainTy1, rangeTy1, _), TType_fun (domainTy2, rangeTy2, _) ->
- SolveFunTypeEqn csenv ndeep m2 trace None domainTy1 domainTy2 rangeTy1 rangeTy2
+ | TType_fun (domainTy1, rangeTy1, nullness1), TType_fun (domainTy2, rangeTy2, nullness2) ->
+ trackErrors {
+ do! SolveFunTypeEqn csenv ndeep m2 trace None domainTy1 domainTy2 rangeTy1 rangeTy2
+ do! SolveNullnessEquiv csenv m2 trace ty1 ty2 nullness1 nullness2
+ }
- | TType_measure ms1, TType_measure ms2 ->
- UnifyMeasures csenv trace ms1 ms2
+ | TType_measure ms1, TType_measure ms2 ->
+ UnifyMeasures csenv trace ms1 ms2
- | TType_forall(tps1, bodyTy1), TType_forall(tps2, bodyTy2) ->
- if tps1.Length <> tps2.Length then localAbortD else
- let aenv = aenv.BindEquivTypars tps1 tps2
- let csenv = {csenv with EquivEnv = aenv }
- if not (typarsAEquiv g aenv tps1 tps2) then localAbortD else
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace bodyTy1 bodyTy2
+ | TType_forall(tps1, bodyTy1), TType_forall(tps2, bodyTy2) ->
+ if tps1.Length <> tps2.Length then
+ localAbortD
+ else
+ let aenv = aenv.BindEquivTypars tps1 tps2
+ let csenv = {csenv with EquivEnv = aenv }
+ if not (typarsAEquiv g aenv tps1 tps2) then
+ localAbortD
+ else
+ SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace bodyTy1 bodyTy2
- | TType_ucase (uc1, l1), TType_ucase (uc2, l2) when g.unionCaseRefEq uc1 uc2 ->
- SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
+ | TType_ucase (uc1, l1), TType_ucase (uc2, l2) when g.unionCaseRefEq uc1 uc2 ->
+ SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
- | _ -> localAbortD
+ | _ -> localAbortD
and SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1 ty2 =
SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace None ty1 ty2
@@ -1223,14 +1395,14 @@ and private SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln t
| LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInEqualityRelation(csenv.DisplayEnv, ty1, ty2, csenv.m, m2, csenv.eContextInfo))
| err -> ErrorD err)
-and SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln origl1 origl2 =
- match origl1, origl2 with
- | [], [] -> CompleteD
- | _ ->
+and SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln origl1 origl2 =
+ match origl1, origl2 with
+ | [], [] -> CompleteD
+ | _ ->
// We unwind Iterate2D by hand here for performance reasons.
- let rec loop l1 l2 =
- match l1, l2 with
- | [], [] -> CompleteD
+ let rec loop l1 l2 =
+ match l1, l2 with
+ | [], [] -> CompleteD
| h1 :: t1, h2 :: t2 when t1.Length = t2.Length ->
trackErrors {
do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln h1 h2
@@ -1240,119 +1412,179 @@ and SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln origl1 origl2 =
ErrorD(ConstraintSolverTupleDiffLengths(csenv.DisplayEnv, csenv.eContextInfo, origl1, origl2, csenv.m, m2))
loop origl1 origl2
-and SolveFunTypeEqn csenv ndeep m2 trace cxsln domainTy1 domainTy2 rangeTy1 rangeTy2 = trackErrors {
- do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln domainTy1 domainTy2
- return! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln rangeTy1 rangeTy2
- }
+and SolveTypeEqualsTypeWithContravarianceEqns (csenv:ConstraintSolverEnv) ndeep m2 trace cxsln origl1 origl2 typars =
+ let isContravariant (t:Typar) =
+ t.typar_opt_data
+ |> Option.map (fun d -> d.typar_is_contravariant)
+ |> Option.defaultValue(false)
+
+ match origl1, origl2, typars with
+ | [], [], [] -> CompleteD
+ | _ ->
+ // We unwind Iterate2D by hand here for performance reasons.
+ let rec loop l1 l2 tps =
+ match l1, l2, tps with
+ | [], [], [] -> CompleteD
+ | h1 :: t1, h2 :: t2, hTp :: tTps when t1.Length = t2.Length && t1.Length = tTps.Length ->
+ trackErrors {
+ let h1 =
+ // For contravariant typars (` in C#'), if the required type is WithNull, the actual type can have any nullness it wants
+ // Without this added logic, their nullness would be forced to be equal.
+ if isContravariant hTp && (nullnessOfTy csenv.g h2).TryEvaluate() = ValueSome NullnessInfo.WithNull then
+ replaceNullnessOfTy csenv.g.knownWithNull h1
+ else
+ h1
+
+ do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln h1 h2
+ do! loop t1 t2 tTps
+ }
+ | _ ->
+ ErrorD(ConstraintSolverTupleDiffLengths(csenv.DisplayEnv, csenv.eContextInfo, origl1, origl2, csenv.m, m2))
+ loop origl1 origl2 typars
+
+and SolveFunTypeEqn csenv ndeep m2 trace cxsln domainTy1 domainTy2 rangeTy1 rangeTy2 =
+ trackErrors {
+ let g = csenv.g
+ let domainTy2 = reqTyForArgumentNullnessInference g domainTy1 domainTy2
+ do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln domainTy2 domainTy1
+ return! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln rangeTy1 rangeTy2
+ }
// ty1: expected
// ty2: actual
//
// "ty2 casts to ty1"
// "a value of type ty2 can be used where a value of type ty1 is expected"
-and SolveTypeSubsumesType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) cxsln ty1 ty2 =
- // 'a :> obj --->
+and SolveTypeSubsumesType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) cxsln ty1 ty2 =
let ndeep = ndeep + 1
let g = csenv.g
- if isObjTy g ty1 then CompleteD else
let canShortcut = not trace.HasTrace
- let sty1 = stripTyEqnsA csenv.g canShortcut ty1
- let sty2 = stripTyEqnsA csenv.g canShortcut ty2
-
- let amap = csenv.amap
- let aenv = csenv.EquivEnv
- let denv = csenv.DisplayEnv
-
- match sty1, sty2 with
- | TType_var (tp1, _), _ ->
- match aenv.EquivTypars.TryFind tp1 with
- | Some tpTy1 -> SolveTypeSubsumesType csenv ndeep m2 trace cxsln tpTy1 ty2
- | _ ->
- match sty2 with
- | TType_var (r2, _) when typarEq tp1 r2 -> CompleteD
- | TType_var (r, _) when not csenv.MatchingOnly -> SolveTyparSubtypeOfType csenv ndeep m2 trace r ty1
- | _ -> SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln ty1 ty2
-
- | _, TType_var (r, _) when not csenv.MatchingOnly ->
- SolveTyparSubtypeOfType csenv ndeep m2 trace r ty1
- | TType_tuple (tupInfo1, l1), TType_tuple (tupInfo2, l2) ->
- if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2)) else
- SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2 (* nb. can unify since no variance *)
-
- | TType_anon (anonInfo1, l1), TType_anon (anonInfo2, l2) -> trackErrors {
- do! SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2
- do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2 (* nb. can unify since no variance *)
- }
-
- | TType_fun (domainTy1, rangeTy1, _), TType_fun (domainTy2, rangeTy2, _) ->
- SolveFunTypeEqn csenv ndeep m2 trace cxsln domainTy1 domainTy2 rangeTy1 rangeTy2 (* nb. can unify since no variance *)
-
- | TType_measure ms1, TType_measure ms2 ->
- UnifyMeasures csenv trace ms1 ms2
+ // 'a :> objnull --->
+ if isObjNullTy g ty1 then
+ CompleteD
+ elif isObjTyAnyNullness g ty1 && not csenv.MatchingOnly && not(isTyparTy g ty2) then
+ let nullness t = t |> stripTyEqnsA g canShortcut |> nullnessOfTy g
+ SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 (nullness ty1) (nullness ty2)
+ else
+ let sty1 = stripTyEqnsA csenv.g canShortcut ty1
+ let sty2 = stripTyEqnsA csenv.g canShortcut ty2
+ let amap = csenv.amap
+ let aenv = csenv.EquivEnv
+ let denv = csenv.DisplayEnv
- // Enforce the identities float=float<1>, float32=float32<1> and decimal=decimal<1>
- | _, TType_app (tc2, [ms], _) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty1 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) ->
- SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln ms (TType_measure Measure.One)
+ match sty1, sty2 with
+ | TType_var (tp1, nullness1) , _ ->
+ match aenv.EquivTypars.TryFind tp1 with
+ | Some tpTy1 -> SolveTypeSubsumesType csenv ndeep m2 trace cxsln tpTy1 ty2
+ | _ ->
+ match sty2 with
+ | TType_var (r2, nullness2) when typarEq tp1 r2 ->
+ SolveNullnessEquiv csenv m2 trace ty1 ty2 nullness1 nullness2
+ | TType_var (r2, nullness2) when not csenv.MatchingOnly ->
+ trackErrors {
+ do! SolveTyparSubtypeOfType csenv ndeep m2 trace r2 ty1
+ let nullnessAfterSolution2 = combineNullness (nullnessOfTy g sty2) nullness2
+ do! SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 nullness1 nullnessAfterSolution2
+ }
+ | _ -> SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln ty1 ty2
- | TType_app (tc2, [ms], _), _ when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty2 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) ->
- SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln ms (TType_measure Measure.One)
+ | _, TType_var (r2, nullness2) when not csenv.MatchingOnly ->
+ trackErrors {
+ do! SolveTyparSubtypeOfType csenv ndeep m2 trace r2 ty1
+ let nullnessAfterSolution2 = combineNullness (nullnessOfTy g sty2) nullness2
+ do! SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) nullnessAfterSolution2
+ }
- // Special subsumption rule for byref tags
- | TType_app (tc1, l1, _), TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 && g.byref2_tcr.CanDeref && tyconRefEq g g.byref2_tcr tc1 ->
- match l1, l2 with
- | [ h1; tag1 ], [ h2; tag2 ] -> trackErrors {
- do! SolveTypeEqualsType csenv ndeep m2 trace None h1 h2
- match stripTyEqnsA csenv.g canShortcut tag1, stripTyEqnsA csenv.g canShortcut tag2 with
- | TType_app(tagc1, [], _), TType_app(tagc2, [], _)
- when (tyconRefEq g tagc2 g.byrefkind_InOut_tcr &&
- (tyconRefEq g tagc1 g.byrefkind_In_tcr || tyconRefEq g tagc1 g.byrefkind_Out_tcr) ) -> ()
- | _ -> return! SolveTypeEqualsType csenv ndeep m2 trace cxsln tag1 tag2
- }
- | _ -> SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2
+ | TType_tuple (tupInfo1, l1), TType_tuple (tupInfo2, l2) ->
+ if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then
+ ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2))
+ else
+ SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2 (* nb. can unify since no variance *)
+ | TType_fun (domainTy1, rangeTy1, nullness1), TType_fun (domainTy2, rangeTy2, nullness2) ->
+ // nb. can unify since no variance
+ trackErrors {
+ do! SolveFunTypeEqn csenv ndeep m2 trace cxsln domainTy1 domainTy2 rangeTy1 rangeTy2
+ do! SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 nullness1 nullness2
+ }
+ | TType_anon (anonInfo1, l1), TType_anon (anonInfo2, l2) ->
+ trackErrors {
+ do! SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2
+ do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2
+ }
+ | TType_measure ms1, TType_measure ms2 ->
+ UnifyMeasures csenv trace ms1 ms2
- | TType_app (tc1, l1, _), TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 ->
- SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2
+ // Enforce the identities float=float<1>, float32=float32<1> and decimal=decimal<1>
+ | _, TType_app (tc2, [ms2], _) when tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty1 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms2]) ->
+ trackErrors {
+ do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln ms2 (TType_measure Measure.One)
+ do! SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) (nullnessOfTy g sty2)
+ }
- | TType_ucase (uc1, l1), TType_ucase (uc2, l2) when g.unionCaseRefEq uc1 uc2 ->
- SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2
+ | TType_app (tc1, [ms1], _), _ when tc1.IsMeasureableReprTycon && typeEquiv csenv.g sty2 (reduceTyconRefMeasureableOrProvided csenv.g tc1 [ms1]) ->
+ trackErrors {
+ do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln ms1 (TType_measure Measure.One)
+ do! SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) (nullnessOfTy g sty2)
+ }
- | _ ->
- // By now we know the type is not a variable type
+ // Special subsumption rule for byref tags
+ | TType_app (tc1, l1, _) , TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 && g.byref2_tcr.CanDeref && tyconRefEq g g.byref2_tcr tc1 ->
+ match l1, l2 with
+ | [ h1; tag1 ], [ h2; tag2 ] -> trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace None h1 h2
+ match stripTyEqnsA csenv.g canShortcut tag1, stripTyEqnsA csenv.g canShortcut tag2 with
+ | TType_app(tagc1, [], _), TType_app(tagc2, [], _)
+ when (tyconRefEq g tagc2 g.byrefkind_InOut_tcr &&
+ (tyconRefEq g tagc1 g.byrefkind_In_tcr || tyconRefEq g tagc1 g.byrefkind_Out_tcr) ) -> ()
+ | _ -> return! SolveTypeEqualsType csenv ndeep m2 trace cxsln tag1 tag2
+ }
+ | _ -> SolveTypeEqualsTypeWithContravarianceEqns csenv ndeep m2 trace cxsln l1 l2 tc1.TyparsNoRange
- // C :> obj --->
- if isObjTy g ty1 then CompleteD else
-
- let m = csenv.m
+ | TType_app (tc1, l1, _) , TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 ->
+ trackErrors {
+ do! SolveTypeEqualsTypeWithContravarianceEqns csenv ndeep m2 trace cxsln l1 l2 tc1.TyparsNoRange
+ do! SolveNullnessSubsumesNullness csenv m2 trace ty1 ty2 (nullnessOfTy g sty1) (nullnessOfTy g sty2)
+ }
- // 'a[] :> IList<'b> ---> 'a = 'b
- // 'a[] :> ICollection<'b> ---> 'a = 'b
- // 'a[] :> IEnumerable<'b> ---> 'a = 'b
- // 'a[] :> IReadOnlyList<'b> ---> 'a = 'b
- // 'a[] :> IReadOnlyCollection<'b> ---> 'a = 'b
- // Note we don't support co-variance on array types nor
- // the special .NET conversions for these types
- match ty1 with
- | AppTy g (tcref1, tinst1) when
- isArray1DTy g ty2 &&
- (tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IList ||
- tyconRefEq g tcref1 g.tcref_System_Collections_Generic_ICollection ||
- tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IReadOnlyList ||
- tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IReadOnlyCollection ||
- tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IEnumerable) ->
- match tinst1 with
- | [elemTy1] ->
- let elemTy2 = destArrayTy g ty2
- SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln elemTy1 elemTy2
- | _ -> error(InternalError("destArrayTy", m))
+ | TType_ucase (uc1, l1), TType_ucase (uc2, l2) when g.unionCaseRefEq uc1 uc2 ->
+ SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2
| _ ->
- // D :> Head<_> --> C :> Head<_> for the
- // first interface or super-class C supported by D which
- // may feasibly convert to Head.
- match FindUniqueFeasibleSupertype g amap m ty1 ty2 with
- | None -> ErrorD(ConstraintSolverTypesNotInSubsumptionRelation(denv, ty1, ty2, m, m2))
- | Some t -> SolveTypeSubsumesType csenv ndeep m2 trace cxsln ty1 t
+ // By now we know the type is not a variable type
+ // C :> obj --->
+ if isObjNullTy g ty1 then
+ CompleteD
+ else
+ let m = csenv.m
+ // 'a[] :> IList<'b> ---> 'a = 'b
+ // 'a[] :> ICollection<'b> ---> 'a = 'b
+ // 'a[] :> IEnumerable<'b> ---> 'a = 'b
+ // 'a[] :> IReadOnlyList<'b> ---> 'a = 'b
+ // 'a[] :> IReadOnlyCollection<'b> ---> 'a = 'b
+ // Note we don't support co-variance on array types nor
+ // the special .NET conversions for these types
+ match ty1 with
+ | AppTy g (tcref1, tinst1) when
+ isArray1DTy g ty2 &&
+ (tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IList ||
+ tyconRefEq g tcref1 g.tcref_System_Collections_Generic_ICollection ||
+ tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IReadOnlyList ||
+ tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IReadOnlyCollection ||
+ tyconRefEq g tcref1 g.tcref_System_Collections_Generic_IEnumerable) ->
+ match tinst1 with
+ | [elemTy1] ->
+ let elemTy2 = destArrayTy g ty2
+ SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln elemTy1 elemTy2
+ | _ -> error(InternalError("destArrayTy", m))
+
+ | _ ->
+ // D :> Head<_> --> C :> Head<_> for the
+ // first interface or super-class C supported by D which
+ // may feasibly convert to Head.
+ match FindUniqueFeasibleSupertype g amap m ty1 ty2 with
+ | None -> ErrorD(ConstraintSolverTypesNotInSubsumptionRelation(denv, ty1, ty2, m, m2))
+ | Some t -> SolveTypeSubsumesType csenv ndeep m2 trace cxsln ty1 t
and SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m2 trace cxsln ty1 ty2 =
let denv = csenv.DisplayEnv
@@ -1367,21 +1599,28 @@ and SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m2 trace cxsln ty1 ty2 =
and SolveTyparSubtypeOfType (csenv: ConstraintSolverEnv) ndeep m2 trace tp ty1 =
let g = csenv.g
- if isObjTy g ty1 then CompleteD
- elif typeEquiv g ty1 (mkTyparTy tp) then CompleteD
+ if isObjNullTy g ty1 then
+ CompleteD
+ elif isObjTyAnyNullness g ty1 then
+ AddConstraint csenv ndeep m2 trace tp (TyparConstraint.NotSupportsNull csenv.m)
+ elif typeEquiv g ty1 (mkTyparTy tp) then
+ CompleteD
elif isSealedTy g ty1 then
SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace (mkTyparTy tp) ty1
else
AddConstraint csenv ndeep m2 trace tp (TyparConstraint.CoercesTo(ty1, csenv.m))
and DepthCheck ndeep m =
- if ndeep > 300 then error(Error(FSComp.SR.csTypeInferenceMaxDepth(), m)) else CompleteD
+ if ndeep > 300 then
+ error(Error(FSComp.SR.csTypeInferenceMaxDepth(), m))
+ else
+ CompleteD
// If this is a type that's parameterized on a unit-of-measure (expected to be numeric), unify its measure with 1
and SolveDimensionlessNumericType (csenv: ConstraintSolverEnv) ndeep m2 trace ty =
match getMeasureOfType csenv.g ty with
| Some (tcref, _) ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty (mkAppTy tcref [TType_measure Measure.One])
+ SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty (mkWoNullAppTy tcref [TType_measure Measure.One])
| None ->
CompleteD
@@ -1393,425 +1632,440 @@ and SolveDimensionlessNumericType (csenv: ConstraintSolverEnv) ndeep m2 trace ty
/// will deal with the problem.
///
/// 2. Some additional solutions are forced prior to generalization (permitWeakResolution= Yes or YesDuringCodeGen). See above
-and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload permitWeakResolution ndeep m2 trace traitInfo : OperationResult = trackErrors {
- let (TTrait(supportTys, nm, memFlags, traitObjAndArgTys, retTy, sln)) = traitInfo
- // Do not re-solve if already solved
- if sln.Value.IsSome then return true else
-
- let g = csenv.g
- let m = csenv.m
- let amap = csenv.amap
- let aenv = csenv.EquivEnv
- let denv = csenv.DisplayEnv
-
- let ndeep = ndeep + 1
- do! DepthCheck ndeep m
-
- // Remove duplicates from the set of types in the support
- let supportTys = ListSet.setify (typeAEquiv g aenv) supportTys
+and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload permitWeakResolution ndeep m2 trace traitInfo : OperationResult =
+ trackErrors {
+ let (TTrait(supportTys, nm, memFlags, traitObjAndArgTys, retTy, source, sln)) = traitInfo
+ // Do not re-solve if already solved
+ if sln.Value.IsSome then
+ return true
+ else
+ let g = csenv.g
+ let m = csenv.m
+ let amap = csenv.amap
+ let aenv = csenv.EquivEnv
+ let denv = csenv.DisplayEnv
- // Rebuild the trait info after removing duplicates
- let traitInfo = TTrait(supportTys, nm, memFlags, traitObjAndArgTys, retTy, sln)
- let retTy = GetFSharpViewOfReturnType g retTy
-
- // Assert the object type if the constraint is for an instance member
- if memFlags.IsInstance then
- match supportTys, traitObjAndArgTys with
- | [ty], h :: _ -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace h ty
- | _ -> do! ErrorD (ConstraintSolverError(FSComp.SR.csExpectedArguments(), m, m2))
-
- // Trait calls are only supported on pseudo type (variables)
- if not (g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers) then
- for e in supportTys do
- do! SolveTypStaticReq csenv trace TyparStaticReq.HeadType e
-
- // SRTP constraints on rigid type parameters do not need to be solved
- let isRigid =
- supportTys |> List.forall (fun ty ->
- match tryDestTyparTy g ty with
- | ValueSome tp ->
- match tp.Rigidity with
- | TyparRigidity.Rigid
- | TyparRigidity.WillBeRigid -> true
- | _ -> false
- | ValueNone -> false)
+ let ndeep = ndeep + 1
+ do! DepthCheck ndeep m
- let argTys = if memFlags.IsInstance then List.tail traitObjAndArgTys else traitObjAndArgTys
+ // Remove duplicates from the set of types in the support
+ let supportTys = ListSet.setify (typeAEquiv g aenv) supportTys
- let minfos = GetRelevantMethodsForTrait csenv permitWeakResolution nm traitInfo
+ // Rebuild the trait info after removing duplicates
+ let traitInfo = traitInfo.WithSupportTypes supportTys
+ let retTy = GetFSharpViewOfReturnType g retTy
- let! res =
- trackErrors {
- match minfos, supportTys, memFlags.IsInstance, nm, argTys with
- | _, _, false, ("op_Division" | "op_Multiply"), [argTy1;argTy2]
- when
- // This simulates the existence of
- // float * float -> float
- // float32 * float32 -> float32
- // float<'u> * float<'v> -> float<'u 'v>
- // float32<'u> * float32<'v> -> float32<'u 'v>
- // decimal<'u> * decimal<'v> -> decimal<'u 'v>
- // decimal<'u> * decimal -> decimal<'u>
- // float32<'u> * float32<'v> -> float32<'u 'v>
- // int * int -> int
- // int64 * int64 -> int64
- //
- // The rule is triggered by these sorts of inputs when permitWeakResolution=false
- // float * float
- // float * float32 // will give error
- // decimal * decimal
- // decimal * decimal <-- Note this one triggers even though "decimal" has some possibly-relevant methods
- // float * Matrix // the rule doesn't trigger for this one since Matrix has overloads we can use and we prefer those instead
- // float * Matrix // the rule doesn't trigger for this one since Matrix has overloads we can use and we prefer those instead
- //
- // The rule is triggered by these sorts of inputs when permitWeakResolution=true
- // float * 'a
- // 'a * float
- // decimal<'u> * 'a
- (let checkRuleAppliesInPreferenceToMethods argTy1 argTy2 =
- // Check that at least one of the argument types is numeric
- IsNumericOrIntegralEnumType g argTy1 &&
- // Check the other type is nominal, unless using weak resolution
- IsBinaryOpOtherArgType g permitWeakResolution argTy2 &&
- // This next condition checks that either
- // - Neither type contributes any methods OR
- // - We have the special case "decimal<_> * decimal". In this case we have some
- // possibly-relevant methods from "decimal" but we ignore them in this case.
- (isNil minfos || (Option.isSome (getMeasureOfType g argTy1) && isDecimalTy g argTy2)) in
-
- checkRuleAppliesInPreferenceToMethods argTy1 argTy2 ||
- checkRuleAppliesInPreferenceToMethods argTy2 argTy1) ->
-
- match getMeasureOfType g argTy1 with
- | Some (tcref, ms1) ->
- let ms2 = freshMeasure ()
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 (mkAppTy tcref [TType_measure ms2])
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))])
- return TTraitBuiltIn
-
- | _ ->
-
- match getMeasureOfType g argTy2 with
- | Some (tcref, ms2) ->
- let ms1 = freshMeasure ()
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy1 (mkAppTy tcref [TType_measure ms1])
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))])
- return TTraitBuiltIn
-
- | _ ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- return TTraitBuiltIn
-
- | _, _, false, ("op_Addition" | "op_Subtraction" | "op_Modulus"), [argTy1;argTy2]
- when // Ignore any explicit +/- overloads from any basic integral types
- (minfos |> List.forall (fun (_, minfo) -> isIntegerTy g minfo.ApparentEnclosingType ) &&
- ( IsAddSubModType nm g argTy1 && IsBinaryOpOtherArgType g permitWeakResolution argTy2
- || IsAddSubModType nm g argTy2 && IsBinaryOpOtherArgType g permitWeakResolution argTy1)) ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- return TTraitBuiltIn
-
- | _, _, false, ("op_LessThan" | "op_LessThanOrEqual" | "op_GreaterThan" | "op_GreaterThanOrEqual" | "op_Equality" | "op_Inequality" ), [argTy1;argTy2]
- when // Ignore any explicit overloads from any basic integral types
- (minfos |> List.forall (fun (_, minfo) -> isIntegerTy g minfo.ApparentEnclosingType ) &&
- ( IsRelationalType g argTy1 && IsBinaryOpOtherArgType g permitWeakResolution argTy2
- || IsRelationalType g argTy2 && IsBinaryOpOtherArgType g permitWeakResolution argTy1)) ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy g.bool_ty
- return TTraitBuiltIn
-
- // We pretend for uniformity that the numeric types have a static property called Zero and One
- // As with constants, only zero is polymorphic in its units
- | [], [ty], false, "get_Zero", []
- when isNumericType g ty || isCharTy g ty ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ty
- return TTraitBuiltIn
-
- | [], [ty], false, "get_One", []
- when isNumericType g ty || isCharTy g ty ->
- do! SolveDimensionlessNumericType csenv ndeep m2 trace ty
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ty
- return TTraitBuiltIn
-
- | [], _, false, "DivideByInt", [argTy1;argTy2]
- when isFpTy g argTy1 || isDecimalTy g argTy1 ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 g.int_ty
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- return TTraitBuiltIn
-
- // We pretend for uniformity that the 'string' and 'array' types have an indexer property called 'Item'
- | [], [ty], true, "get_Item", [argTy1]
- when isStringTy g ty ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy1 g.int_ty
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy g.char_ty
- return TTraitBuiltIn
-
- | [], [ty], true, "get_Item", argTys
- when isArrayTy g ty ->
-
- if rankOfArrayTy g ty <> argTys.Length then
- do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argTys.Length), m, m2))
-
- for argTy in argTys do
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy g.int_ty
-
- let ety = destArrayTy g ty
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ety
- return TTraitBuiltIn
-
- | [], [ty], true, "set_Item", argTys
- when isArrayTy g ty ->
-
- if rankOfArrayTy g ty <> argTys.Length - 1 then
- do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argTys.Length - 1)), m, m2))
- let argTys, lastTy = List.frontAndBack argTys
-
- for argTy in argTys do
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy g.int_ty
-
- let elemTy = destArrayTy g ty
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace lastTy elemTy
- return TTraitBuiltIn
-
- | [], _, false, ("op_BitwiseAnd" | "op_BitwiseOr" | "op_ExclusiveOr"), [argTy1;argTy2]
- when IsBitwiseOpType g argTy1 && IsBinaryOpOtherArgType g permitWeakResolution argTy2
- || IsBitwiseOpType g argTy2 && IsBinaryOpOtherArgType g permitWeakResolution argTy1 ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy1
- return TTraitBuiltIn
-
- | [], _, false, ("op_LeftShift" | "op_RightShift"), [argTy1;argTy2]
- when IsIntegerOrIntegerEnumTy g argTy1 ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 g.int_ty
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy1
- return TTraitBuiltIn
-
- | _, _, false, "op_UnaryPlus", [argTy]
- when IsNumericOrIntegralEnumType g argTy ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
- return TTraitBuiltIn
-
- | _, _, false, "op_UnaryNegation", [argTy]
- when isSignedIntegerTy g argTy || isFpTy g argTy || isDecimalTy g argTy ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
- return TTraitBuiltIn
-
- | _, _, true, "get_Sign", []
- when IsSignType g supportTys.Head ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy g.int32_ty
- return TTraitBuiltIn
-
- | _, _, false, ("op_LogicalNot" | "op_OnesComplement"), [argTy]
- when IsIntegerOrIntegerEnumTy g argTy ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
- do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy
- return TTraitBuiltIn
-
- | _, _, false, "Abs", [argTy]
- when isSignedIntegerTy g argTy || isFpTy g argTy || isDecimalTy g argTy ->
-
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
- return TTraitBuiltIn
-
- | _, _, false, "Sqrt", [argTy1]
- when isFpTy g argTy1 ->
- match getMeasureOfType g argTy1 with
- | Some (tcref, _) ->
- let ms1 = freshMeasure ()
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy1 (mkAppTy tcref [TType_measure (Measure.Prod (ms1, ms1))])
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkAppTy tcref [TType_measure ms1])
- return TTraitBuiltIn
- | None ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- return TTraitBuiltIn
-
- | _, _, false, ("Sin" | "Cos" | "Tan" | "Sinh" | "Cosh" | "Tanh" | "Atan" | "Acos" | "Asin" | "Exp" | "Ceiling" | "Floor" | "Round" | "Truncate" | "Log10" | "Log" | "Sqrt"), [argTy]
- when isFpTy g argTy ->
-
- do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
- return TTraitBuiltIn
-
- // Conversions from non-decimal numbers / strings / chars to non-decimal numbers / chars are built-in
- | _, _, false, "op_Explicit", [argTy]
- when (// The input type.
- (IsNonDecimalNumericOrIntegralEnumType g argTy || isStringTy g argTy || isCharTy g argTy) &&
- // The output type
- (IsNonDecimalNumericOrIntegralEnumType g retTy || isCharTy g retTy)) ->
-
- return TTraitBuiltIn
-
- // Conversions from (including decimal) numbers / strings / chars to decimals are built-in
- | _, _, false, "op_Explicit", [argTy]
- when (// The input type.
- (IsNumericOrIntegralEnumType g argTy || isStringTy g argTy || isCharTy g argTy) &&
- // The output type
- (isDecimalTy g retTy)) ->
- return TTraitBuiltIn
-
- // Conversions from decimal numbers to native integers are built-in
- // The rest of decimal conversions are handled via op_Explicit lookup on System.Decimal (which also looks for op_Implicit)
- | _, _, false, "op_Explicit", [argTy]
- when (// The input type.
- (isDecimalTy g argTy) &&
- // The output type
- (isNativeIntegerTy g retTy)) ->
- return TTraitBuiltIn
-
- | [], _, false, "Pow", [argTy1; argTy2]
- when isFpTy g argTy1 ->
-
- do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy1
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- return TTraitBuiltIn
-
- | _, _, false, "Atan2", [argTy1; argTy2]
- when isFpTy g argTy1 ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
- match getMeasureOfType g argTy1 with
- | None -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
- | Some (tcref, _) -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkAppTy tcref [TType_measure Measure.One])
- return TTraitBuiltIn
+ // Assert the object type if the constraint is for an instance member
+ if memFlags.IsInstance then
+ match supportTys, traitObjAndArgTys with
+ | [ty], h :: _ -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace h ty
+ | _ -> do! ErrorD (ConstraintSolverError(FSComp.SR.csExpectedArguments(), m, m2))
+
+ // Trait calls are only supported on pseudo type (variables)
+ if not (g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers) then
+ for e in supportTys do
+ do! SolveTypStaticReq csenv trace TyparStaticReq.HeadType e
+
+ // SRTP constraints on rigid type parameters do not need to be solved
+ let isRigid =
+ supportTys |> List.forall (fun ty ->
+ match tryDestTyparTy g ty with
+ | ValueSome tp ->
+ match tp.Rigidity with
+ | TyparRigidity.Rigid
+ | TyparRigidity.WillBeRigid -> true
+ | _ -> false
+ | ValueNone -> false)
+
+ let argTys = if memFlags.IsInstance then List.tail traitObjAndArgTys else traitObjAndArgTys
+
+ let minfos = GetRelevantMethodsForTrait csenv permitWeakResolution nm traitInfo
+
+ let! res =
+ trackErrors {
+ match minfos, supportTys, memFlags.IsInstance, nm, argTys with
+ | _, _, false, ("op_Division" | "op_Multiply"), [argTy1;argTy2]
+ when
+ // This simulates the existence of
+ // float * float -> float
+ // float32 * float32 -> float32
+ // float<'u> * float<'v> -> float<'u 'v>
+ // float32<'u> * float32<'v> -> float32<'u 'v>
+ // decimal<'u> * decimal<'v> -> decimal<'u 'v>
+ // decimal<'u> * decimal -> decimal<'u>
+ // float32<'u> * float32<'v> -> float32<'u 'v>
+ // int * int -> int
+ // int64 * int64 -> int64
+ //
+ // The rule is triggered by these sorts of inputs when permitWeakResolution=false
+ // float * float
+ // float * float32 // will give error
+ // decimal * decimal
+ // decimal * decimal <-- Note this one triggers even though "decimal" has some possibly-relevant methods
+ // float * Matrix // the rule doesn't trigger for this one since Matrix has overloads we can use and we prefer those instead
+ // float * Matrix // the rule doesn't trigger for this one since Matrix has overloads we can use and we prefer those instead
+ //
+ // The rule is triggered by these sorts of inputs when permitWeakResolution=true
+ // float * 'a
+ // 'a * float
+ // decimal<'u> * 'a
+ (let checkRuleAppliesInPreferenceToMethods argTy1 argTy2 =
+ // Check that at least one of the argument types is numeric
+ IsNumericOrIntegralEnumType g argTy1 &&
+ // Check the other type is nominal, unless using weak resolution
+ IsBinaryOpOtherArgType g permitWeakResolution argTy2 &&
+ // This next condition checks that either
+ // - Neither type contributes any methods OR
+ // - We have the special case "decimal<_> * decimal". In this case we have some
+ // possibly-relevant methods from "decimal" but we ignore them in this case.
+ (isNil minfos || (Option.isSome (getMeasureOfType g argTy1) && isDecimalTy g argTy2)) in
+
+ checkRuleAppliesInPreferenceToMethods argTy1 argTy2 ||
+ checkRuleAppliesInPreferenceToMethods argTy2 argTy1) ->
+
+ match getMeasureOfType g argTy1 with
+ | Some (tcref, ms1) ->
+ let ms2 = freshMeasure ()
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 (mkWoNullAppTy tcref [TType_measure ms2])
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkWoNullAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))])
+ return TTraitBuiltIn
- | _ ->
- // OK, this is not solved by a built-in constraint.
- // Now look for real solutions
-
- // First look for a solution by a record property
- let recdPropSearch =
- let isGetProp = nm.StartsWithOrdinal("get_")
- let isSetProp = nm.StartsWithOrdinal("set_")
- if not isRigid && ((argTys.IsEmpty && isGetProp) || isSetProp) then
- let propName = nm[4..]
- let props =
- supportTys |> List.choose (fun ty ->
- match TryFindIntrinsicNamedItemOfType csenv.InfoReader (propName, AccessibleFromEverywhere, false) FindMemberFlag.IgnoreOverrides m ty with
- | Some (RecdFieldItem rfinfo)
- when (isGetProp || rfinfo.RecdField.IsMutable) &&
- (rfinfo.IsStatic = not memFlags.IsInstance) &&
- IsRecdFieldAccessible amap m AccessibleFromEverywhere rfinfo.RecdFieldRef &&
- not rfinfo.LiteralValue.IsSome &&
- not rfinfo.RecdField.IsCompilerGenerated ->
- Some (rfinfo, isSetProp)
- | _ -> None)
- match props with
- | [ prop ] -> Some prop
- | _ -> None
- else
- None
-
- let anonRecdPropSearch =
- let isGetProp = nm.StartsWith "get_"
- if not isRigid && isGetProp && memFlags.IsInstance then
- let propName = nm[4..]
- let props =
- supportTys |> List.choose (fun ty ->
- match NameResolution.TryFindAnonRecdFieldOfType g ty propName with
- | Some (NameResolution.Item.AnonRecdField(anonInfo, tinst, i, _)) -> Some (anonInfo, tinst, i)
- | _ -> None)
- match props with
- | [ prop ] -> Some prop
- | _ -> None
- else
- None
-
- // Now check if there are no feasible solutions at all
- match minfos, recdPropSearch, anonRecdPropSearch with
- | [], None, None when MemberConstraintIsReadyForStrongResolution csenv traitInfo ->
- if supportTys |> List.exists (isFunTy g) then
- return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenFunction(ConvertValLogicalNameToDisplayNameCore nm), m, m2))
- elif supportTys |> List.exists (isAnyTupleTy g) then
- return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenTuple(ConvertValLogicalNameToDisplayNameCore nm), m, m2))
- else
- match nm, argTys with
- | "op_Explicit", [argTy] ->
- let argTyString = NicePrint.prettyStringOfTy denv argTy
- let rtyString = NicePrint.prettyStringOfTy denv retTy
- return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion(argTyString, rtyString), m, m2))
- | _ ->
- let tyString =
- match supportTys with
- | [ty] -> NicePrint.minimalStringOfType denv ty
- | _ -> supportTys |> List.map (NicePrint.minimalStringOfType denv) |> String.concat ", "
- let opName = ConvertValLogicalNameToDisplayNameCore nm
- let err =
- match opName with
- | "?>=" | "?>" | "?<=" | "?<" | "?=" | "?<>"
- | ">=?" | ">?" | "<=?" | "" | "=?" | "<>?"
- | "?>=?" | "?>?" | "?<=?" | "?" | "?=?" | "?<>?" ->
- if List.isSingleton supportTys then FSComp.SR.csTypeDoesNotSupportOperatorNullable(tyString, opName)
- else FSComp.SR.csTypesDoNotSupportOperatorNullable(tyString, opName)
- | _ ->
- if List.isSingleton supportTys then FSComp.SR.csTypeDoesNotSupportOperator(tyString, opName)
- else FSComp.SR.csTypesDoNotSupportOperator(tyString, opName)
- return! ErrorD(ConstraintSolverError(err, m, m2))
+ | _ ->
- | _ ->
- let dummyExpr = mkUnit g m
- let calledMethGroup =
- minfos
- // curried members may not be used to satisfy constraints
- |> List.choose (fun (staticTy, minfo) ->
- if minfo.IsCurried then None else
- let callerArgs =
- { Unnamed = [ (argTys |> List.map (fun argTy -> CallerArg(argTy, m, false, dummyExpr))) ]
- Named = [ [ ] ] }
- let minst = FreshenMethInfo m minfo
- let objtys = minfo.GetObjArgTypes(amap, m, minst)
- Some(CalledMeth(csenv.InfoReader, None, false, FreshenMethInfo, m, AccessibleFromEverywhere, minfo, minst, minst, None, objtys, callerArgs, false, false, None, Some staticTy)))
-
- let methOverloadResult, errors =
- trace.CollectThenUndoOrCommit
- (fun (a, _) -> Option.isSome a)
- (fun trace -> ResolveOverloading csenv (WithTrace trace) nm ndeep (Some traitInfo) CallerArgs.Empty AccessibleFromEverywhere calledMethGroup false (Some (MustEqual retTy)))
-
- match anonRecdPropSearch, recdPropSearch, methOverloadResult with
- | Some (anonInfo, tinst, i), None, None ->
- // OK, the constraint is solved by a record property. Assert that the return types match.
- let rty2 = List.item i tinst
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy rty2
- return TTraitSolvedAnonRecdProp(anonInfo, tinst, i)
-
- | None, Some (rfinfo, isSetProp), None ->
- // OK, the constraint is solved by a record property. Assert that the return types match.
- let rty2 = if isSetProp then g.unit_ty else rfinfo.FieldType
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy rty2
- return TTraitSolvedRecdProp(rfinfo, isSetProp)
-
- | None, None, Some (calledMeth: CalledMeth<_>) ->
- // OK, the constraint is solved.
- let minfo = calledMeth.Method
-
- do! errors
- let isInstance = minfo.IsInstance
- if isInstance <> memFlags.IsInstance then
- return!
- if isInstance then
- ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsNotStatic((NicePrint.minimalStringOfType denv minfo.ApparentEnclosingType), (ConvertValLogicalNameToDisplayNameCore nm), nm), m, m2 ))
- else
- ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsStatic((NicePrint.minimalStringOfType denv minfo.ApparentEnclosingType), (ConvertValLogicalNameToDisplayNameCore nm), nm), m, m2 ))
- else
- do! CheckMethInfoAttributes g m None minfo
- return TTraitSolved (minfo, calledMeth.CalledTyArgs, calledMeth.OptionalStaticType)
-
- | _ ->
- do! AddUnsolvedMemberConstraint csenv ndeep m2 trace permitWeakResolution ignoreUnresolvedOverload traitInfo errors
- return TTraitUnsolved
- }
- return! RecordMemberConstraintSolution csenv.SolverState m trace traitInfo res
- }
+ match getMeasureOfType g argTy2 with
+ | Some (tcref, ms2) ->
+ let ms1 = freshMeasure ()
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy1 (mkWoNullAppTy tcref [TType_measure ms1])
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkWoNullAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))])
+ return TTraitBuiltIn
+
+ | _ ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ return TTraitBuiltIn
+
+ | _, _, false, ("op_Addition" | "op_Subtraction" | "op_Modulus"), [argTy1;argTy2]
+ when // Ignore any explicit +/- overloads from any basic integral types
+ (minfos |> List.forall (fun (_, minfo) -> isIntegerTy g minfo.ApparentEnclosingType ) &&
+ ( IsAddSubModType nm g argTy1 && IsBinaryOpOtherArgType g permitWeakResolution argTy2
+ || IsAddSubModType nm g argTy2 && IsBinaryOpOtherArgType g permitWeakResolution argTy1)) ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ return TTraitBuiltIn
+
+ | _, _, false, ("op_LessThan" | "op_LessThanOrEqual" | "op_GreaterThan" | "op_GreaterThanOrEqual" | "op_Equality" | "op_Inequality" ), [argTy1;argTy2]
+ when // Ignore any explicit overloads from any basic integral types
+ (minfos |> List.forall (fun (_, minfo) -> isIntegerTy g minfo.ApparentEnclosingType ) &&
+ ( IsRelationalType g argTy1 && IsBinaryOpOtherArgType g permitWeakResolution argTy2
+ || IsRelationalType g argTy2 && IsBinaryOpOtherArgType g permitWeakResolution argTy1)) ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy g.bool_ty
+ return TTraitBuiltIn
+
+ // We pretend for uniformity that the numeric types have a static property called Zero and One
+ // As with constants, only zero is polymorphic in its units
+ | [], [ty], false, "get_Zero", []
+ when isNumericType g ty || isCharTy g ty ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ty
+ return TTraitBuiltIn
+
+ | [], [ty], false, "get_One", []
+ when isNumericType g ty || isCharTy g ty ->
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ty
+ return TTraitBuiltIn
+
+ | [], _, false, "DivideByInt", [argTy1;argTy2]
+ when isFpTy g argTy1 || isDecimalTy g argTy1 ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 g.int_ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ return TTraitBuiltIn
+
+ // We pretend for uniformity that the 'string' and 'array' types have an indexer property called 'Item'
+ | [], [ty], true, "get_Item", [argTy1]
+ when isStringTy g ty ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy1 g.int_ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy g.char_ty
+ return TTraitBuiltIn
+
+ | [], [ty], true, "get_Item", argTys
+ when isArrayTy g ty ->
+
+ if rankOfArrayTy g ty <> argTys.Length then
+ do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argTys.Length), m, m2))
+
+ for argTy in argTys do
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy g.int_ty
+
+ let ety = destArrayTy g ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ety
+ return TTraitBuiltIn
+
+ | [], [ty], true, "set_Item", argTys
+ when isArrayTy g ty ->
+
+ if rankOfArrayTy g ty <> argTys.Length - 1 then
+ do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argTys.Length - 1)), m, m2))
+ let argTys, lastTy = List.frontAndBack argTys
+
+ for argTy in argTys do
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy g.int_ty
+
+ let elemTy = destArrayTy g ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace lastTy elemTy
+ return TTraitBuiltIn
+
+ | [], _, false, ("op_BitwiseAnd" | "op_BitwiseOr" | "op_ExclusiveOr"), [argTy1;argTy2]
+ when IsBitwiseOpType g argTy1 && IsBinaryOpOtherArgType g permitWeakResolution argTy2
+ || IsBitwiseOpType g argTy2 && IsBinaryOpOtherArgType g permitWeakResolution argTy1 ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy1
+ return TTraitBuiltIn
+
+ | [], _, false, ("op_LeftShift" | "op_RightShift"), [argTy1;argTy2]
+ when IsIntegerOrIntegerEnumTy g argTy1 ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 g.int_ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy1
+ return TTraitBuiltIn
+
+ | _, _, false, "op_UnaryPlus", [argTy]
+ when IsNumericOrIntegralEnumType g argTy ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
+ return TTraitBuiltIn
+
+ | _, _, false, "op_UnaryNegation", [argTy]
+ when isSignedIntegerTy g argTy || isFpTy g argTy || isDecimalTy g argTy ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
+ return TTraitBuiltIn
+
+ | _, _, true, "get_Sign", []
+ when IsSignType g supportTys.Head ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy g.int32_ty
+ return TTraitBuiltIn
+
+ | _, _, false, ("op_LogicalNot" | "op_OnesComplement"), [argTy]
+ when IsIntegerOrIntegerEnumTy g argTy ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy
+ return TTraitBuiltIn
+
+ | _, _, false, "Abs", [argTy]
+ when isSignedIntegerTy g argTy || isFpTy g argTy || isDecimalTy g argTy ->
+
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
+ return TTraitBuiltIn
+
+ | _, _, false, "Sqrt", [argTy1]
+ when isFpTy g argTy1 ->
+ match getMeasureOfType g argTy1 with
+ | Some (tcref, _) ->
+ let ms1 = freshMeasure ()
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy1 (mkWoNullAppTy tcref [TType_measure (Measure.Prod (ms1, ms1))])
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkWoNullAppTy tcref [TType_measure ms1])
+ return TTraitBuiltIn
+ | None ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ return TTraitBuiltIn
+
+ | _, _, false, ("Sin" | "Cos" | "Tan" | "Sinh" | "Cosh" | "Tanh" | "Atan" | "Acos" | "Asin" | "Exp" | "Ceiling" | "Floor" | "Round" | "Truncate" | "Log10" | "Log" | "Sqrt"), [argTy]
+ when isFpTy g argTy ->
+
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy
+ return TTraitBuiltIn
+
+ // Conversions from non-decimal numbers / strings / chars to non-decimal numbers / chars are built-in
+ | _, _, false, "op_Explicit", [argTy]
+ when (// The input type.
+ (IsNonDecimalNumericOrIntegralEnumType g argTy || isStringTy g argTy || isCharTy g argTy) &&
+ // The output type
+ (IsNonDecimalNumericOrIntegralEnumType g retTy || isCharTy g retTy)) ->
+
+ return TTraitBuiltIn
+
+ // Conversions from (including decimal) numbers / strings / chars to decimals are built-in
+ | _, _, false, "op_Explicit", [argTy]
+ when (// The input type.
+ (IsNumericOrIntegralEnumType g argTy || isStringTy g argTy || isCharTy g argTy) &&
+ // The output type
+ (isDecimalTy g retTy)) ->
+ return TTraitBuiltIn
+
+ // Conversions from decimal numbers to native integers are built-in
+ // The rest of decimal conversions are handled via op_Explicit lookup on System.Decimal (which also looks for op_Implicit)
+ | _, _, false, "op_Explicit", [argTy]
+ when (// The input type.
+ (isDecimalTy g argTy) &&
+ // The output type
+ (isNativeIntegerTy g retTy)) ->
+ return TTraitBuiltIn
+
+ | [], _, false, "Pow", [argTy1; argTy2]
+ when isFpTy g argTy1 ->
+
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argTy1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ return TTraitBuiltIn
+
+ | _, _, false, "Atan2", [argTy1; argTy2]
+ when isFpTy g argTy1 ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argTy2 argTy1
+ match getMeasureOfType g argTy1 with
+ | None -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy argTy1
+ | Some (tcref, _) -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy (mkWoNullAppTy tcref [TType_measure Measure.One])
+ return TTraitBuiltIn
+
+ | _ ->
+ // OK, this is not solved by a built-in constraint.
+ // Now look for real solutions
+
+ // First look for a solution by a record property
+ let recdPropSearch =
+ let isGetProp = nm.StartsWithOrdinal("get_")
+ let isSetProp = nm.StartsWithOrdinal("set_")
+ if not isRigid && ((argTys.IsEmpty && isGetProp) || isSetProp) then
+ let propName = nm[4..]
+ let props =
+ supportTys |> List.choose (fun ty ->
+ match TryFindIntrinsicNamedItemOfType csenv.InfoReader (propName, AccessibleFromEverywhere, false) FindMemberFlag.IgnoreOverrides m ty with
+ | Some (RecdFieldItem rfinfo)
+ when (isGetProp || rfinfo.RecdField.IsMutable) &&
+ (rfinfo.IsStatic = not memFlags.IsInstance) &&
+ IsRecdFieldAccessible amap m AccessibleFromEverywhere rfinfo.RecdFieldRef &&
+ not rfinfo.LiteralValue.IsSome &&
+ not rfinfo.RecdField.IsCompilerGenerated ->
+ Some (rfinfo, isSetProp)
+ | _ -> None)
+ match props with
+ | [ prop ] -> Some prop
+ | _ -> None
+ else
+ None
+
+ let anonRecdPropSearch =
+ let isGetProp = nm.StartsWithOrdinal("get_")
+ if not isRigid && isGetProp && memFlags.IsInstance then
+ let propName = nm[4..]
+ let props =
+ supportTys |> List.choose (fun ty ->
+ match TryFindAnonRecdFieldOfType g ty propName with
+ | Some (Item.AnonRecdField(anonInfo, tinst, i, _)) -> Some (anonInfo, tinst, i)
+ | _ -> None)
+ match props with
+ | [ prop ] -> Some prop
+ | _ -> None
+ else
+ None
+
+ // Now check if there are no feasible solutions at all
+ match minfos, recdPropSearch, anonRecdPropSearch with
+ | [], None, None when MemberConstraintIsReadyForStrongResolution csenv traitInfo ->
+ if supportTys |> List.exists (isFunTy g) then
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenFunction(ConvertValLogicalNameToDisplayNameCore nm), m, m2))
+ elif supportTys |> List.exists (isAnyTupleTy g) then
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenTuple(ConvertValLogicalNameToDisplayNameCore nm), m, m2))
+ else
+ match nm, argTys with
+ | "op_Explicit", [argTy] ->
+ let argTyString = NicePrint.prettyStringOfTy denv argTy
+ let rtyString = NicePrint.prettyStringOfTy denv retTy
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion(argTyString, rtyString), m, m2))
+ | _ ->
+ let tyString =
+ match supportTys with
+ | [ty] -> NicePrint.minimalStringOfType denv ty
+ | _ -> supportTys |> List.map (NicePrint.minimalStringOfType denv) |> String.concat ", "
+ let opName = ConvertValLogicalNameToDisplayNameCore nm
+ let err =
+ match opName with
+ | "?>=" | "?>" | "?<=" | "?<" | "?=" | "?<>"
+ | ">=?" | ">?" | "<=?" | "" | "=?" | "<>?"
+ | "?>=?" | "?>?" | "?<=?" | "?" | "?=?" | "?<>?" ->
+ if List.isSingleton supportTys then FSComp.SR.csTypeDoesNotSupportOperatorNullable(tyString, opName)
+ else FSComp.SR.csTypesDoNotSupportOperatorNullable(tyString, opName)
+ | _ ->
+ match supportTys, source.Value with
+ | [_], Some s when s.StartsWith("Operators.") ->
+ let opSource = s[10..]
+ if opSource = nm then FSComp.SR.csTypeDoesNotSupportOperator(tyString, opName)
+ else FSComp.SR.csTypeDoesNotSupportOperator(tyString, opSource)
+ | [_], Some s ->
+ FSComp.SR.csFunctionDoesNotSupportType(s, tyString, nm)
+ | [_], _
+ -> FSComp.SR.csTypeDoesNotSupportOperator(tyString, opName)
+ | _, _
+ -> FSComp.SR.csTypesDoNotSupportOperator(tyString, opName)
+ return! ErrorD(ConstraintSolverError(err, m, m2))
+
+ | _ ->
+ let dummyExpr = mkUnit g m
+ let calledMethGroup =
+ minfos
+ // curried members may not be used to satisfy constraints
+ |> List.choose (fun (staticTy, minfo) ->
+ if minfo.IsCurried then
+ None
+ else
+ let callerArgs =
+ {
+ Unnamed = [ (argTys |> List.map (fun argTy -> CallerArg(argTy, m, false, dummyExpr))) ]
+ Named = [ [ ] ]
+ }
+ let minst = FreshenMethInfo m minfo
+ let objtys = minfo.GetObjArgTypes(amap, m, minst)
+ Some(CalledMeth(csenv.InfoReader, None, false, FreshenMethInfo, m, AccessibleFromEverywhere, minfo, minst, minst, None, objtys, callerArgs, false, false, None, Some staticTy)))
+
+ let methOverloadResult, errors =
+ trace.CollectThenUndoOrCommit
+ (fun (a, _) -> Option.isSome a)
+ (fun trace -> ResolveOverloading csenv (WithTrace trace) nm ndeep (Some traitInfo) CallerArgs.Empty AccessibleFromEverywhere calledMethGroup false (Some (MustEqual retTy)))
+
+ match anonRecdPropSearch, recdPropSearch, methOverloadResult with
+ | Some (anonInfo, tinst, i), None, None ->
+ // OK, the constraint is solved by a record property. Assert that the return types match.
+ let rty2 = List.item i tinst
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy rty2
+ return TTraitSolvedAnonRecdProp(anonInfo, tinst, i)
+
+ | None, Some (rfinfo, isSetProp), None ->
+ // OK, the constraint is solved by a record property. Assert that the return types match.
+ let rty2 = if isSetProp then g.unit_ty else rfinfo.FieldType
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy rty2
+ return TTraitSolvedRecdProp(rfinfo, isSetProp)
+
+ | None, None, Some (calledMeth: CalledMeth<_>) ->
+ // OK, the constraint is solved.
+ let minfo = calledMeth.Method
+
+ do! errors
+ let isInstance = minfo.IsInstance
+ if isInstance <> memFlags.IsInstance then
+ return!
+ if isInstance then
+ ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsNotStatic((NicePrint.minimalStringOfType denv minfo.ApparentEnclosingType), (ConvertValLogicalNameToDisplayNameCore nm), nm), m, m2 ))
+ else
+ ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsStatic((NicePrint.minimalStringOfType denv minfo.ApparentEnclosingType), (ConvertValLogicalNameToDisplayNameCore nm), nm), m, m2 ))
+ else
+ do! CheckMethInfoAttributes g m None minfo
+ return TTraitSolved (minfo, calledMeth.CalledTyArgs, calledMeth.OptionalStaticType)
+
+ | _ ->
+ do! AddUnsolvedMemberConstraint csenv ndeep m2 trace permitWeakResolution ignoreUnresolvedOverload traitInfo errors
+ return TTraitUnsolved
+ }
+ return! RecordMemberConstraintSolution csenv.SolverState m trace traitInfo res
+ }
and AddUnsolvedMemberConstraint csenv ndeep m2 trace permitWeakResolution ignoreUnresolvedOverload traitInfo errors =
trackErrors {
@@ -1891,6 +2145,8 @@ and MemberConstraintSolutionOfMethInfo css m minfo minst staticTyOpt =
| FSMeth(_, ty, vref, _) ->
FSMethSln(ty, vref, minst, staticTyOpt)
+ | MethInfoWithModifiedReturnType(mi,_) -> MemberConstraintSolutionOfMethInfo css m mi minst staticTyOpt
+
| MethInfo.DefaultStructCtor _ ->
error(InternalError("the default struct constructor was the unexpected solution to a trait constraint", m))
@@ -1909,7 +2165,7 @@ and MemberConstraintSolutionOfMethInfo css m minfo minst staticTyOpt =
match callMethInfoOpt, callExpr with
| Some methInfo, Expr.Op (TOp.ILCall (_, _, _, _, NormalValUse, _, _, ilMethRef, _, methInst, _), [], args, m)
when (args, (objArgVars@allArgVars)) ||> List.lengthsEqAndForall2 (fun a b -> match a with Expr.Val (v, _, _) -> valEq v.Deref b | _ -> false) ->
- let declaringTy = ImportProvidedType amap m (methInfo.PApply((fun x -> x.DeclaringType), m))
+ let declaringTy = ImportProvidedType amap m (methInfo.PApply((fun x -> nonNull x.DeclaringType), m))
if isILAppTy g declaringTy then
let extOpt = None // EXTENSION METHODS FROM TYPE PROVIDERS: for extension methods coming from the type providers we would have something here.
ILMethSln(declaringTy, extOpt, ilMethRef, methInst, staticTyOpt)
@@ -1928,7 +2184,6 @@ and TransactMemberConstraintSolution traitInfo (trace: OptionalTrace) sln =
/// Only consider overload resolution if canonicalizing or all the types are now nominal.
/// That is, don't perform resolution if more nominal information may influence the set of available overloads
and GetRelevantMethodsForTrait (csenv: ConstraintSolverEnv) (permitWeakResolution: PermitWeakResolution) nm traitInfo : (TType * MethInfo) list =
- let (TTrait(_, _, memFlags, _, _, _)) = traitInfo
let results =
if permitWeakResolution.Permit || MemberConstraintSupportIsReadyForDeterminingOverloads csenv traitInfo then
let m = csenv.m
@@ -1938,7 +2193,7 @@ and GetRelevantMethodsForTrait (csenv: ConstraintSolverEnv) (permitWeakResolutio
let minfos =
[ for (supportTy, nominalTy) in nominalTys do
let infos =
- match memFlags.MemberKind with
+ match traitInfo.MemberFlags.MemberKind with
| SynMemberKind.Constructor ->
GetIntrinsicConstructorInfosOfType csenv.SolverState.InfoReader m nominalTy
| _ ->
@@ -1962,8 +2217,7 @@ and GetRelevantMethodsForTrait (csenv: ConstraintSolverEnv) (permitWeakResolutio
// The trait name "op_Explicit" also covers "op_Implicit", so look for that one too.
if nm = "op_Explicit" then
- let (TTrait(supportTys, _, memFlags, argTys, retTy, soln)) = traitInfo
- let traitInfo2 = TTrait(supportTys, "op_Implicit", memFlags, argTys, retTy, soln)
+ let traitInfo2 = traitInfo.WithMemberName "op_Implicit"
results @ GetRelevantMethodsForTrait csenv permitWeakResolution "op_Implicit" traitInfo2
else
results
@@ -2020,7 +2274,7 @@ and SupportTypeOfMemberConstraintIsSolved (csenv: ConstraintSolverEnv) (traitInf
/// Get all the unsolved typars (statically resolved or not) relevant to the member constraint
and GetFreeTyparsOfMemberConstraint (csenv: ConstraintSolverEnv) traitInfo =
- let (TTrait(supportTys, _, _, argTys, retTy, _)) = traitInfo
+ let (TTrait(tys=supportTys; objAndArgTys=argTys; returnTyOpt=retTy)) = traitInfo
freeInTypesLeftToRightSkippingConstraints csenv.g (supportTys @ argTys @ Option.toList retTy)
and MemberConstraintIsReadyForWeakResolution csenv traitInfo =
@@ -2104,8 +2358,8 @@ and AddMemberConstraint (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTr
and TraitsAreRelated (csenv: ConstraintSolverEnv) retry traitInfo1 traitInfo2 =
let g = csenv.g
- let (TTrait(tys1, nm1, memFlags1, argTys1, _, _)) = traitInfo1
- let (TTrait(tys2, nm2, memFlags2, argTys2, _, _)) = traitInfo2
+ let (TTrait(tys=tys1; memberName=nm1; memberFlags=memFlags1; objAndArgTys=argTys1)) = traitInfo1
+ let (TTrait(tys=tys2; memberName=nm2; memberFlags=memFlags2; objAndArgTys=argTys2)) = traitInfo2
memFlags1.IsInstance = memFlags2.IsInstance &&
nm1 = nm2 &&
// Multiple op_Explicit and op_Implicit constraints can exist for the same type variable.
@@ -2123,75 +2377,79 @@ and TraitsAreRelated (csenv: ConstraintSolverEnv) retry traitInfo1 traitInfo2 =
// The 'retry' flag is passed when a rigid type variable is about to raise a missing constraint error
// and the lengths of the support types are not equal (i.e. one is length 1, the other is length 2).
// In this case the support types are first forced to be equal.
-and EnforceConstraintConsistency (csenv: ConstraintSolverEnv) ndeep m2 trace retry tpc1 tpc2 = trackErrors {
- let g = csenv.g
- let amap = csenv.amap
- let m = csenv.m
- match tpc1, tpc2 with
- | TyparConstraint.MayResolveMember(traitInfo1, _), TyparConstraint.MayResolveMember(traitInfo2, _)
- when TraitsAreRelated csenv retry traitInfo1 traitInfo2 ->
- let (TTrait(tys1, _, _, argTys1, rty1, _)) = traitInfo1
- let (TTrait(tys2, _, _, argTys2, rty2, _)) = traitInfo2
- if retry then
- match tys1, tys2 with
- | [ty1], [ty2] -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1 ty2
- | [ty1], _ -> do! IterateD (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1) tys2
- | _, [ty2] -> do! IterateD (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty2) tys1
- | _ -> ()
- do! Iterate2D (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace) argTys1 argTys2
- let rty1 = GetFSharpViewOfReturnType g rty1
- let rty2 = GetFSharpViewOfReturnType g rty2
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty1 rty2
-
- | TyparConstraint.CoercesTo(ty1, _), TyparConstraint.CoercesTo(ty2, _) ->
- // Record at most one subtype constraint for each head type.
- // That is, we forbid constraints by both I and I.
- // This works because the types on the r.h.s. of subtype
- // constraints are head-types and so any further inferences are equational.
- let collect ty =
- let mutable res = []
- IterateEntireHierarchyOfType (fun x -> res <- x :: res) g amap m AllowMultiIntfInstantiations.No ty
- List.rev res
- let parents1 = collect ty1
- let parents2 = collect ty2
- for ty1Parent in parents1 do
- for ty2Parent in parents2 do
- if HaveSameHeadType g ty1Parent ty2Parent then
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1Parent ty2Parent
-
- | TyparConstraint.IsEnum (unerlyingTy1, _),
- TyparConstraint.IsEnum (unerlyingTy2, m2) ->
- return! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace unerlyingTy1 unerlyingTy2
-
- | TyparConstraint.IsDelegate (argsTy1, retTy1, _),
- TyparConstraint.IsDelegate (argsTy2, retTy2, m2) ->
- do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argsTy1 argsTy2
- return! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy1 retTy2
-
- | TyparConstraint.SupportsComparison _, TyparConstraint.IsDelegate _
- | TyparConstraint.IsDelegate _, TyparConstraint.SupportsComparison _
- | TyparConstraint.IsNonNullableStruct _, TyparConstraint.IsReferenceType _
- | TyparConstraint.IsReferenceType _, TyparConstraint.IsNonNullableStruct _ ->
- return! ErrorD (Error(FSComp.SR.csStructConstraintInconsistent(), m))
-
- | TyparConstraint.IsUnmanaged _, TyparConstraint.IsReferenceType _
- | TyparConstraint.IsReferenceType _, TyparConstraint.IsUnmanaged _ ->
- return! ErrorD (Error(FSComp.SR.csUnmanagedConstraintInconsistent(), m))
-
- | TyparConstraint.SupportsComparison _, TyparConstraint.SupportsComparison _
- | TyparConstraint.SupportsEquality _, TyparConstraint.SupportsEquality _
- | TyparConstraint.SupportsNull _, TyparConstraint.SupportsNull _
- | TyparConstraint.IsNonNullableStruct _, TyparConstraint.IsNonNullableStruct _
- | TyparConstraint.IsUnmanaged _, TyparConstraint.IsUnmanaged _
- | TyparConstraint.IsReferenceType _, TyparConstraint.IsReferenceType _
- | TyparConstraint.RequiresDefaultConstructor _, TyparConstraint.RequiresDefaultConstructor _
- | TyparConstraint.SimpleChoice _, TyparConstraint.SimpleChoice _ ->
- ()
-
- | _ -> ()
- }
+and EnforceConstraintConsistency (csenv: ConstraintSolverEnv) ndeep m2 trace retry tpc1 tpc2 =
+ trackErrors {
+ let g = csenv.g
+ let amap = csenv.amap
+ let m = csenv.m
+ match tpc1, tpc2 with
+ | TyparConstraint.MayResolveMember(traitInfo1, _), TyparConstraint.MayResolveMember(traitInfo2, _)
+ when TraitsAreRelated csenv retry traitInfo1 traitInfo2 ->
+ let (TTrait(tys=tys1; objAndArgTys=argTys1; returnTyOpt=rty1)) = traitInfo1
+ let (TTrait(tys=tys2; objAndArgTys=argTys2; returnTyOpt=rty2)) = traitInfo2
+ if retry then
+ match tys1, tys2 with
+ | [ty1], [ty2] -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1 ty2
+ | [ty1], _ -> do! IterateD (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1) tys2
+ | _, [ty2] -> do! IterateD (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty2) tys1
+ | _ -> ()
+ do! Iterate2D (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace) argTys1 argTys2
+ let rty1 = GetFSharpViewOfReturnType g rty1
+ let rty2 = GetFSharpViewOfReturnType g rty2
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty1 rty2
+
+ | TyparConstraint.CoercesTo(ty1, _), TyparConstraint.CoercesTo(ty2, _) ->
+ // Record at most one subtype constraint for each head type.
+ // That is, we forbid constraints by both I and I.
+ // This works because the types on the r.h.s. of subtype
+ // constraints are head-types and so any further inferences are equational.
+ let collect ty =
+ let mutable res = []
+ IterateEntireHierarchyOfType (fun x -> res <- x :: res) g amap m AllowMultiIntfInstantiations.No ty
+ List.rev res
+ let parents1 = collect ty1
+ let parents2 = collect ty2
+ for ty1Parent in parents1 do
+ for ty2Parent in parents2 do
+ if HaveSameHeadType g ty1Parent ty2Parent then
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1Parent ty2Parent
+
+ | TyparConstraint.IsEnum (underlyingTy1, _), TyparConstraint.IsEnum (underlyingTy2, m2) ->
+ return! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace underlyingTy1 underlyingTy2
+
+ | TyparConstraint.IsDelegate (argsTy1, retTy1, _), TyparConstraint.IsDelegate (argsTy2, retTy2, m2) ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argsTy1 argsTy2
+ return! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy1 retTy2
+
+ | TyparConstraint.SupportsComparison _, TyparConstraint.IsDelegate _
+ | TyparConstraint.IsDelegate _, TyparConstraint.SupportsComparison _
+ | TyparConstraint.IsNonNullableStruct _, TyparConstraint.IsReferenceType _
+ | TyparConstraint.IsReferenceType _, TyparConstraint.IsNonNullableStruct _ ->
+ return! ErrorD (Error(FSComp.SR.csStructConstraintInconsistent(), m))
+
+ | TyparConstraint.SupportsNull _, TyparConstraint.NotSupportsNull _
+ | TyparConstraint.NotSupportsNull _, TyparConstraint.SupportsNull _ ->
+ return! ErrorD (Error(FSComp.SR.csNullNotNullConstraintInconsistent(), m))
+
+ | TyparConstraint.IsUnmanaged _, TyparConstraint.IsReferenceType _
+ | TyparConstraint.IsReferenceType _, TyparConstraint.IsUnmanaged _ ->
+ return! ErrorD (Error(FSComp.SR.csUnmanagedConstraintInconsistent(), m))
+
+ | TyparConstraint.SupportsComparison _, TyparConstraint.SupportsComparison _
+ | TyparConstraint.SupportsEquality _, TyparConstraint.SupportsEquality _
+ | TyparConstraint.SupportsNull _, TyparConstraint.SupportsNull _
+ | TyparConstraint.NotSupportsNull _, TyparConstraint.NotSupportsNull _
+ | TyparConstraint.IsNonNullableStruct _, TyparConstraint.IsNonNullableStruct _
+ | TyparConstraint.IsUnmanaged _, TyparConstraint.IsUnmanaged _
+ | TyparConstraint.IsReferenceType _, TyparConstraint.IsReferenceType _
+ | TyparConstraint.RequiresDefaultConstructor _, TyparConstraint.RequiresDefaultConstructor _
+ | TyparConstraint.SimpleChoice _, TyparConstraint.SimpleChoice _ ->
+ ()
+
+ | _ -> ()
+ }
-// See when one constraint implies implies another.
+// See when one constraint implies another.
// 'a :> ty1 implies 'a :> 'ty2 if the head type name of ty2 (say T2) occursCheck anywhere in the hierarchy of ty1
// If it does occur, e.g. at instantiation T2, then the check above will have enforced that
// T2 = ty2
@@ -2217,8 +2475,10 @@ and CheckConstraintImplication (csenv: ConstraintSolverEnv) tpc1 tpc2 =
// comparison implies equality
| TyparConstraint.SupportsComparison _, TyparConstraint.SupportsEquality _
| TyparConstraint.SupportsNull _, TyparConstraint.SupportsNull _
+ | TyparConstraint.NotSupportsNull _, TyparConstraint.NotSupportsNull _
| TyparConstraint.IsNonNullableStruct _, TyparConstraint.IsNonNullableStruct _
| TyparConstraint.IsUnmanaged _, TyparConstraint.IsUnmanaged _
+ | TyparConstraint.AllowsRefStruct _, TyparConstraint.AllowsRefStruct _
| TyparConstraint.IsReferenceType _, TyparConstraint.IsReferenceType _
| TyparConstraint.RequiresDefaultConstructor _, TyparConstraint.RequiresDefaultConstructor _ -> true
| TyparConstraint.SimpleChoice (tys1, _), TyparConstraint.SimpleChoice (tys2, _) -> ListSet.isSubsetOf (typeEquiv g) tys1 tys2
@@ -2307,20 +2567,163 @@ and AddConstraint (csenv: ConstraintSolverEnv) ndeep m2 trace tp newConstraint
()
}
-and SolveTypeUseSupportsNull (csenv: ConstraintSolverEnv) ndeep m2 trace ty =
- let g = csenv.g
- let m = csenv.m
- let denv = csenv.DisplayEnv
- match tryDestTyparTy g ty with
- | ValueSome destTypar ->
- AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.SupportsNull m)
- | ValueNone ->
- if TypeSatisfiesNullConstraint g m ty then CompleteD else
- match ty with
- | NullableTy g _ ->
- ErrorD (ConstraintSolverError(FSComp.SR.csNullableTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
- | _ ->
- ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
+// preferConstraint: if the type is a type variable with an uncertain nullness, then
+// this indicates whether we prefer to add a nullness constraint to the type variable itself,
+// or whether we prefer to solve the nullness annotation.
+//
+// This is relevant for code like this:
+//
+// let isNull (value : 'T when 'T : null) =
+// match box value with
+// | null -> true
+// | _ -> false
+//
+// let checkNonNull argName arg =
+// if isNull arg then
+// failwith (argName + " is null")
+//
+// Here the `'T: null` constraint is propagated by inference to checkNonNull. Which of these two types do we expect?
+//
+// val checkNonNull1: argName: string -> arg: 'T -> unit when 'T: null
+//
+// val checkNonNull2: argName: string -> arg: 'T | null -> unit
+//
+// When null checking is fully enabled, we prefer the latter. We can't always prefer it because it is a breaking change.
+//
+// Likewise consider
+//
+// let x = null
+//
+// What's the generalized type?
+// val x: 'a when 'a: null
+// val x: 'a | null when 'a: not null
+//
+// When null checking is fully enabled, we prefer the latter. We can't always prefer it because it is a breaking change.
+and SolveTypeUseSupportsNull (csenv: ConstraintSolverEnv) ndeep m2 trace ty =
+ trackErrors {
+ let g = csenv.g
+ let m = csenv.m
+ let denv = csenv.DisplayEnv
+ if g.langFeatureNullness then
+ if TypeNullIsExtraValueNew g m ty then
+ ()
+ elif isNullableTy g ty then
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csNullableTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
+ else
+ match tryDestTyparTy g ty with
+ | ValueSome tp ->
+ let nullness = nullnessOfTy g ty
+ match nullness.TryEvaluate() with
+ // NULLNESS TODO: This rule means turning on checkNullness changes type inference results for the cases
+ // mentioned in the comment above. THat's OK but needs to be documented in the RFC.
+ | ValueNone when not g.checkNullness ->
+ return! AddConstraint csenv ndeep m2 trace tp (TyparConstraint.SupportsNull m)
+ | ValueSome NullnessInfo.WithoutNull ->
+ return! AddConstraint csenv ndeep m2 trace tp (TyparConstraint.SupportsNull m)
+ | _ ->
+ if tp.Constraints |> List.exists (function | TyparConstraint.IsReferenceType _ -> true | _ -> false) |> not then
+ do! AddConstraint csenv ndeep m2 trace tp (TyparConstraint.IsReferenceType m)
+ return! SolveNullnessSupportsNull csenv ndeep m2 trace ty nullness
+ | _ ->
+ let nullness = nullnessOfTy g ty
+ do! SolveNullnessSupportsNull csenv ndeep m2 trace ty nullness
+
+ // If checkNullness is off give the same errors as F# 4.5
+ if not g.checkNullness && not (TypeNullIsExtraValue g m ty) then
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
+ else
+ if TypeNullIsExtraValue g m ty then
+ ()
+ elif isNullableTy g ty then
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csNullableTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
+ else
+ match tryDestTyparTy g ty with
+ | ValueSome tp ->
+ do! AddConstraint csenv ndeep m2 trace tp (TyparConstraint.SupportsNull m)
+ | ValueNone ->
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
+ }
+
+and SolveNullnessSupportsNull (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) ty nullness =
+ trackErrors {
+ let g = csenv.g
+ let m = csenv.m
+ let denv = csenv.DisplayEnv
+ match nullness with
+ | Nullness.Variable nv ->
+ if nv.IsSolved then
+ do! SolveNullnessSupportsNull csenv ndeep m2 trace ty nv.Solution
+ else
+ trace.Exec (fun () -> nv.Set KnownWithNull) (fun () -> nv.Unset())
+ | Nullness.Known n1 ->
+ match n1 with
+ | NullnessInfo.AmbivalentToNull -> ()
+ | NullnessInfo.WithNull -> ()
+ | NullnessInfo.WithoutNull ->
+ if g.checkNullness then
+ // If a type would allow null in older rules of F#, we can just emit a warning.
+ // In the opposite case, we keep this as an error to avoid generating incorrect code (e.g. assigning null to an int)
+ if (TypeNullIsExtraValue g m ty) then
+ return! WarnD(ConstraintSolverNullnessWarningWithType(denv, ty, n1, m, m2))
+ else
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty), m, m2))
+ }
+
+and SolveTypeUseNotSupportsNull (csenv: ConstraintSolverEnv) ndeep m2 trace ty =
+ trackErrors {
+ let g = csenv.g
+ let m = csenv.m
+ let denv = csenv.DisplayEnv
+
+ if TypeNullIsTrueValue g ty then
+ // We can only give warnings here as F# 5.0 introduces these constraints into existing
+ // code via Option.ofObj and Option.toObj
+ do! WarnD (ConstraintSolverNullnessWarning(FSComp.SR.csTypeHasNullAsTrueValue(NicePrint.minimalStringOfType denv ty), m, m2))
+ elif TypeNullIsExtraValueNew g m ty then
+ if g.checkNullness then
+ do! WarnD (ConstraintSolverNullnessWarning(FSComp.SR.csTypeHasNullAsExtraValue(NicePrint.minimalStringOfTypeWithNullness denv ty), m, m2))
+ else
+ match tryDestTyparTy g ty with
+ | ValueSome tp ->
+ do! AddConstraint csenv ndeep m2 trace tp (TyparConstraint.NotSupportsNull m)
+ | ValueNone ->
+ let nullness = nullnessOfTy g ty
+ do! SolveNullnessNotSupportsNull csenv ndeep m2 trace ty nullness
+ }
+
+and SolveNullnessNotSupportsNull (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) ty nullness =
+ trackErrors {
+ let g = csenv.g
+ let m = csenv.m
+ let denv = csenv.DisplayEnv
+ match nullness with
+ | Nullness.Variable nv ->
+ if nv.IsSolved then
+ do! SolveNullnessNotSupportsNull csenv ndeep m2 trace ty nv.Solution
+ else
+ trace.Exec (fun () -> nv.Set KnownWithoutNull) (fun () -> nv.Unset())
+ | Nullness.Known n1 ->
+ match n1 with
+ | NullnessInfo.AmbivalentToNull -> ()
+ | NullnessInfo.WithoutNull -> ()
+ | NullnessInfo.WithNull ->
+ if g.checkNullness && TypeNullIsExtraValueNew g m ty then
+ return! WarnD(ConstraintSolverNullnessWarning(FSComp.SR.csTypeHasNullAsExtraValue(NicePrint.minimalStringOfTypeWithNullness denv ty), m, m2))
+ }
+
+and SolveTypeCanCarryNullness (csenv: ConstraintSolverEnv) ty nullness =
+ trackErrors {
+ let g = csenv.g
+ let m = csenv.m
+ let strippedTy = stripTyEqnsA g true ty
+ match tryAddNullnessToTy nullness strippedTy with
+ | Some _ ->
+ if isTyparTy g strippedTy && not (isReferenceTyparTy g strippedTy) then
+ return! AddConstraint csenv 0 m NoTrace (destTyparTy g strippedTy) (TyparConstraint.IsReferenceType m)
+ | None ->
+ let tyString = NicePrint.minimalStringOfType csenv.DisplayEnv strippedTy
+ return! ErrorD(Error(FSComp.SR.tcTypeDoesNotHaveAnyNull(tyString), m))
+ }
and SolveTypeSupportsComparison (csenv: ConstraintSolverEnv) ndeep m2 trace ty =
let g = csenv.g
@@ -2337,8 +2740,8 @@ and SolveTypeSupportsComparison (csenv: ConstraintSolverEnv) ndeep m2 trace ty =
ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportComparison1(NicePrint.minimalStringOfType denv ty), m, m2))
| _ ->
match ty with
- | SpecialComparableHeadType g tinst ->
- tinst |> IterateD (SolveTypeSupportsComparison (csenv: ConstraintSolverEnv) ndeep m2 trace)
+ | SpecialComparableHeadType g tinst ->
+ IterateD (SolveTypeSupportsComparison (csenv: ConstraintSolverEnv) ndeep m2 trace) tinst
| _ ->
// Check the basic requirement - IComparable or IStructuralComparable or assumed
if ExistsSameHeadTypeInHierarchy g amap m2 ty g.mk_IComparable_ty ||
@@ -2518,7 +2921,7 @@ and SolveTypeRequiresDefaultConstructor (csenv: ConstraintSolverEnv) ndeep m2 tr
| ValueSome tp ->
AddConstraint csenv ndeep m2 trace tp (TyparConstraint.RequiresDefaultConstructor m)
| _ ->
- if isStructTy g ty then
+ if isStructTy g ty && (isStructTupleTy g ty || isStructAnonRecdTy g ty || TypeHasDefaultValue g m ty) then
if isStructTupleTy g ty then
destStructTupleTy g ty |> IterateD (SolveTypeRequiresDefaultValue csenv ndeep m trace)
elif isStructAnonRecdTy g ty then
@@ -2620,7 +3023,13 @@ and CanMemberSigsMatchUpToCheck
else
ErrorD(Error (FSComp.SR.csMemberIsNotInstance(minfo.LogicalName), m))
else
- MapCombineTDC2D subsumeTypes calledObjArgTys callerObjArgTys
+ // The object types must be non-null
+ let nonNullCalledObjArgTys =
+ if not calledMeth.Method.IsExtensionMember then
+ calledObjArgTys |> List.map (replaceNullnessOfTy g.knownWithoutNull)
+ else
+ calledObjArgTys
+ MapCombineTDC2D subsumeTypes nonNullCalledObjArgTys callerObjArgTys
let! usesTDC3 =
calledMeth.ArgSets |> MapCombineTDCD (fun argSet ->
@@ -2745,25 +3154,27 @@ and ArgsMustSubsumeOrConvert
isConstraint
enforceNullableOptionalsKnownTypes // use known types from nullable optional args?
(calledArg: CalledArg)
- (callerArg: CallerArg<'T>) = trackErrors {
+ (callerArg: CallerArg<'T>) =
+ trackErrors {
+ let g = csenv.g
+ let m = callerArg.Range
+ let calledArgTy, usesTDC, eqn = AdjustCalledArgType csenv.InfoReader ad isConstraint enforceNullableOptionalsKnownTypes calledArg callerArg
+
+ match eqn with
+ | Some (ty1, ty2, msg) ->
+ do! SolveTypeEqualsTypeWithReport csenv ndeep m trace cxsln ty1 ty2
+ msg csenv.DisplayEnv
+ | None -> ()
- let g = csenv.g
- let m = callerArg.Range
- let calledArgTy, usesTDC, eqn = AdjustCalledArgType csenv.InfoReader ad isConstraint enforceNullableOptionalsKnownTypes calledArg callerArg
- match eqn with
- | Some (ty1, ty2, msg) ->
- do! SolveTypeEqualsTypeWithReport csenv ndeep m trace cxsln ty1 ty2
- msg csenv.DisplayEnv
- | None -> ()
- match usesTDC with
- | TypeDirectedConversionUsed.Yes(warn, _, _) -> do! WarnD(warn csenv.DisplayEnv)
- | TypeDirectedConversionUsed.No -> ()
- do! SolveTypeSubsumesTypeWithReport csenv ndeep m trace cxsln (Some calledArg.CalledArgumentType) calledArgTy callerArg.CallerArgumentType
- if calledArg.IsParamArray && isArray1DTy g calledArgTy && not (isArray1DTy g callerArg.CallerArgumentType) then
- return! ErrorD(Error(FSComp.SR.csMethodExpectsParams(), m))
- else
- return usesTDC
- }
+ match usesTDC with
+ | TypeDirectedConversionUsed.Yes(warn, _, _) -> do! WarnD(warn csenv.DisplayEnv)
+ | TypeDirectedConversionUsed.No -> ()
+ do! SolveTypeSubsumesTypeWithReport csenv ndeep m trace cxsln (Some calledArg.CalledArgumentType) calledArgTy callerArg.CallerArgumentType
+ if calledArg.IsParamArray && isArray1DTy g calledArgTy && not (isArray1DTy g callerArg.CallerArgumentType) then
+ return! ErrorD(Error(FSComp.SR.csMethodExpectsParams(), m))
+ else
+ return usesTDC
+ }
// This is a slight variation on ArgsMustSubsumeOrConvert that adds contextual error report to the
// subsumption check. The two could likely be combines.
@@ -2967,22 +3378,11 @@ and ReportNoCandidatesErrorSynExpr csenv callerArgCounts methodName ad calledMet
///
/// In F# 5.0 and 6.0 we assert this late by passing the cxsln parameter around. However this
/// relies on not checking return types for SRTP constraints eagerly
-///
-/// Post F# 6.0 (TraitConstraintCorrections) we will assert this early and add a proper check that return types match for SRTP constraint solving
-/// (see alwaysCheckReturn)
-and AssumeMethodSolvesTrait (csenv: ConstraintSolverEnv) (cx: TraitConstraintInfo option) m trace (calledMeth: CalledMeth<_>) =
+and AssumeMethodSolvesTrait (csenv: ConstraintSolverEnv) (cx: TraitConstraintInfo option) m _trace (calledMeth: CalledMeth<_>) =
match cx with
| Some traitInfo when traitInfo.Solution.IsNone ->
let staticTyOpt = if calledMeth.Method.IsInstance then None else calledMeth.OptionalStaticType
let traitSln = MemberConstraintSolutionOfMethInfo csenv.SolverState m calledMeth.Method calledMeth.CalledTyArgs staticTyOpt
-#if TRAIT_CONSTRAINT_CORRECTIONS
- if csenv.g.langVersion.SupportsFeature LanguageFeature.TraitConstraintCorrections then
- TransactMemberConstraintSolution traitInfo trace traitSln
- None
- else
-#else
- ignore trace
-#endif
Some (traitInfo, traitSln)
| _ ->
None
@@ -3014,10 +3414,23 @@ and ResolveOverloading
let candidates = calledMethGroup |> List.filter (fun cmeth -> cmeth.IsCandidate(m, ad))
let calledMethOpt, errors, calledMethTrace =
-
match calledMethGroup, candidates with
- | _, [calledMeth] when not isOpConversion ->
- Some calledMeth, CompleteD, NoTrace
+ | _, [calledMeth] when not isOpConversion ->
+ // See what candidates we have based on static/virtual/abstract
+
+ // If false then is a static method call directly on an interface e.g.
+ // IParsable.Parse(...)
+ // IAdditionOperators.(+)
+ // This is not allowed as Parse and (+) method are static abstract
+ let isStaticConstrainedCall =
+ match calledMeth.OptionalStaticType with
+ | Some ttype -> isTyparTy g ttype
+ | None -> false
+
+ match calledMeth.Method with
+ | ILMeth(ilMethInfo= ilMethInfo) when not isStaticConstrainedCall && ilMethInfo.IsStatic && ilMethInfo.IsAbstract ->
+ None, ErrorD (Error (FSComp.SR.chkStaticAbstractInterfaceMembers(ilMethInfo.ILName), m)), NoTrace
+ | _ -> Some calledMeth, CompleteD, NoTrace
| [], _ when not isOpConversion ->
None, ErrorD (Error (FSComp.SR.csMethodNotFound(methodName), m)), NoTrace
@@ -3030,13 +3443,9 @@ and ResolveOverloading
// Always take the return type into account for
// -- op_Explicit, op_Implicit
// -- candidate method sets that potentially use tupling of unfilled out args
- /// -- if TraitConstraintCorrections is enabled, also check return types for SRTP constraints
let alwaysCheckReturn =
isOpConversion ||
candidates |> List.exists (fun cmeth -> cmeth.HasOutArgs)
-#if TRAIT_CONSTRAINT_CORRECTIONS
- || (csenv.g.langVersion.SupportsFeature LanguageFeature.TraitConstraintCorrections && cx.IsSome)
-#endif
// Exact match rule.
//
@@ -3326,7 +3735,7 @@ and GetMostApplicableOverload csenv ndeep candidates applicableMeths calledMethG
// F# 5.0 rule - prior to F# 5.0 named arguments (on the caller side) were not being taken
// into account when comparing overloads. So adding a name to an argument might mean
- // overloads ould no longer be distinguished. We thus look at *all* arguments (whether
+ // overloads could no longer be distinguished. We thus look at *all* arguments (whether
// optional or not) as an additional comparison technique.
let c =
if g.langVersion.SupportsFeature(LanguageFeature.NullableOptionalInterop) then
@@ -3350,7 +3759,13 @@ and GetMostApplicableOverload csenv ndeep candidates applicableMeths calledMethG
0
if c <> 0 then c else
- 0
+ // Properties are kept incl. almost-duplicates because of the partial-override possibility.
+ // E.g. base can have get,set and derived only get => we keep both props around until method resolution time.
+ // Now is the type to pick the better (more derived) one.
+ match candidate.AssociatedPropertyInfo,other.AssociatedPropertyInfo,candidate.Method.IsExtensionMember,other.Method.IsExtensionMember with
+ | Some p1, Some p2, false, false -> compareTypes p1.ApparentEnclosingType p2.ApparentEnclosingType
+ | _ -> 0
+
let bestMethods =
let indexedApplicableMeths = applicableMeths |> List.indexed
@@ -3560,6 +3975,13 @@ let AddCxMethodConstraint denv css m trace traitInfo =
(fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m)))
|> RaiseOperationResult
+let AddCxTypeDefnNotSupportsNull denv css m trace ty =
+ let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv
+ PostponeOnFailedMemberConstraintResolution csenv trace
+ (fun csenv -> SolveTypeUseNotSupportsNull csenv 0 m trace ty)
+ (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m)))
+ |> RaiseOperationResult
+
let AddCxTypeUseSupportsNull denv css m trace ty =
let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv
PostponeOnFailedMemberConstraintResolution csenv trace
@@ -3567,6 +3989,12 @@ let AddCxTypeUseSupportsNull denv css m trace ty =
(fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m)))
|> RaiseOperationResult
+let AddCxTypeCanCarryNullnessInfo denv css m ty nullness =
+ let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv
+ let canCarryNullnessCheck() = SolveTypeCanCarryNullness csenv ty nullness |> RaiseOperationResult
+ csenv.SolverState.PushPostInferenceCheck (preDefaults=false, check = canCarryNullnessCheck)
+
+
let AddCxTypeMustSupportComparison denv css m trace ty =
let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv
PostponeOnFailedMemberConstraintResolution csenv trace
@@ -3659,46 +4087,53 @@ let CreateCodegenState tcVal g amap =
ExtraCxs = HashMultiMap(10, HashIdentity.Structural)
InfoReader = InfoReader(g, amap)
PostInferenceChecksPreDefaults = ResizeArray()
- PostInferenceChecksFinal = ResizeArray() }
+ PostInferenceChecksFinal = ResizeArray()
+ WarnWhenUsingWithoutNullOnAWithNullTarget = None}
/// Determine if a codegen witness for a trait will require witness args to be available, e.g. in generic code
-let CodegenWitnessExprForTraitConstraintWillRequireWitnessArgs tcVal g amap m (traitInfo:TraitConstraintInfo) = trackErrors {
- let css = CreateCodegenState tcVal g amap
- let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
- let! _res = SolveMemberConstraint csenv true PermitWeakResolution.Yes 0 m NoTrace traitInfo
- let res =
- match traitInfo.Solution with
- | None
- | Some BuiltInSln -> true
- | _ -> false
- return res
- }
+let CodegenWitnessExprForTraitConstraintWillRequireWitnessArgs tcVal g amap m (traitInfo:TraitConstraintInfo) =
+ trackErrors {
+ let css = CreateCodegenState tcVal g amap
+ let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
+
+ let! _res = SolveMemberConstraint csenv true PermitWeakResolution.Yes 0 m NoTrace traitInfo
+
+ let res =
+ match traitInfo.Solution with
+ | None
+ | Some BuiltInSln -> true
+ | _ -> false
+ return res
+ }
/// Generate a witness expression if none is otherwise available, e.g. in legacy non-witness-passing code
-let CodegenWitnessExprForTraitConstraint tcVal g amap m (traitInfo:TraitConstraintInfo) argExprs = trackErrors {
- let css = CreateCodegenState tcVal g amap
- let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
- let! _res = SolveMemberConstraint csenv true PermitWeakResolution.Yes 0 m NoTrace traitInfo
- return GenWitnessExpr amap g m traitInfo argExprs
- }
+let CodegenWitnessExprForTraitConstraint tcVal g amap m (traitInfo:TraitConstraintInfo) argExprs =
+ trackErrors {
+ let css = CreateCodegenState tcVal g amap
+ let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
+ let! _res = SolveMemberConstraint csenv true PermitWeakResolution.Yes 0 m NoTrace traitInfo
+ return GenWitnessExpr amap g m traitInfo argExprs
+ }
/// Generate the lambda argument passed for a use of a generic construct that accepts trait witnesses
-let CodegenWitnessesForTyparInst tcVal g amap m typars tyargs = trackErrors {
- let css = CreateCodegenState tcVal g amap
- let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
- let ftps, _renaming, tinst = FreshenTypeInst g m typars
- let traitInfos = GetTraitConstraintInfosOfTypars g ftps
- do! SolveTyparsEqualTypes csenv 0 m NoTrace tinst tyargs
- return GenWitnessArgs amap g m traitInfos
- }
+let CodegenWitnessesForTyparInst tcVal g amap m typars tyargs =
+ trackErrors {
+ let css = CreateCodegenState tcVal g amap
+ let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
+ let ftps, _renaming, tinst = FreshenTypeInst g m typars
+ let traitInfos = GetTraitConstraintInfosOfTypars g ftps
+ let! _res = SolveTyparsEqualTypes csenv 0 m NoTrace tinst tyargs
+ return GenWitnessArgs amap g m traitInfos
+ }
/// Generate the lambda argument passed for a use of a generic construct that accepts trait witnesses
-let CodegenWitnessArgForTraitConstraint tcVal g amap m traitInfo = trackErrors {
- let css = CreateCodegenState tcVal g amap
- let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
- let! _res = SolveMemberConstraint csenv true PermitWeakResolution.Yes 0 m NoTrace traitInfo
- return GenWitnessExprLambda amap g m traitInfo
- }
+let CodegenWitnessArgForTraitConstraint tcVal g amap m traitInfo =
+ trackErrors {
+ let css = CreateCodegenState tcVal g amap
+ let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
+ let! _res = SolveMemberConstraint csenv true PermitWeakResolution.Yes 0 m NoTrace traitInfo
+ return GenWitnessExprLambda amap g m traitInfo
+ }
/// For some code like "let f() = ([] = [])", a free choice is made for a type parameter
/// for an interior type variable. This chooses a solution for a type parameter subject
@@ -3748,7 +4183,8 @@ let IsApplicableMethApprox g amap m (minfo: MethInfo) availObjTy =
ExtraCxs = HashMultiMap(10, HashIdentity.Structural)
InfoReader = InfoReader(g, amap)
PostInferenceChecksPreDefaults = ResizeArray()
- PostInferenceChecksFinal = ResizeArray() }
+ PostInferenceChecksFinal = ResizeArray()
+ WarnWhenUsingWithoutNullOnAWithNullTarget = None}
let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
let minst = FreshenMethInfo m minfo
match minfo.GetObjArgTypes(amap, m, minst) with
@@ -3763,4 +4199,4 @@ let IsApplicableMethApprox g amap m (minfo: MethInfo) availObjTy =
|> CommitOperationResult
| _ -> true
else
- true
+ true
\ No newline at end of file
diff --git a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi
index eb48ce3b43..4c29d684c3 100644
--- a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi
@@ -15,61 +15,6 @@ open FSharp.Compiler.Text
open FSharp.Compiler.TypedTree
open FSharp.Compiler.TypedTreeOps
-/// Create a type variable representing the use of a "_" in F# code
-val NewAnonTypar: TyparKind * range * TyparRigidity * TyparStaticReq * TyparDynamicReq -> Typar
-
-/// Create an inference type variable
-val NewInferenceType: TcGlobals -> TType
-
-/// Create an inference type variable for the kind of a byref pointer
-val NewByRefKindInferenceType: TcGlobals -> range -> TType
-
-/// Create an inference type variable representing an error condition when checking an expression
-val NewErrorType: unit -> TType
-
-/// Create an inference type variable representing an error condition when checking a measure
-val NewErrorMeasure: unit -> Measure
-
-/// Create a list of inference type variables, one for each element in the input list
-val NewInferenceTypes: TcGlobals -> 'T list -> TType list
-
-/// Given a set of formal type parameters and their constraints, make new inference type variables for
-/// each and ensure that the constraints on the new type variables are adjusted to refer to these.
-///
-/// Returns
-/// 1. the new type parameters
-/// 2. the instantiation mapping old type parameters to inference variables
-/// 3. the inference type variables as a list of types.
-val FreshenAndFixupTypars:
- g: TcGlobals ->
- m: range ->
- rigid: TyparRigidity ->
- Typars ->
- TType list ->
- Typars ->
- Typars * TyparInstantiation * TType list
-
-/// Given a set of type parameters, make new inference type variables for
-/// each and ensure that the constraints on the new type variables are adjusted.
-///
-/// Returns
-/// 1. the new type parameters
-/// 2. the instantiation mapping old type parameters to inference variables
-/// 3. the inference type variables as a list of types.
-val FreshenTypeInst: g: TcGlobals -> range -> Typars -> Typars * TyparInstantiation * TType list
-
-/// Given a set of type parameters, make new inference type variables for
-/// each and ensure that the constraints on the new type variables are adjusted.
-///
-/// Returns the inference type variables as a list of types.
-val FreshenTypars: g: TcGlobals -> range -> Typars -> TType list
-
-/// Given a method, which may be generic, make new inference type variables for
-/// its generic parameters, and ensure that the constraints the new type variables are adjusted.
-///
-/// Returns the inference type variables as a list of types.
-val FreshenMethInfo: range -> MethInfo -> TType list
-
/// Information about the context of a type equation.
[]
type ContextInfo =
@@ -174,6 +119,28 @@ exception ConstraintSolverTypesNotInSubsumptionRelation of
exception ConstraintSolverMissingConstraint of displayEnv: DisplayEnv * Typar * TyparConstraint * range * range
+exception ConstraintSolverNullnessWarningEquivWithTypes of
+ DisplayEnv *
+ TType *
+ TType *
+ NullnessInfo *
+ NullnessInfo *
+ range *
+ range
+
+exception ConstraintSolverNullnessWarningWithTypes of
+ DisplayEnv *
+ TType *
+ TType *
+ NullnessInfo *
+ NullnessInfo *
+ range *
+ range
+
+exception ConstraintSolverNullnessWarningWithType of DisplayEnv * TType * NullnessInfo * range * range
+
+exception ConstraintSolverNullnessWarning of string * range * range
+
exception ConstraintSolverError of string * range * range
exception ErrorFromApplyingDefault of
@@ -221,8 +188,32 @@ exception ArgDoesNotMatchError of
/// A function that denotes captured tcVal, Used in constraint solver and elsewhere to get appropriate expressions for a ValRef.
type TcValF = ValRef -> ValUseFlag -> TType list -> range -> Expr * TType
-[]
type ConstraintSolverState =
+ {
+ g: TcGlobals
+
+ amap: ImportMap
+
+ InfoReader: InfoReader
+
+ /// The function used to freshen values we encounter during trait constraint solving
+ TcVal: TcValF
+
+ /// This table stores all unsolved, ungeneralized trait constraints, indexed by free type variable.
+ /// That is, there will be one entry in this table for each free type variable in
+ /// each outstanding, unsolved, ungeneralized trait constraint. Constraints are removed from the table and resolved
+ /// each time a solution to an index variable is found.
+ mutable ExtraCxs: Internal.Utilities.Collections.HashMultiMap
+
+ /// Checks to run after all inference is complete, but before defaults are applied and internal unknowns solved
+ PostInferenceChecksPreDefaults: ResizeArray unit>
+
+ /// Checks to run after all inference is complete.
+ PostInferenceChecksFinal: ResizeArray unit>
+
+ WarnWhenUsingWithoutNullOnAWithNullTarget: string option
+ }
+
static member New: TcGlobals * ImportMap * InfoReader * TcValF -> ConstraintSolverState
/// Add a post-inference check to run at the end of inference
@@ -296,8 +287,12 @@ val AddCxTypeMustSubsumeTypeMatchingOnlyUndoIfFailed:
val AddCxMethodConstraint: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TraitConstraintInfo -> unit
+val AddCxTypeDefnNotSupportsNull: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit
+
val AddCxTypeUseSupportsNull: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit
+val AddCxTypeCanCarryNullnessInfo: DisplayEnv -> ConstraintSolverState -> range -> TType -> Nullness -> unit
+
val AddCxTypeMustSupportComparison: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit
val AddCxTypeMustSupportEquality: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit
diff --git a/src/fcs-fable/src/Compiler/Checking/Expressions/CheckArrayOrListComputedExpressions.fs b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckArrayOrListComputedExpressions.fs
new file mode 100644
index 0000000000..f8a2abd7d7
--- /dev/null
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckArrayOrListComputedExpressions.fs
@@ -0,0 +1,163 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+/// Sequence expressions checking
+module internal FSharp.Compiler.CheckArrayOrListComputedExpressions
+
+open FSharp.Compiler.CheckBasics
+open FSharp.Compiler.ConstraintSolver
+open FSharp.Compiler.CheckExpressionsOps
+open FSharp.Compiler.CheckExpressions
+open FSharp.Compiler.NameResolution
+open FSharp.Compiler.TypedTreeOps
+open FSharp.Compiler.Features
+open FSharp.Compiler.DiagnosticsLogger
+open FSharp.Compiler.Syntax
+open FSharp.Compiler.CheckSequenceExpressions
+
+let TcArrayOrListComputedExpression (cenv: TcFileState) env (overallTy: OverallTy) tpenv (isArray, comp) m =
+ let g = cenv.g
+
+ // The syntax '[ n .. m ]' and '[ n .. step .. m ]' is not really part of array or list syntax.
+ // It could be in the future, e.g. '[ 1; 2..30; 400 ]'
+ //
+ // The elaborated form of '[ n .. m ]' is 'List.ofSeq (seq (op_Range n m))' and this shouldn't change
+ match RewriteRangeExpr comp with
+ | Some replacementExpr ->
+ let genCollElemTy = NewInferenceType g
+
+ let genCollTy = (if isArray then mkArrayType else mkListTy) cenv.g genCollElemTy
+
+ UnifyTypes cenv env m overallTy.Commit genCollTy
+
+ let exprTy = mkSeqTy cenv.g genCollElemTy
+
+ let expr, tpenv = TcExpr cenv (MustEqual exprTy) env tpenv replacementExpr
+
+ let expr =
+ if cenv.g.compilingFSharpCore then
+ expr
+ else
+ // We add a call to 'seq ... ' to make sure sequence expression compilation gets applied to the contents of the
+ // comprehension. But don't do this in FSharp.Core.dll since 'seq' may not yet be defined.
+ mkCallSeq cenv.g m genCollElemTy expr
+
+ let expr = mkCoerceExpr (expr, exprTy, expr.Range, overallTy.Commit)
+
+ let expr =
+ if isArray then
+ mkCallSeqToArray cenv.g m genCollElemTy expr
+ else
+ mkCallSeqToList cenv.g m genCollElemTy expr
+
+ expr, tpenv
+
+ | None ->
+
+ // LanguageFeatures.ImplicitYield do not require this validation
+ let implicitYieldEnabled =
+ cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
+
+ let validateExpressionWithIfRequiresParenthesis = not implicitYieldEnabled
+ let acceptDeprecatedIfThenExpression = not implicitYieldEnabled
+
+ match comp with
+ | SimpleSemicolonSequence cenv acceptDeprecatedIfThenExpression elems ->
+ match comp with
+ | SimpleSemicolonSequence cenv false _ -> ()
+ | _ when validateExpressionWithIfRequiresParenthesis ->
+ errorR (Deprecated(FSComp.SR.tcExpressionWithIfRequiresParenthesis (), m))
+ | _ -> ()
+
+ let replacementExpr =
+ if isArray then
+ // This are to improve parsing/processing speed for parser tables by converting to an array blob ASAP
+ let nelems = elems.Length
+
+ if
+ nelems > 0
+ && List.forall
+ (function
+ | SynExpr.Const(SynConst.UInt16 _, _) -> true
+ | _ -> false)
+ elems
+ then
+ SynExpr.Const(
+ SynConst.UInt16s(
+ Array.ofList (
+ List.map
+ (function
+ | SynExpr.Const(SynConst.UInt16 x, _) -> x
+ | _ -> failwith "unreachable")
+ elems
+ )
+ ),
+ m
+ )
+ elif
+ nelems > 0
+ && List.forall
+ (function
+ | SynExpr.Const(SynConst.Byte _, _) -> true
+ | _ -> false)
+ elems
+ then
+ SynExpr.Const(
+ SynConst.Bytes(
+ Array.ofList (
+ List.map
+ (function
+ | SynExpr.Const(SynConst.Byte x, _) -> x
+ | _ -> failwith "unreachable")
+ elems
+ ),
+ SynByteStringKind.Regular,
+ m
+ ),
+ m
+ )
+ else
+ SynExpr.ArrayOrList(isArray, elems, m)
+ else if cenv.g.langVersion.SupportsFeature(LanguageFeature.ReallyLongLists) then
+ SynExpr.ArrayOrList(isArray, elems, m)
+ else
+ if elems.Length > 500 then
+ error (Error(FSComp.SR.tcListLiteralMaxSize (), m))
+
+ SynExpr.ArrayOrList(isArray, elems, m)
+
+ TcExprUndelayed cenv overallTy env tpenv replacementExpr
+ | _ ->
+
+ let genCollElemTy = NewInferenceType g
+
+ let genCollTy = (if isArray then mkArrayType else mkListTy) cenv.g genCollElemTy
+
+ // Propagating type directed conversion, e.g. for
+ // let x : seq = [ yield 1; if true then yield 2 ]
+ TcPropagatingExprLeafThenConvert cenv overallTy genCollTy env (* canAdhoc *) m (fun () ->
+
+ let exprTy = mkSeqTy cenv.g genCollElemTy
+
+ // Check the comprehension
+ let expr, tpenv = TcSequenceExpression cenv env tpenv comp (MustEqual exprTy) m
+
+ let expr = mkCoerceIfNeeded cenv.g exprTy (tyOfExpr cenv.g expr) expr
+
+ let expr =
+ if cenv.g.compilingFSharpCore then
+ //warning(Error(FSComp.SR.fslibUsingComputedListOrArray(), expr.Range))
+ expr
+ else
+ // We add a call to 'seq ... ' to make sure sequence expression compilation gets applied to the contents of the
+ // comprehension. But don't do this in FSharp.Core.dll since 'seq' may not yet be defined.
+ mkCallSeq cenv.g m genCollElemTy expr
+
+ let expr = mkCoerceExpr (expr, exprTy, expr.Range, overallTy.Commit)
+
+ let expr =
+ if isArray then
+ mkCallSeqToArray cenv.g m genCollElemTy expr
+ else
+ mkCallSeqToList cenv.g m genCollElemTy expr
+
+ expr, tpenv)
diff --git a/src/fcs-fable/src/Compiler/Checking/Expressions/CheckComputationExpressions.fs b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckComputationExpressions.fs
new file mode 100644
index 0000000000..1f70a0fcfd
--- /dev/null
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckComputationExpressions.fs
@@ -0,0 +1,3139 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+/// The typechecker. Left-to-right constrained type checking
+/// with generalization at appropriate points.
+module internal FSharp.Compiler.CheckComputationExpressions
+
+open Internal.Utilities.Library
+open FSharp.Compiler.AccessibilityLogic
+open FSharp.Compiler.AttributeChecking
+open FSharp.Compiler.CheckExpressionsOps
+open FSharp.Compiler.CheckExpressions
+open FSharp.Compiler.CheckBasics
+open FSharp.Compiler.ConstraintSolver
+open FSharp.Compiler.DiagnosticsLogger
+open FSharp.Compiler.Features
+open FSharp.Compiler.Infos
+open FSharp.Compiler.InfoReader
+open FSharp.Compiler.NameResolution
+open FSharp.Compiler.Syntax.PrettyNaming
+open FSharp.Compiler.Syntax
+open FSharp.Compiler.SyntaxTrivia
+open FSharp.Compiler.SyntaxTreeOps
+open FSharp.Compiler.Text
+open FSharp.Compiler.Text.Range
+open FSharp.Compiler.TypedTree
+open FSharp.Compiler.TypedTreeOps
+open System.Collections.Generic
+
+type cenv = TcFileState
+
+/// Used to flag if this is the first or a subsequent translation pass through a computation expression
+[]
+type CompExprTranslationPass =
+ | Initial
+ | Subsequent
+
+/// Used to flag if computation expression custom operations are allowed in a given context
+[]
+type CustomOperationsMode =
+ | Allowed
+ | Denied
+
+[]
+type ComputationExpressionContext<'a> =
+ {
+ cenv: TcFileState
+ env: TcEnv
+ tpenv: UnscopedTyparEnv
+ customOperationMethodsIndexedByKeyword:
+ IDictionary * MethInfo>>
+ customOperationMethodsIndexedByMethodName:
+ IDictionary * MethInfo>>
+ sourceMethInfo: 'a list
+ builderValName: string
+ ad: AccessorDomain
+ builderTy: TType
+ isQuery: bool
+ enableImplicitYield: bool
+ origComp: SynExpr
+ mWhole: range
+ emptyVarSpace: LazyWithContext * TcEnv, range>
+ }
+
+let inline TryFindIntrinsicOrExtensionMethInfo collectionSettings (cenv: cenv) (env: TcEnv) m ad nm ty =
+ AllMethInfosOfTypeInScope collectionSettings cenv.infoReader env.NameEnv (Some nm) ad IgnoreOverrides m ty
+
+/// Ignores an attribute
+let inline IgnoreAttribute _ = None
+
+let inline arbPat (m: range) =
+ mkSynPatVar None (mkSynId (m.MakeSynthetic()) "_missingVar")
+
+let inline arbKeySelectors m =
+ mkSynBifix m "=" (arbExpr ("_keySelectors", m)) (arbExpr ("_keySelector2", m))
+
+// Flag that a debug point should get emitted prior to both the evaluation of 'rhsExpr' and the call to Using
+let inline addBindDebugPoint spBind e =
+ match spBind with
+ | DebugPointAtBinding.Yes m -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, e)
+ | _ -> e
+
+let inline mkSynDelay2 (e: SynExpr) = mkSynDelay (e.Range.MakeSynthetic()) e
+
+/// Make a builder.Method(...) call
+let mkSynCall nm (m: range) args builderValName =
+ let m = m.MakeSynthetic() // Mark as synthetic so the language service won't pick it up.
+
+ let args =
+ match args with
+ | [] -> SynExpr.Const(SynConst.Unit, m)
+ | [ arg ] -> SynExpr.Paren(SynExpr.Paren(arg, range0, None, m), range0, None, m)
+ | args -> SynExpr.Paren(SynExpr.Tuple(false, args, [], m), range0, None, m)
+
+ let builderVal = mkSynIdGet m builderValName
+ mkSynApp1 (SynExpr.DotGet(builderVal, range0, SynLongIdent([ mkSynId m nm ], [], [ None ]), m)) args m
+
+// Optionally wrap sources of "let!", "yield!", "use!" in "query.Source"
+let mkSourceExpr callExpr sourceMethInfo builderValName =
+ match sourceMethInfo with
+ | [] -> callExpr
+ | _ -> mkSynCall "Source" callExpr.Range [ callExpr ] builderValName
+
+let mkSourceExprConditional isFromSource callExpr sourceMethInfo builderValName =
+ if isFromSource then
+ mkSourceExpr callExpr sourceMethInfo builderValName
+ else
+ callExpr
+
+let inline mkSynLambda p e m =
+ SynExpr.Lambda(false, false, p, e, None, m, SynExprLambdaTrivia.Zero)
+
+let mkExprForVarSpace m (patvs: Val list) =
+ match patvs with
+ | [] -> SynExpr.Const(SynConst.Unit, m)
+ | [ v ] -> SynExpr.Ident v.Id
+ | vs -> SynExpr.Tuple(false, (vs |> List.map (fun v -> SynExpr.Ident(v.Id))), [], m)
+
+let mkSimplePatForVarSpace m (patvs: Val list) =
+ let spats =
+ match patvs with
+ | [] -> []
+ | [ v ] -> [ mkSynSimplePatVar false v.Id ]
+ | vs -> vs |> List.map (fun v -> mkSynSimplePatVar false v.Id)
+
+ SynSimplePats.SimplePats(spats, [], m)
+
+let mkPatForVarSpace m (patvs: Val list) =
+ match patvs with
+ | [] -> SynPat.Const(SynConst.Unit, m)
+ | [ v ] -> mkSynPatVar None v.Id
+ | vs -> SynPat.Tuple(false, (vs |> List.map (fun x -> mkSynPatVar None x.Id)), [], m)
+
+let hasMethInfo nm cenv env mBuilderVal ad builderTy =
+ match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad nm builderTy with
+ | [] -> false
+ | _ -> true
+
+let getCustomOperationMethods (cenv: TcFileState) (env: TcEnv) ad mBuilderVal builderTy =
+ let allMethInfos =
+ AllMethInfosOfTypeInScope
+ ResultCollectionSettings.AllResults
+ cenv.infoReader
+ env.NameEnv
+ None
+ ad
+ IgnoreOverrides
+ mBuilderVal
+ builderTy
+
+ [
+ for methInfo in allMethInfos do
+ if IsMethInfoAccessible cenv.amap mBuilderVal ad methInfo then
+ let nameSearch =
+ TryBindMethInfoAttribute
+ cenv.g
+ mBuilderVal
+ cenv.g.attrib_CustomOperationAttribute
+ methInfo
+ IgnoreAttribute // We do not respect this attribute for IL methods
+ (fun attr ->
+ // NOTE: right now, we support of custom operations with spaces in them ([])
+ // In the parameterless CustomOperationAttribute - we use the method name, and also allow it to be ````-quoted (member _.``foo bar`` _ = ...)
+ match attr with
+ // Empty string and parameterless constructor - we use the method name
+ | Attrib(unnamedArgs = [ AttribStringArg "" ]) // Empty string as parameter
+ | Attrib(unnamedArgs = []) -> // No parameters, same as empty string for compat reasons.
+ Some methInfo.LogicalName
+ // Use the specified name
+ | Attrib(unnamedArgs = [ AttribStringArg msg ]) -> Some msg
+ | _ -> None)
+ IgnoreAttribute // We do not respect this attribute for provided methods
+
+ match nameSearch with
+ | None -> ()
+ | Some nm ->
+ let joinConditionWord =
+ TryBindMethInfoAttribute
+ cenv.g
+ mBuilderVal
+ cenv.g.attrib_CustomOperationAttribute
+ methInfo
+ IgnoreAttribute // We do not respect this attribute for IL methods
+ (function
+ | Attrib(propVal = ExtractAttribNamedArg "JoinConditionWord" (AttribStringArg s)) -> Some s
+ | _ -> None)
+ IgnoreAttribute // We do not respect this attribute for provided methods
+
+ let flagSearch (propName: string) =
+ TryBindMethInfoAttribute
+ cenv.g
+ mBuilderVal
+ cenv.g.attrib_CustomOperationAttribute
+ methInfo
+ IgnoreAttribute // We do not respect this attribute for IL methods
+ (function
+ | Attrib(propVal = ExtractAttribNamedArg propName (AttribBoolArg b)) -> Some b
+ | _ -> None)
+ IgnoreAttribute // We do not respect this attribute for provided methods
+
+ let maintainsVarSpaceUsingBind =
+ defaultArg (flagSearch "MaintainsVariableSpaceUsingBind") false
+
+ let maintainsVarSpace = defaultArg (flagSearch "MaintainsVariableSpace") false
+ let allowInto = defaultArg (flagSearch "AllowIntoPattern") false
+ let isLikeZip = defaultArg (flagSearch "IsLikeZip") false
+ let isLikeJoin = defaultArg (flagSearch "IsLikeJoin") false
+ let isLikeGroupJoin = defaultArg (flagSearch "IsLikeGroupJoin") false
+
+ nm,
+ maintainsVarSpaceUsingBind,
+ maintainsVarSpace,
+ allowInto,
+ isLikeZip,
+ isLikeJoin,
+ isLikeGroupJoin,
+ joinConditionWord,
+ methInfo
+ ]
+
+/// Decide if the identifier represents a use of a custom query operator
+let tryGetDataForCustomOperation (nm: Ident) ceenv =
+ let isOpDataCountAllowed opDatas =
+ match opDatas with
+ | [ _ ] -> true
+ | _ :: _ -> ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations
+ | _ -> false
+
+ match ceenv.customOperationMethodsIndexedByKeyword.TryGetValue nm.idText with
+ | true, opDatas when isOpDataCountAllowed opDatas ->
+ for opData in opDatas do
+ let (opName,
+ maintainsVarSpaceUsingBind,
+ maintainsVarSpace,
+ _allowInto,
+ isLikeZip,
+ isLikeJoin,
+ isLikeGroupJoin,
+ _joinConditionWord,
+ methInfo) =
+ opData
+
+ if
+ (maintainsVarSpaceUsingBind && maintainsVarSpace)
+ || (isLikeZip && isLikeJoin)
+ || (isLikeZip && isLikeGroupJoin)
+ || (isLikeJoin && isLikeGroupJoin)
+ then
+ errorR (Error(FSComp.SR.tcCustomOperationInvalid opName, nm.idRange))
+
+ if not (ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations) then
+ match ceenv.customOperationMethodsIndexedByMethodName.TryGetValue methInfo.LogicalName with
+ | true, [ _ ] -> ()
+ | _ -> errorR (Error(FSComp.SR.tcCustomOperationMayNotBeOverloaded nm.idText, nm.idRange))
+
+ Some opDatas
+ | true, opData :: _ ->
+ errorR (Error(FSComp.SR.tcCustomOperationMayNotBeOverloaded nm.idText, nm.idRange))
+ Some [ opData ]
+ | _ -> None
+
+let isCustomOperation ceenv nm =
+ tryGetDataForCustomOperation nm ceenv |> Option.isSome
+
+let customOperationCheckValidity m f opDatas =
+ let vs = List.map f opDatas
+ let v0 = vs[0]
+
+ let (opName,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) =
+ opDatas[0]
+
+ if not (List.allEqual vs) then
+ errorR (Error(FSComp.SR.tcCustomOperationInvalid opName, m))
+
+ v0
+
+// Check for the MaintainsVariableSpace on custom operation
+let customOperationMaintainsVarSpace ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> false
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ _maintainsVarSpaceUsingBind,
+ maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) -> maintainsVarSpace)
+
+let customOperationMaintainsVarSpaceUsingBind ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> false
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) -> maintainsVarSpaceUsingBind)
+
+let customOperationIsLikeZip ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> false
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) -> isLikeZip)
+
+let customOperationIsLikeJoin ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> false
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) -> isLikeJoin)
+
+let customOperationIsLikeGroupJoin ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> false
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) -> isLikeGroupJoin)
+
+let customOperationJoinConditionWord ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ joinConditionWord,
+ _methInfo) -> joinConditionWord)
+ |> function
+ | None -> "on"
+ | Some v -> v
+ | _ -> "on"
+
+let customOperationAllowsInto ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> false
+ | Some opDatas ->
+ opDatas
+ |> customOperationCheckValidity
+ nm.idRange
+ (fun
+ (_nm,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) -> allowInto)
+
+let customOpUsageText ceenv nm =
+ match tryGetDataForCustomOperation nm ceenv with
+ | Some((_nm,
+ _maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ isLikeZip,
+ isLikeJoin,
+ isLikeGroupJoin,
+ _joinConditionWord,
+ _methInfo) :: _) ->
+ if isLikeGroupJoin then
+ Some(
+ FSComp.SR.customOperationTextLikeGroupJoin (
+ nm.idText,
+ customOperationJoinConditionWord ceenv nm,
+ customOperationJoinConditionWord ceenv nm
+ )
+ )
+ elif isLikeJoin then
+ Some(
+ FSComp.SR.customOperationTextLikeJoin (
+ nm.idText,
+ customOperationJoinConditionWord ceenv nm,
+ customOperationJoinConditionWord ceenv nm
+ )
+ )
+ elif isLikeZip then
+ Some(FSComp.SR.customOperationTextLikeZip (nm.idText))
+ else
+ None
+ | _ -> None
+
+let tryGetArgAttribsForCustomOperator ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | Some argInfos ->
+ argInfos
+ |> List.map
+ (fun
+ (_nm,
+ __maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ methInfo) ->
+ match methInfo.GetParamAttribs(ceenv.cenv.amap, ceenv.mWhole) with
+ | [ curriedArgInfo ] -> Some (List.map fst curriedArgInfo) // one for the actual argument group
+ | _ -> None)
+ |> Some
+ | _ -> None
+
+let tryGetArgInfosForCustomOperator ceenv (nm: Ident) =
+ match tryGetDataForCustomOperation nm ceenv with
+ | Some argInfos ->
+ argInfos
+ |> List.map
+ (fun
+ (_nm,
+ __maintainsVarSpaceUsingBind,
+ _maintainsVarSpace,
+ _allowInto,
+ _isLikeZip,
+ _isLikeJoin,
+ _isLikeGroupJoin,
+ _joinConditionWord,
+ methInfo) ->
+ match methInfo with
+ | FSMeth(_, _, vref, _) ->
+ match ArgInfosOfMember ceenv.cenv.g vref with
+ | [ curriedArgInfo ] -> Some curriedArgInfo
+ | _ -> None
+ | _ -> None)
+ |> Some
+ | _ -> None
+
+let tryExpectedArgCountForCustomOperator ceenv (nm: Ident) =
+ match tryGetArgAttribsForCustomOperator ceenv nm with
+ | None -> None
+ | Some argInfosForOverloads ->
+ let nums =
+ argInfosForOverloads
+ |> List.map (function
+ | None -> -1
+ | Some argInfos -> List.length argInfos)
+
+ // Prior to 'OverloadsForCustomOperations' we count exact arguments.
+ //
+ // With 'OverloadsForCustomOperations' we don't compute an exact expected argument count
+ // if any arguments are optional, out or ParamArray.
+ let isSpecial =
+ if ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations then
+ argInfosForOverloads
+ |> List.exists (fun info ->
+ match info with
+ | None -> false
+ | Some args ->
+ args
+ |> List.exists (fun (ParamAttribs(isParamArrayArg, _isInArg, isOutArg, optArgInfo, _callerInfo, _reflArgInfo)) ->
+ isParamArrayArg || isOutArg || optArgInfo.IsOptional))
+ else
+ false
+
+ if not isSpecial && nums |> List.forall (fun v -> v >= 0 && v = nums[0]) then
+ Some(max (nums[0] - 1) 0) // drop the computation context argument
+ else
+ None
+
+// Check for the [] attribute on an argument position
+let isCustomOperationProjectionParameter ceenv i (nm: Ident) =
+ match tryGetArgInfosForCustomOperator ceenv nm with
+ | None -> false
+ | Some argInfosForOverloads ->
+ let vs =
+ argInfosForOverloads
+ |> List.map (function
+ | None -> false
+ | Some argInfos ->
+ i < argInfos.Length
+ && let _, argInfo = List.item i argInfos in
+ HasFSharpAttribute ceenv.cenv.g ceenv.cenv.g.attrib_ProjectionParameterAttribute argInfo.Attribs)
+
+ if List.allEqual vs then
+ vs[0]
+ else
+ let opDatas = (tryGetDataForCustomOperation nm ceenv).Value
+
+ let opName, _, _, _, _, _, _, _j, _ = opDatas[0]
+ errorR (Error(FSComp.SR.tcCustomOperationInvalid opName, nm.idRange))
+ false
+
+[]
+let (|ExprAsPat|_|) (f: SynExpr) =
+ match f with
+ | SingleIdent v1
+ | SynExprParen(SingleIdent v1, _, _, _) -> ValueSome(mkSynPatVar None v1)
+ | SynExprParen(SynExpr.Tuple(false, elems, commas, _), _, _, _) ->
+ let elems = elems |> List.map (|SingleIdent|_|)
+
+ if elems |> List.forall (fun x -> x.IsSome) then
+ ValueSome(SynPat.Tuple(false, (elems |> List.map (fun x -> mkSynPatVar None x.Value)), commas, f.Range))
+ else
+ ValueNone
+ | _ -> ValueNone
+
+// For join clauses that join on nullable, we syntactically insert the creation of nullable values on the appropriate side of the condition,
+// then pull the syntax apart again
+[]
+let (|JoinRelation|_|) ceenv (expr: SynExpr) =
+ let m = expr.Range
+ let ad = ceenv.env.eAccessRights
+
+ let isOpName opName vref s =
+ (s = opName)
+ && match
+ ResolveExprLongIdent
+ ceenv.cenv.tcSink
+ ceenv.cenv.nameResolver
+ m
+ ad
+ ceenv.env.eNameResEnv
+ TypeNameResolutionInfo.Default
+ [ ident (opName, m) ]
+ None
+ with
+ | Result(_, Item.Value vref2, []) -> valRefEq ceenv.cenv.g vref vref2
+ | _ -> false
+
+ match expr with
+ | BinOpExpr(opId, a, b) when isOpName opNameEquals ceenv.cenv.g.equals_operator_vref opId.idText -> ValueSome(a, b)
+
+ | BinOpExpr(opId, a, b) when isOpName opNameEqualsNullable ceenv.cenv.g.equals_nullable_operator_vref opId.idText ->
+
+ let a =
+ SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet a.Range [ MangledGlobalName; "System" ] "Nullable", a, a.Range)
+
+ ValueSome(a, b)
+
+ | BinOpExpr(opId, a, b) when isOpName opNameNullableEquals ceenv.cenv.g.nullable_equals_operator_vref opId.idText ->
+
+ let b =
+ SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet b.Range [ MangledGlobalName; "System" ] "Nullable", b, b.Range)
+
+ ValueSome(a, b)
+
+ | BinOpExpr(opId, a, b) when isOpName opNameNullableEqualsNullable ceenv.cenv.g.nullable_equals_nullable_operator_vref opId.idText ->
+
+ ValueSome(a, b)
+
+ | _ -> ValueNone
+
+let (|ForEachThen|_|) synExpr =
+ match synExpr with
+ | SynExpr.ForEach(_spFor,
+ _spIn,
+ SeqExprOnly false,
+ isFromSource,
+ pat1,
+ expr1,
+ SynExpr.Sequential(isTrueSeq = true; expr1 = clause; expr2 = rest),
+ _) -> Some(isFromSource, pat1, expr1, clause, rest)
+ | _ -> None
+
+let (|CustomOpId|_|) isCustomOperation predicate synExpr =
+ match synExpr with
+ | SingleIdent nm when isCustomOperation nm && predicate nm -> Some nm
+ | _ -> None
+
+// e1 in e2 ('in' is parsed as 'JOIN_IN')
+let (|InExpr|_|) synExpr =
+ match synExpr with
+ | SynExpr.JoinIn(e1, _, e2, mApp) -> Some(e1, e2, mApp)
+ | _ -> None
+
+// e1 on e2 (note: 'on' is the 'JoinConditionWord')
+let (|OnExpr|_|) ceenv nm synExpr =
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> None
+ | Some _ ->
+ match synExpr with
+ | SynExpr.App(funcExpr = SynExpr.App(funcExpr = e1; argExpr = SingleIdent opName); argExpr = e2) when
+ opName.idText = customOperationJoinConditionWord ceenv nm
+ ->
+ let item = Item.CustomOperation(opName.idText, (fun () -> None), None)
+
+ CallNameResolutionSink
+ ceenv.cenv.tcSink
+ (opName.idRange, ceenv.env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ceenv.env.AccessRights)
+
+ Some(e1, e2)
+ | _ -> None
+
+// e1 into e2
+let (|IntoSuffix|_|) (e: SynExpr) =
+ match e with
+ | SynExpr.App(funcExpr = SynExpr.App(funcExpr = x; argExpr = SingleIdent nm2); argExpr = ExprAsPat intoPat) when
+ nm2.idText = CustomOperations.Into
+ ->
+ Some(x, nm2.idRange, intoPat)
+ | _ -> None
+
+let JoinOrGroupJoinOp ceenv detector synExpr =
+ match synExpr with
+ | SynExpr.App(_, _, CustomOpId (isCustomOperation ceenv) detector nm, ExprAsPat innerSourcePat, mJoinCore) ->
+ Some(nm, innerSourcePat, mJoinCore, false)
+ // join with bad pattern (gives error on "join" and continues)
+ | SynExpr.App(_, _, CustomOpId (isCustomOperation ceenv) detector nm, _innerSourcePatExpr, mJoinCore) ->
+ errorR (Error(FSComp.SR.tcBinaryOperatorRequiresVariable (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ Some(nm, arbPat mJoinCore, mJoinCore, true)
+ // join (without anything after - gives error on "join" and continues)
+ | CustomOpId (isCustomOperation ceenv) detector nm ->
+ errorR (Error(FSComp.SR.tcBinaryOperatorRequiresVariable (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ Some(nm, arbPat synExpr.Range, synExpr.Range, true)
+ | _ -> None
+// JoinOrGroupJoinOp customOperationIsLikeJoin
+
+let (|JoinOp|_|) ceenv synExpr =
+ JoinOrGroupJoinOp ceenv (customOperationIsLikeJoin ceenv) synExpr
+
+let (|GroupJoinOp|_|) ceenv synExpr =
+ JoinOrGroupJoinOp ceenv (customOperationIsLikeGroupJoin ceenv) synExpr
+
+let MatchIntoSuffixOrRecover ceenv alreadyGivenError (nm: Ident) synExpr =
+ match synExpr with
+ | IntoSuffix(x, intoWordRange, intoPat) ->
+ // record the "into" as a custom operation for colorization
+ let item = Item.CustomOperation("into", (fun () -> None), None)
+
+ CallNameResolutionSink
+ ceenv.cenv.tcSink
+ (intoWordRange, ceenv.env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ceenv.env.eAccessRights)
+
+ (x, intoPat, alreadyGivenError)
+ | _ ->
+ if not alreadyGivenError then
+ errorR (Error(FSComp.SR.tcOperatorIncorrectSyntax (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ (synExpr, arbPat synExpr.Range, true)
+
+let MatchOnExprOrRecover ceenv alreadyGivenError nm (onExpr: SynExpr) =
+ match onExpr with
+ | OnExpr ceenv nm (innerSource, SynExprParen(keySelectors, _, _, _)) -> (innerSource, keySelectors)
+ | _ ->
+ if not alreadyGivenError then
+ suppressErrorReporting (fun () -> TcExprOfUnknownType ceenv.cenv ceenv.env ceenv.tpenv onExpr)
+ |> ignore
+
+ errorR (Error(FSComp.SR.tcOperatorIncorrectSyntax (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ (arbExpr ("_innerSource", onExpr.Range),
+ mkSynBifix onExpr.Range "=" (arbExpr ("_keySelectors", onExpr.Range)) (arbExpr ("_keySelector2", onExpr.Range)))
+
+let (|JoinExpr|_|) (ceenv: ComputationExpressionContext<'a>) synExpr =
+ match synExpr with
+ | InExpr(JoinOp ceenv (nm, innerSourcePat, _, alreadyGivenError), onExpr, mJoinCore) ->
+ let innerSource, keySelectors =
+ MatchOnExprOrRecover ceenv alreadyGivenError nm onExpr
+
+ Some(nm, innerSourcePat, innerSource, keySelectors, mJoinCore)
+ | JoinOp ceenv (nm, innerSourcePat, mJoinCore, alreadyGivenError) ->
+ if alreadyGivenError then
+ errorR (Error(FSComp.SR.tcOperatorRequiresIn (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ Some(nm, innerSourcePat, arbExpr ("_innerSource", synExpr.Range), arbKeySelectors synExpr.Range, mJoinCore)
+ | _ -> None
+
+let (|GroupJoinExpr|_|) ceenv synExpr =
+ match synExpr with
+ | InExpr(GroupJoinOp ceenv (nm, innerSourcePat, _, alreadyGivenError), intoExpr, mGroupJoinCore) ->
+ let onExpr, intoPat, alreadyGivenError =
+ MatchIntoSuffixOrRecover ceenv alreadyGivenError nm intoExpr
+
+ let innerSource, keySelectors =
+ MatchOnExprOrRecover ceenv alreadyGivenError nm onExpr
+
+ Some(nm, innerSourcePat, innerSource, keySelectors, intoPat, mGroupJoinCore)
+ | GroupJoinOp ceenv (nm, innerSourcePat, mGroupJoinCore, alreadyGivenError) ->
+ if alreadyGivenError then
+ errorR (Error(FSComp.SR.tcOperatorRequiresIn (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ Some(
+ nm,
+ innerSourcePat,
+ arbExpr ("_innerSource", synExpr.Range),
+ arbKeySelectors synExpr.Range,
+ arbPat synExpr.Range,
+ mGroupJoinCore
+ )
+ | _ -> None
+
+let (|JoinOrGroupJoinOrZipClause|_|) (ceenv: ComputationExpressionContext<'a>) synExpr =
+
+ match synExpr with
+ // join innerSourcePat in innerSource on (keySelector1 = keySelector2)
+ | JoinExpr ceenv (nm, innerSourcePat, innerSource, keySelectors, mJoinCore) ->
+ Some(nm, innerSourcePat, innerSource, Some keySelectors, None, mJoinCore)
+
+ // groupJoin innerSourcePat in innerSource on (keySelector1 = keySelector2) into intoPat
+ | GroupJoinExpr ceenv (nm, innerSourcePat, innerSource, keySelectors, intoPat, mGroupJoinCore) ->
+ Some(nm, innerSourcePat, innerSource, Some keySelectors, Some intoPat, mGroupJoinCore)
+
+ // zip intoPat in secondSource
+ | InExpr(SynExpr.App(_, _, CustomOpId (isCustomOperation ceenv) (customOperationIsLikeZip ceenv) nm, ExprAsPat secondSourcePat, _),
+ secondSource,
+ mZipCore) -> Some(nm, secondSourcePat, secondSource, None, None, mZipCore)
+
+ // zip (without secondSource or in - gives error)
+ | CustomOpId (isCustomOperation ceenv) (customOperationIsLikeZip ceenv) nm ->
+ errorR (Error(FSComp.SR.tcOperatorIncorrectSyntax (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ Some(nm, arbPat synExpr.Range, arbExpr ("_secondSource", synExpr.Range), None, None, synExpr.Range)
+
+ // zip secondSource (without in - gives error)
+ | SynExpr.App(_, _, CustomOpId (isCustomOperation ceenv) (customOperationIsLikeZip ceenv) nm, ExprAsPat secondSourcePat, mZipCore) ->
+ errorR (Error(FSComp.SR.tcOperatorIncorrectSyntax (nm.idText, Option.get (customOpUsageText ceenv nm)), mZipCore))
+
+ Some(nm, secondSourcePat, arbExpr ("_innerSource", synExpr.Range), None, None, mZipCore)
+
+ | _ -> None
+
+let (|ForEachThenJoinOrGroupJoinOrZipClause|_|) (ceenv: ComputationExpressionContext<'a>) strict synExpr =
+ match synExpr with
+ | ForEachThen(isFromSource,
+ firstSourcePat,
+ firstSource,
+ JoinOrGroupJoinOrZipClause ceenv (nm, secondSourcePat, secondSource, keySelectorsOpt, pat3opt, mOpCore),
+ innerComp) when
+ (let _firstSourceSimplePats, later1 =
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink ceenv.cenv.tcSink
+ SimplePatsOfPat ceenv.cenv.synArgNameGenerator firstSourcePat
+
+ Option.isNone later1)
+ ->
+ Some(isFromSource, firstSourcePat, firstSource, nm, secondSourcePat, secondSource, keySelectorsOpt, pat3opt, mOpCore, innerComp)
+
+ | JoinOrGroupJoinOrZipClause ceenv (nm, pat2, expr2, expr3, pat3opt, mOpCore) when strict ->
+ errorR (Error(FSComp.SR.tcBinaryOperatorRequiresBody (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ Some(
+ true,
+ arbPat synExpr.Range,
+ arbExpr ("_outerSource", synExpr.Range),
+ nm,
+ pat2,
+ expr2,
+ expr3,
+ pat3opt,
+ mOpCore,
+ arbExpr ("_innerComp", synExpr.Range)
+ )
+
+ | _ -> None
+
+let (|StripApps|) e =
+ let rec strip e =
+ match e with
+ | SynExpr.FromParseError(SynExpr.App(funcExpr = f; argExpr = arg), _)
+ | SynExpr.App(funcExpr = f; argExpr = arg) ->
+ let g, acc = strip f
+ g, (arg :: acc)
+ | _ -> e, []
+
+ let g, acc = strip e
+ g, List.rev acc
+
+let (|OptionalIntoSuffix|) e =
+ match e with
+ | IntoSuffix(body, intoWordRange, intoInfo) -> (body, Some(intoWordRange, intoInfo))
+ | body -> (body, None)
+
+let (|CustomOperationClause|_|) ceenv e =
+ match e with
+ | OptionalIntoSuffix(StripApps(SingleIdent nm, _) as core, intoOpt) when isCustomOperation ceenv nm ->
+ // Now we know we have a custom operation, commit the name resolution
+ let intoInfoOpt =
+ match intoOpt with
+ | Some(intoWordRange, intoInfo) ->
+ let item = Item.CustomOperation("into", (fun () -> None), None)
+
+ CallNameResolutionSink
+ ceenv.cenv.tcSink
+ (intoWordRange, ceenv.env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ceenv.env.eAccessRights)
+
+ Some intoInfo
+ | None -> None
+
+ Some(nm, Option.get (tryGetDataForCustomOperation nm ceenv), core, core.Range, intoInfoOpt)
+ | _ -> None
+
+let (|OptionalSequential|) e =
+ match e with
+ | SynExpr.Sequential(debugPoint = _sp; isTrueSeq = true; expr1 = dataComp1; expr2 = dataComp2) -> (dataComp1, Some dataComp2)
+ | _ -> (e, None)
+
+// "cexpr; cexpr" is treated as builder.Combine(cexpr1, cexpr1)
+// This is not pretty - we have to decide which range markers we use for the calls to Combine and Delay
+// NOTE: we should probably suppress these sequence points altogether
+let rangeForCombine innerComp1 =
+ let m =
+ match innerComp1 with
+ | SynExpr.IfThenElse(trivia = { IfToThenRange = mIfToThen }) -> mIfToThen
+ | SynExpr.Match(matchDebugPoint = DebugPointAtBinding.Yes mMatch) -> mMatch
+ | SynExpr.TryWith(trivia = { TryKeyword = mTry }) -> mTry
+ | SynExpr.TryFinally(trivia = { TryKeyword = mTry }) -> mTry
+ | SynExpr.For(forDebugPoint = DebugPointAtFor.Yes mBind) -> mBind
+ | SynExpr.ForEach(forDebugPoint = DebugPointAtFor.Yes mBind) -> mBind
+ | SynExpr.While(whileDebugPoint = DebugPointAtWhile.Yes mWhile) -> mWhile
+ | _ -> innerComp1.Range
+
+ m.NoteSourceConstruct(NotedSourceConstruct.Combine)
+
+// Check for 'where x > y', 'select x, y' and other mis-applications of infix operators, give a good error message, and return a flag
+let checkForBinaryApp ceenv comp =
+ match comp with
+ | StripApps(SingleIdent nm, [ StripApps(SingleIdent nm2, args); arg2 ]) when
+ IsLogicalInfixOpName nm.idText
+ && (match tryExpectedArgCountForCustomOperator ceenv nm2 with
+ | Some n -> n > 0
+ | _ -> false)
+ && not (List.isEmpty args)
+ ->
+ let estimatedRangeOfIntendedLeftAndRightArguments =
+ unionRanges (List.last args).Range arg2.Range
+
+ errorR (Error(FSComp.SR.tcUnrecognizedQueryBinaryOperator (), estimatedRangeOfIntendedLeftAndRightArguments))
+ true
+ | SynExpr.Tuple(false, StripApps(SingleIdent nm2, args) :: _, _, m) when
+ (match tryExpectedArgCountForCustomOperator ceenv nm2 with
+ | Some n -> n > 0
+ | _ -> false)
+ && not (List.isEmpty args)
+ ->
+ let estimatedRangeOfIntendedLeftAndRightArguments =
+ unionRanges (List.last args).Range m.EndRange
+
+ errorR (Error(FSComp.SR.tcUnrecognizedQueryBinaryOperator (), estimatedRangeOfIntendedLeftAndRightArguments))
+ true
+ | _ -> false
+
+let inline addVarsToVarSpace (varSpace: LazyWithContext) f =
+ LazyWithContext.Create(
+ (fun m ->
+ let (patvs: Val list, env) = varSpace.Force m
+ let vs, envinner = f m env
+
+ let patvs =
+ List.append
+ patvs
+ (vs
+ |> List.filter (fun v -> not (patvs |> List.exists (fun v2 -> v.LogicalName = v2.LogicalName))))
+
+ patvs, envinner),
+ id
+ )
+
+///
+/// Try translate the syntax sugar
+///
+/// Computation expression context (carrying caches, environments, ranges, etc)
+/// Flag if it's inital check
+/// a flag indicating if custom operators are allowed. They are not allowed inside try/with, try/finally, if/then/else etc.
+/// a lazy data structure indicating the variables bound so far in the overall computation
+/// the computation expression being analyzed
+/// represents the translation of the context in which the computation expression 'comp' occurs,
+/// up to a hole to be filled by (part of) the results of translating 'comp'.
+///
+///
+let rec TryTranslateComputationExpression
+ (ceenv: ComputationExpressionContext<'a>)
+ (firstTry: CompExprTranslationPass)
+ (q: CustomOperationsMode)
+ (varSpace: LazyWithContext<(Val list * TcEnv), range>)
+ (comp: SynExpr)
+ (translatedCtxt: SynExpr -> SynExpr)
+ : SynExpr option =
+ // Guard the stack for deeply nested computation expressions
+
+ let cenv = ceenv.cenv
+
+ cenv.stackGuard.Guard
+ <| fun () ->
+
+ match comp with
+
+ // for firstSourcePat in firstSource do
+ // join secondSourcePat in expr2 on (expr3 = expr4)
+ // ...
+ // -->
+ // join expr1 expr2 (fun firstSourcePat -> expr3) (fun secondSourcePat -> expr4) (fun firstSourcePat secondSourcePat -> ...)
+
+ // for firstSourcePat in firstSource do
+ // groupJoin secondSourcePat in expr2 on (expr3 = expr4) into groupPat
+ // ...
+ // -->
+ // groupJoin expr1 expr2 (fun firstSourcePat -> expr3) (fun secondSourcePat -> expr4) (fun firstSourcePat groupPat -> ...)
+
+ // for firstSourcePat in firstSource do
+ // zip secondSource into secondSourcePat
+ // ...
+ // -->
+ // zip expr1 expr2 (fun pat1 pat3 -> ...)
+ | ForEachThenJoinOrGroupJoinOrZipClause ceenv true (isFromSource,
+ firstSourcePat,
+ firstSource,
+ nm,
+ secondSourcePat,
+ secondSource,
+ keySelectorsOpt,
+ secondResultPatOpt,
+ mOpCore,
+ innerComp) ->
+ match q with
+ | CustomOperationsMode.Denied -> error (Error(FSComp.SR.tcCustomOperationMayNotBeUsedHere (), nm.idRange))
+ | CustomOperationsMode.Allowed ->
+
+ let firstSource =
+ mkSourceExprConditional isFromSource firstSource ceenv.sourceMethInfo ceenv.builderValName
+
+ let secondSource =
+ mkSourceExpr secondSource ceenv.sourceMethInfo ceenv.builderValName
+
+ // Add the variables to the variable space, on demand
+ let varSpaceWithFirstVars =
+ addVarsToVarSpace varSpace (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv firstSourcePat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ let varSpaceWithSecondVars =
+ addVarsToVarSpace varSpaceWithFirstVars (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv secondSourcePat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ let varSpaceWithGroupJoinVars =
+ match secondResultPatOpt with
+ | Some pat3 ->
+ addVarsToVarSpace varSpaceWithFirstVars (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv pat3 None TcTrueMatchClause.No
+
+ vspecs, envinner)
+ | None -> varSpace
+
+ let firstSourceSimplePats, later1 =
+ SimplePatsOfPat cenv.synArgNameGenerator firstSourcePat
+
+ let secondSourceSimplePats, later2 =
+ SimplePatsOfPat cenv.synArgNameGenerator secondSourcePat
+
+ if Option.isSome later1 then
+ errorR (Error(FSComp.SR.tcJoinMustUseSimplePattern (nm.idText), firstSourcePat.Range))
+
+ if Option.isSome later2 then
+ errorR (Error(FSComp.SR.tcJoinMustUseSimplePattern (nm.idText), secondSourcePat.Range))
+
+ // check 'join' or 'groupJoin' or 'zip' is permitted for this builder
+ match tryGetDataForCustomOperation nm ceenv with
+ | None -> error (Error(FSComp.SR.tcMissingCustomOperation (nm.idText), nm.idRange))
+ | Some opDatas ->
+ let opName, _, _, _, _, _, _, _, methInfo = opDatas[0]
+
+ // Record the resolution of the custom operation for posterity
+ let item =
+ Item.CustomOperation(opName, (fun () -> customOpUsageText ceenv nm), Some methInfo)
+
+ // FUTURE: consider whether we can do better than emptyTyparInst here, in order to display instantiations
+ // of type variables in the quick info provided in the IDE.
+ CallNameResolutionSink
+ cenv.tcSink
+ (nm.idRange, ceenv.env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ceenv.env.eAccessRights)
+
+ let mkJoinExpr keySelector1 keySelector2 innerPat e =
+ let mSynthetic = mOpCore.MakeSynthetic()
+
+ mkSynCall
+ methInfo.DisplayName
+ mOpCore
+ [
+ firstSource
+ secondSource
+ mkSynLambda firstSourceSimplePats keySelector1 mSynthetic
+ mkSynLambda secondSourceSimplePats keySelector2 mSynthetic
+ mkSynLambda firstSourceSimplePats (mkSynLambda innerPat e mSynthetic) mSynthetic
+ ]
+
+ let mkZipExpr e =
+ let mSynthetic = mOpCore.MakeSynthetic()
+
+ mkSynCall
+ methInfo.DisplayName
+ mOpCore
+ [
+ firstSource
+ secondSource
+ mkSynLambda firstSourceSimplePats (mkSynLambda secondSourceSimplePats e mSynthetic) mSynthetic
+ ]
+
+ // wraps given expression into sequence with result produced by arbExpr so result will look like:
+ // l; SynExpr.ArbitraryAfterError (...)
+ // this allows to handle cases like 'on (a > b)' // '>' is not permitted as correct join relation
+ // after wrapping a and b can still be typechecked (so we'll have correct completion inside 'on' part)
+ // but presence of SynExpr.ArbitraryAfterError allows to avoid errors about incompatible types in cases like
+ // query {
+ // for a in [1] do
+ // join b in [""] on (a > b)
+ // }
+ // if we typecheck raw 'a' and 'b' then we'll end up with 2 errors:
+ // 1. incorrect join relation
+ // 2. incompatible types: int and string
+ // with SynExpr.ArbitraryAfterError we have only first one
+ let wrapInArbErrSequence l caption =
+ SynExpr.Sequential(
+ DebugPointAtSequential.SuppressNeither,
+ true,
+ l,
+ (arbExpr (caption, l.Range.EndRange)),
+ l.Range,
+ SynExprSequentialTrivia.Zero
+ )
+
+ let mkOverallExprGivenVarSpaceExpr, varSpaceInner =
+
+ let isNullableOp opId =
+ match ConvertValLogicalNameToDisplayNameCore opId with
+ | "?="
+ | "=?"
+ | "?=?" -> true
+ | _ -> false
+
+ match secondResultPatOpt, keySelectorsOpt with
+ // groupJoin
+ | Some secondResultPat, Some relExpr when customOperationIsLikeGroupJoin ceenv nm ->
+ let secondResultSimplePats, later3 =
+ SimplePatsOfPat cenv.synArgNameGenerator secondResultPat
+
+ if Option.isSome later3 then
+ errorR (Error(FSComp.SR.tcJoinMustUseSimplePattern (nm.idText), secondResultPat.Range))
+
+ match relExpr with
+ | JoinRelation ceenv (keySelector1, keySelector2) ->
+ mkJoinExpr keySelector1 keySelector2 secondResultSimplePats, varSpaceWithGroupJoinVars
+ | BinOpExpr(opId, l, r) ->
+ if isNullableOp opId.idText then
+ // When we cannot resolve NullableOps, recommend the relevant namespace to be added
+ errorR (
+ Error(
+ FSComp.SR.cannotResolveNullableOperators (ConvertValLogicalNameToDisplayNameCore opId.idText),
+ relExpr.Range
+ )
+ )
+ else
+ errorR (Error(FSComp.SR.tcInvalidRelationInJoin (nm.idText), relExpr.Range))
+
+ let l = wrapInArbErrSequence l "_keySelector1"
+ let r = wrapInArbErrSequence r "_keySelector2"
+ // this is not correct JoinRelation but it is still binary operation
+ // we've already reported error now we can use operands of binary operation as join components
+ mkJoinExpr l r secondResultSimplePats, varSpaceWithGroupJoinVars
+ | _ ->
+ errorR (Error(FSComp.SR.tcInvalidRelationInJoin (nm.idText), relExpr.Range))
+ // since the shape of relExpr doesn't match our expectations (JoinRelation)
+ // then we assume that this is l.h.s. of the join relation
+ // so typechecker will treat relExpr as body of outerKeySelector lambda parameter in GroupJoin method
+ mkJoinExpr relExpr (arbExpr ("_keySelector2", relExpr.Range)) secondResultSimplePats,
+ varSpaceWithGroupJoinVars
+
+ | None, Some relExpr when customOperationIsLikeJoin ceenv nm ->
+ match relExpr with
+ | JoinRelation ceenv (keySelector1, keySelector2) ->
+ mkJoinExpr keySelector1 keySelector2 secondSourceSimplePats, varSpaceWithSecondVars
+ | BinOpExpr(opId, l, r) ->
+ if isNullableOp opId.idText then
+ // When we cannot resolve NullableOps, recommend the relevant namespace to be added
+ errorR (
+ Error(
+ FSComp.SR.cannotResolveNullableOperators (ConvertValLogicalNameToDisplayNameCore opId.idText),
+ relExpr.Range
+ )
+ )
+ else
+ errorR (Error(FSComp.SR.tcInvalidRelationInJoin (nm.idText), relExpr.Range))
+ // this is not correct JoinRelation but it is still binary operation
+ // we've already reported error now we can use operands of binary operation as join components
+ let l = wrapInArbErrSequence l "_keySelector1"
+ let r = wrapInArbErrSequence r "_keySelector2"
+ mkJoinExpr l r secondSourceSimplePats, varSpaceWithGroupJoinVars
+ | _ ->
+ errorR (Error(FSComp.SR.tcInvalidRelationInJoin (nm.idText), relExpr.Range))
+ // since the shape of relExpr doesn't match our expectations (JoinRelation)
+ // then we assume that this is l.h.s. of the join relation
+ // so typechecker will treat relExpr as body of outerKeySelector lambda parameter in Join method
+ mkJoinExpr relExpr (arbExpr ("_keySelector2", relExpr.Range)) secondSourceSimplePats,
+ varSpaceWithGroupJoinVars
+
+ | None, None when customOperationIsLikeZip ceenv nm -> mkZipExpr, varSpaceWithSecondVars
+
+ | _ ->
+ assert false
+ failwith "unreachable"
+
+ // Case from C# spec: A query expression with a join clause with an into followed by something other than a select clause
+ // Case from C# spec: A query expression with a join clause without an into followed by something other than a select clause
+ let valsInner, _env = varSpaceInner.Force mOpCore
+ let varSpaceExpr = mkExprForVarSpace mOpCore valsInner
+ let varSpacePat = mkPatForVarSpace mOpCore valsInner
+ let joinExpr = mkOverallExprGivenVarSpaceExpr varSpaceExpr ceenv.builderValName
+
+ let consumingExpr =
+ SynExpr.ForEach(
+ DebugPointAtFor.No,
+ DebugPointAtInOrTo.No,
+ SeqExprOnly false,
+ false,
+ varSpacePat,
+ joinExpr,
+ innerComp,
+ mOpCore
+ )
+
+ Some(TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpaceInner consumingExpr translatedCtxt)
+
+ | SynExpr.ForEach(spFor, spIn, SeqExprOnly _seqExprOnly, isFromSource, pat, sourceExpr, innerComp, _mEntireForEach) ->
+ let sourceExpr =
+ match RewriteRangeExpr sourceExpr with
+ | Some e -> e
+ | None -> sourceExpr
+
+ let wrappedSourceExpr =
+ mkSourceExprConditional isFromSource sourceExpr ceenv.sourceMethInfo ceenv.builderValName
+
+ let mFor =
+ match spFor with
+ | DebugPointAtFor.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.For)
+ | DebugPointAtFor.No -> pat.Range
+
+ // For computation expressions, 'in' or 'to' is hit on each MoveNext.
+ // To support this a named debug point for the "in" keyword is available to inlined code.
+ match spIn with
+ | DebugPointAtInOrTo.Yes mIn ->
+ cenv.namedDebugPointsForInlinedCode[{
+ Range = mFor
+ Name = "ForLoop.InOrToKeyword"
+ }] <- mIn
+ | _ -> ()
+
+ let mPat = pat.Range
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mFor
+ ceenv.ad
+ "For"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("For"), mFor))
+
+ // Add the variables to the query variable space, on demand
+ let varSpace =
+ addVarsToVarSpace varSpace (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv pat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ Some(
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp (fun innerCompR ->
+
+ let forCall =
+ mkSynCall
+ "For"
+ mFor
+ [
+ wrappedSourceExpr
+ SynExpr.MatchLambda(
+ false,
+ mPat,
+ [
+ SynMatchClause(pat, None, innerCompR, mPat, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)
+ ],
+ DebugPointAtBinding.NoneAtInvisible,
+ mFor
+ )
+ ]
+ ceenv.builderValName
+
+ let forCall =
+ match spFor with
+ | DebugPointAtFor.Yes _ -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mFor, false, forCall)
+ | DebugPointAtFor.No -> forCall
+
+ translatedCtxt forCall)
+ )
+
+ | SynExpr.For(
+ forDebugPoint = spFor
+ toDebugPoint = spTo
+ ident = id
+ identBody = start
+ direction = dir
+ toBody = finish
+ doBody = innerComp
+ range = m) ->
+ let mFor =
+ match spFor with
+ | DebugPointAtFor.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.For)
+ | _ -> m
+
+ if ceenv.isQuery then
+ errorR (Error(FSComp.SR.tcNoIntegerForLoopInQuery (), mFor))
+
+ let reduced =
+ elimFastIntegerForLoop (spFor, spTo, id, start, dir, finish, innerComp, m)
+
+ Some(TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace reduced translatedCtxt)
+ | SynExpr.While(spWhile, guardExpr, innerComp, _) ->
+ let mGuard = guardExpr.Range
+
+ let mWhile =
+ match spWhile with
+ | DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While)
+ | _ -> mGuard
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcNoWhileInQuery (), mWhile))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mWhile
+ ceenv.ad
+ "While"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("While"), mWhile))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mWhile
+ ceenv.ad
+ "Delay"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Delay"), mWhile))
+
+ // 'while' is hit just before each time the guard is called
+ let guardExpr =
+ match spWhile with
+ | DebugPointAtWhile.Yes _ -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mWhile, false, guardExpr)
+ | DebugPointAtWhile.No -> guardExpr
+
+ Some(
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill ->
+ translatedCtxt (
+ mkSynCall
+ "While"
+ mWhile
+ [
+ mkSynDelay2 guardExpr
+ mkSynCall "Delay" mWhile [ mkSynDelay innerComp.Range holeFill ] ceenv.builderValName
+ ]
+ ceenv.builderValName
+ ))
+ )
+
+ | SynExpr.WhileBang(spWhile, guardExpr, innerComp, mOrig) ->
+ let mGuard = guardExpr.Range
+
+ let mWhile =
+ match spWhile with
+ | DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While)
+ | _ -> mGuard
+
+ let mGuard = mGuard.MakeSynthetic()
+
+ // 'while!' is hit just before each time the guard is called
+ let guardExpr =
+ match spWhile with
+ | DebugPointAtWhile.Yes _ -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mWhile, false, guardExpr)
+ | DebugPointAtWhile.No -> guardExpr
+
+ let rewrittenWhileExpr =
+ let idFirst = mkSynId mGuard (CompilerGeneratedName "first")
+ let patFirst = mkSynPatVar None idFirst
+
+ let body =
+ let idCond = mkSynId mGuard (CompilerGeneratedName "cond")
+ let patCond = mkSynPatVar None idCond
+
+ let condBinding =
+ mkSynBinding
+ (Xml.PreXmlDoc.Empty, patCond)
+ (None,
+ false,
+ true,
+ mGuard,
+ DebugPointAtBinding.NoneAtSticky,
+ None,
+ SynExpr.Ident idFirst,
+ mGuard,
+ [],
+ [],
+ None,
+ SynBindingTrivia.Zero)
+
+ let setCondExpr = SynExpr.Set(SynExpr.Ident idCond, SynExpr.Ident idFirst, mGuard)
+
+ let bindCondExpr =
+ SynExpr.LetOrUseBang(
+ DebugPointAtBinding.NoneAtSticky,
+ false,
+ true,
+ patFirst,
+ guardExpr,
+ [],
+ setCondExpr,
+ mGuard,
+ SynExprLetOrUseBangTrivia.Zero
+ )
+
+ let whileExpr =
+ SynExpr.While(
+ DebugPointAtWhile.No,
+ SynExpr.Ident idCond,
+ SynExpr.Sequential(
+ DebugPointAtSequential.SuppressBoth,
+ true,
+ innerComp,
+ bindCondExpr,
+ mWhile,
+ SynExprSequentialTrivia.Zero
+ ),
+ mOrig
+ )
+
+ SynExpr.LetOrUse(false, false, [ condBinding ], whileExpr, mGuard, SynExprLetOrUseTrivia.Zero)
+
+ SynExpr.LetOrUseBang(
+ DebugPointAtBinding.NoneAtSticky,
+ false,
+ true,
+ patFirst,
+ guardExpr,
+ [],
+ body,
+ mGuard,
+ SynExprLetOrUseBangTrivia.Zero
+ )
+
+ TryTranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace rewrittenWhileExpr translatedCtxt
+
+ | SynExpr.TryFinally(innerComp, unwindExpr, _mTryToLast, spTry, spFinally, trivia) ->
+
+ let mTry =
+ match spTry with
+ | DebugPointAtTry.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Try)
+ | _ -> trivia.TryKeyword
+
+ let mFinally =
+ match spFinally with
+ | DebugPointAtFinally.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Finally)
+ | _ -> trivia.FinallyKeyword
+
+ // Put down a debug point for the 'finally'
+ let unwindExpr2 =
+ match spFinally with
+ | DebugPointAtFinally.Yes _ -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mFinally, true, unwindExpr)
+ | DebugPointAtFinally.No -> unwindExpr
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcNoTryFinallyInQuery (), mTry))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mTry
+ ceenv.ad
+ "TryFinally"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("TryFinally"), mTry))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mTry
+ ceenv.ad
+ "Delay"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Delay"), mTry))
+
+ let innerExpr = TranslateComputationExpressionNoQueryOps ceenv innerComp
+
+ let innerExpr =
+ match spTry with
+ | DebugPointAtTry.Yes _ -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mTry, true, innerExpr)
+ | _ -> innerExpr
+
+ Some(
+ translatedCtxt (
+ mkSynCall
+ "TryFinally"
+ mTry
+ [
+ mkSynCall "Delay" mTry [ mkSynDelay innerComp.Range innerExpr ] ceenv.builderValName
+ mkSynDelay2 unwindExpr2
+ ]
+ ceenv.builderValName
+ )
+ )
+
+ | SynExpr.Paren(range = m) -> error (Error(FSComp.SR.tcConstructIsAmbiguousInComputationExpression (), m))
+
+ // In some cases the node produced by `mkSynCall "Zero" m []` may be discarded in the case
+ // of implicit yields - for example "list { 1; 2 }" when each expression checks as an implicit yield.
+ // If it is not discarded, the syntax node will later be checked and the existence/non-existence of the Zero method
+ // will be checked/reported appropriately (though the error message won't mention computation expressions
+ // like our other error messages for missing methods).
+ | SynExpr.ImplicitZero m ->
+ if
+ (not ceenv.enableImplicitYield)
+ && isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "Zero"
+ ceenv.builderTy
+ )
+ then
+ match ceenv.origComp with
+ // builder { }
+ //
+ // The compiler inserts a dummy () in CheckExpressions.fs for
+ // empty-bodied computation expressions. In this case, the user
+ // has not actually written any "control construct" in the body,
+ // and so we use a more specific error message for clarity.
+ | SynExpr.Const(SynConst.Unit, mUnit) when
+ cenv.g.langVersion.SupportsFeature LanguageFeature.EmptyBodiedComputationExpressions
+ && Range.equals mUnit range0
+ ->
+ error (Error(FSComp.SR.tcEmptyBodyRequiresBuilderZeroMethod (), ceenv.mWhole))
+ | _ -> error (Error(FSComp.SR.tcRequireBuilderMethod ("Zero"), m))
+
+ Some(translatedCtxt (mkSynCall "Zero" m [] ceenv.builderValName))
+
+ | OptionalSequential(JoinOrGroupJoinOrZipClause ceenv (_, _, _, _, _, mClause), _) when firstTry = CompExprTranslationPass.Initial ->
+
+ // 'join' clauses preceded by 'let' and other constructs get processed by repackaging with a 'for' loop.
+ let patvs, _env = varSpace.Force comp.Range
+ let varSpaceExpr = mkExprForVarSpace mClause patvs
+ let varSpacePat = mkPatForVarSpace mClause patvs
+
+ let dataCompPrior =
+ translatedCtxt (
+ TranslateComputationExpressionNoQueryOps
+ ceenv
+ (SynExpr.YieldOrReturn((true, false), varSpaceExpr, mClause, SynExprYieldOrReturnTrivia.Zero))
+ )
+
+ // Rebind using for ...
+ let rebind =
+ SynExpr.ForEach(
+ DebugPointAtFor.No,
+ DebugPointAtInOrTo.No,
+ SeqExprOnly false,
+ false,
+ varSpacePat,
+ dataCompPrior,
+ comp,
+ comp.Range
+ )
+
+ // Retry with the 'for' loop packaging. Set firstTry=false just in case 'join' processing fails
+ TryTranslateComputationExpression ceenv CompExprTranslationPass.Subsequent q varSpace rebind id
+
+ | OptionalSequential(CustomOperationClause ceenv (nm, _, opExpr, mClause, _), _) ->
+
+ match q with
+ | CustomOperationsMode.Denied -> error (Error(FSComp.SR.tcCustomOperationMayNotBeUsedHere (), opExpr.Range))
+ | CustomOperationsMode.Allowed ->
+ let patvs, _env = varSpace.Force comp.Range
+ let varSpaceExpr = mkExprForVarSpace mClause patvs
+
+ let dataCompPriorToOp =
+ let isYield = not (customOperationMaintainsVarSpaceUsingBind ceenv nm)
+
+ translatedCtxt (
+ TranslateComputationExpressionNoQueryOps
+ ceenv
+ (SynExpr.YieldOrReturn((isYield, false), varSpaceExpr, mClause, SynExprYieldOrReturnTrivia.Zero))
+ )
+
+ // Now run the consumeCustomOpClauses
+ Some(ConsumeCustomOpClauses ceenv comp q varSpace dataCompPriorToOp comp false mClause)
+
+ | SynExpr.Sequential(sp, true, innerComp1, innerComp2, m, _) ->
+
+ // Check for 'where x > y' and other mis-applications of infix operators. If detected, give a good error message, and just ignore innerComp1
+ if ceenv.isQuery && checkForBinaryApp ceenv innerComp1 then
+ Some(TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp2 translatedCtxt)
+
+ else
+ if ceenv.isQuery && not (innerComp1.IsArbExprAndThusAlreadyReportedError) then
+ match innerComp1 with
+ | SynExpr.JoinIn _ -> ()
+ | SynExpr.DoBang(trivia = { DoBangKeyword = m }) -> errorR (Error(FSComp.SR.tcBindMayNotBeUsedInQueries (), m))
+ | _ -> errorR (Error(FSComp.SR.tcUnrecognizedQueryOperator (), innerComp1.RangeOfFirstPortion))
+
+ match
+ TryTranslateComputationExpression
+ ceenv
+ CompExprTranslationPass.Initial
+ CustomOperationsMode.Denied
+ varSpace
+ innerComp1
+ id
+ with
+ | Some c ->
+ // "cexpr; cexpr" is treated as builder.Combine(cexpr1, cexpr1)
+ let m1 = rangeForCombine innerComp1
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "Combine"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Combine"), m))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "Delay"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Delay"), m))
+
+ let combineCall =
+ mkSynCall
+ "Combine"
+ m1
+ [
+ c
+ mkSynCall
+ "Delay"
+ m1
+ [
+ mkSynDelay innerComp2.Range (TranslateComputationExpressionNoQueryOps ceenv innerComp2)
+ ]
+ ceenv.builderValName
+ ]
+ ceenv.builderValName
+
+ Some(translatedCtxt combineCall)
+
+ | None ->
+ // "do! expr; cexpr" is treated as { let! () = expr in cexpr }
+ match innerComp1 with
+ | SynExpr.DoBang(expr = rhsExpr; range = m) ->
+ let sp =
+ match sp with
+ | DebugPointAtSequential.SuppressExpr -> DebugPointAtBinding.NoneAtDo
+ | DebugPointAtSequential.SuppressBoth -> DebugPointAtBinding.NoneAtDo
+ | DebugPointAtSequential.SuppressStmt -> DebugPointAtBinding.Yes m
+ | DebugPointAtSequential.SuppressNeither -> DebugPointAtBinding.Yes m
+
+ Some(
+ TranslateComputationExpression
+ ceenv
+ CompExprTranslationPass.Initial
+ q
+ varSpace
+ (SynExpr.LetOrUseBang(
+ sp,
+ false,
+ true,
+ SynPat.Const(SynConst.Unit, rhsExpr.Range),
+ rhsExpr,
+ [],
+ innerComp2,
+ m,
+ SynExprLetOrUseBangTrivia.Zero
+ ))
+ translatedCtxt
+ )
+
+ // "expr; cexpr" is treated as sequential execution
+ | _ ->
+ Some(
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp2 (fun holeFill ->
+ let fillExpr =
+ if ceenv.enableImplicitYield then
+ // When implicit yields are enabled, then if the 'innerComp1' checks as type
+ // 'unit' we interpret the expression as a sequential, and when it doesn't
+ // have type 'unit' we interpret it as a 'Yield + Combine'.
+ let combineExpr =
+ let m1 = rangeForCombine innerComp1
+
+ let implicitYieldExpr =
+ mkSynCall "Yield" comp.Range [ innerComp1 ] ceenv.builderValName
+
+ mkSynCall
+ "Combine"
+ m1
+ [
+ implicitYieldExpr
+ mkSynCall "Delay" m1 [ mkSynDelay holeFill.Range holeFill ] ceenv.builderValName
+ ]
+ ceenv.builderValName
+
+ SynExpr.SequentialOrImplicitYield(sp, innerComp1, holeFill, combineExpr, m)
+ else
+ SynExpr.Sequential(sp, true, innerComp1, holeFill, m, SynExprSequentialTrivia.Zero)
+
+ translatedCtxt fillExpr)
+ )
+
+ | SynExpr.IfThenElse(guardExpr, thenComp, elseCompOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia) ->
+ match elseCompOpt with
+ | Some elseComp ->
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcIfThenElseMayNotBeUsedWithinQueries (), trivia.IfToThenRange))
+
+ Some(
+ translatedCtxt (
+ SynExpr.IfThenElse(
+ guardExpr,
+ TranslateComputationExpressionNoQueryOps ceenv thenComp,
+ Some(TranslateComputationExpressionNoQueryOps ceenv elseComp),
+ spIfToThen,
+ isRecovery,
+ mIfToEndOfElseBranch,
+ trivia
+ )
+ )
+ )
+ | None ->
+ let elseComp =
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ trivia.IfToThenRange
+ ceenv.ad
+ "Zero"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Zero"), trivia.IfToThenRange))
+
+ mkSynCall "Zero" trivia.IfToThenRange [] ceenv.builderValName
+
+ Some(
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace thenComp (fun holeFill ->
+ translatedCtxt (
+ SynExpr.IfThenElse(guardExpr, holeFill, Some elseComp, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia)
+ ))
+ )
+
+ // 'let binds in expr'
+ | SynExpr.LetOrUse(isRec, false, binds, innerComp, m, trivia) ->
+
+ // For 'query' check immediately
+ if ceenv.isQuery then
+ match (List.map (BindingNormalization.NormalizeBinding ValOrMemberBinding cenv ceenv.env) binds) with
+ | [ NormalizedBinding(_, SynBindingKind.Normal, false, false, _, _, _, _, _, _, _, _) ] when not isRec -> ()
+ | normalizedBindings ->
+ let failAt m =
+ error (Error(FSComp.SR.tcNonSimpleLetBindingInQuery (), m))
+
+ match normalizedBindings with
+ | NormalizedBinding(mBinding = mBinding) :: _ -> failAt mBinding
+ | _ -> failAt m
+
+ // Add the variables to the query variable space, on demand
+ let varSpace =
+ addVarsToVarSpace varSpace (fun mQueryOp env ->
+ // Normalize the bindings before detecting the bound variables
+ match (List.map (BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env) binds) with
+ | [ NormalizedBinding(kind = SynBindingKind.Normal; shouldInline = false; isMutable = false; pat = pat) ] ->
+ // successful case
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv pat None TcTrueMatchClause.No
+
+ vspecs, envinner
+ | _ ->
+ // error case
+ error (Error(FSComp.SR.tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings (), mQueryOp)))
+
+ Some(
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill ->
+ translatedCtxt (SynExpr.LetOrUse(isRec, false, binds, holeFill, m, trivia)))
+ )
+
+ // 'use x = expr in expr'
+ | SynExpr.LetOrUse(
+ isUse = true
+ bindings = [ SynBinding(kind = SynBindingKind.Normal; headPat = pat; expr = rhsExpr; debugPoint = spBind) ]
+ body = innerComp
+ trivia = { LetOrUseKeyword = mBind }) ->
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcUseMayNotBeUsedInQueries (), mBind))
+
+ let innerCompRange = innerComp.Range
+
+ let consumeExpr =
+ SynExpr.MatchLambda(
+ false,
+ innerCompRange,
+ [
+ SynMatchClause(
+ pat,
+ None,
+ TranslateComputationExpressionNoQueryOps ceenv innerComp,
+ innerCompRange,
+ DebugPointAtTarget.Yes,
+ SynMatchClauseTrivia.Zero
+ )
+ ],
+ DebugPointAtBinding.NoneAtInvisible,
+ innerCompRange
+ )
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ "Using"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Using"), mBind))
+
+ Some(
+ translatedCtxt (mkSynCall "Using" mBind [ rhsExpr; consumeExpr ] ceenv.builderValName)
+ |> addBindDebugPoint spBind
+ )
+
+ // 'let! pat = expr in expr'
+ // --> build.Bind(e1, (fun _argN -> match _argN with pat -> expr))
+ // or
+ // --> build.BindReturn(e1, (fun _argN -> match _argN with pat -> expr-without-return))
+ | SynExpr.LetOrUseBang(
+ bindDebugPoint = spBind
+ isUse = false
+ isFromSource = isFromSource
+ pat = pat
+ rhs = rhsExpr
+ andBangs = []
+ body = innerComp
+ trivia = { LetOrUseBangKeyword = mBind }) ->
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcBindMayNotBeUsedInQueries (), mBind))
+
+ // Add the variables to the query variable space, on demand
+ let varSpace =
+ addVarsToVarSpace varSpace (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv pat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ let rhsExpr =
+ mkSourceExprConditional isFromSource rhsExpr ceenv.sourceMethInfo ceenv.builderValName
+
+ Some(
+ TranslateComputationExpressionBind
+ ceenv
+ comp
+ q
+ varSpace
+ mBind
+ (addBindDebugPoint spBind)
+ "Bind"
+ [ rhsExpr ]
+ pat
+ innerComp
+ translatedCtxt
+ )
+
+ // 'use! pat = e1 in e2' --> build.Bind(e1, (function _argN -> match _argN with pat -> build.Using(x, (fun _argN -> match _argN with pat -> e2))))
+ | SynExpr.LetOrUseBang(
+ bindDebugPoint = spBind
+ isUse = true
+ isFromSource = isFromSource
+ pat = SynPat.Named(ident = SynIdent(id, _); isThisVal = false) as pat
+ rhs = rhsExpr
+ andBangs = []
+ body = innerComp
+ trivia = { LetOrUseBangKeyword = mBind })
+ | SynExpr.LetOrUseBang(
+ bindDebugPoint = spBind
+ isUse = true
+ isFromSource = isFromSource
+ pat = SynPat.LongIdent(longDotId = SynLongIdent(id = [ id ])) as pat
+ rhs = rhsExpr
+ andBangs = []
+ body = innerComp
+ trivia = { LetOrUseBangKeyword = mBind }) ->
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcBindMayNotBeUsedInQueries (), mBind))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ "Using"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Using"), mBind))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ "Bind"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Bind"), mBind))
+
+ let bindExpr =
+ let consumeExpr =
+ SynExpr.MatchLambda(
+ false,
+ mBind,
+ [
+ SynMatchClause(
+ pat,
+ None,
+ TranslateComputationExpressionNoQueryOps ceenv innerComp,
+ innerComp.Range,
+ DebugPointAtTarget.Yes,
+ SynMatchClauseTrivia.Zero
+ )
+ ],
+ DebugPointAtBinding.NoneAtInvisible,
+ mBind
+ )
+
+ let consumeExpr =
+ mkSynCall "Using" mBind [ SynExpr.Ident id; consumeExpr ] ceenv.builderValName
+
+ let consumeExpr =
+ SynExpr.MatchLambda(
+ false,
+ mBind,
+ [
+ SynMatchClause(pat, None, consumeExpr, id.idRange, DebugPointAtTarget.No, SynMatchClauseTrivia.Zero)
+ ],
+ DebugPointAtBinding.NoneAtInvisible,
+ mBind
+ )
+
+ let rhsExpr =
+ mkSourceExprConditional isFromSource rhsExpr ceenv.sourceMethInfo ceenv.builderValName
+
+ mkSynCall "Bind" mBind [ rhsExpr; consumeExpr ] ceenv.builderValName
+ |> addBindDebugPoint spBind
+
+ Some(translatedCtxt bindExpr)
+
+ // 'use! pat = e1 ... in e2' where 'pat' is not a simple name -> error
+ | SynExpr.LetOrUseBang(isUse = true; andBangs = andBangs; trivia = { LetOrUseBangKeyword = mBind }) ->
+ if isNil andBangs then
+ error (Error(FSComp.SR.tcInvalidUseBangBinding (), mBind))
+ else
+ let m =
+ match andBangs with
+ | [] -> comp.Range
+ | h :: _ -> h.Trivia.AndBangKeyword
+
+ error (Error(FSComp.SR.tcInvalidUseBangBindingNoAndBangs (), m))
+
+ // 'let! pat1 = expr1 and! pat2 = expr2 in ...' -->
+ // build.BindN(expr1, expr2, ...)
+ // or
+ // build.BindNReturn(expr1, expr2, ...)
+ // or
+ // build.Bind(build.MergeSources(expr1, expr2), ...)
+ | SynExpr.LetOrUseBang(
+ bindDebugPoint = spBind
+ isUse = false
+ isFromSource = isFromSource
+ pat = letPat
+ rhs = letRhsExpr
+ andBangs = andBangBindings
+ body = innerComp
+ trivia = { LetOrUseBangKeyword = mBind }) ->
+ if not (cenv.g.langVersion.SupportsFeature LanguageFeature.AndBang) then
+ let andBangRange =
+ match andBangBindings with
+ | [] -> comp.Range
+ | h :: _ -> h.Trivia.AndBangKeyword
+
+ error (Error(FSComp.SR.tcAndBangNotSupported (), andBangRange))
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcBindMayNotBeUsedInQueries (), mBind))
+
+ let sources =
+ (letRhsExpr
+ :: [ for SynExprAndBang(body = andExpr) in andBangBindings -> andExpr ])
+ |> List.map (fun expr -> mkSourceExprConditional isFromSource expr ceenv.sourceMethInfo ceenv.builderValName)
+
+ let pats =
+ letPat :: [ for SynExprAndBang(pat = andPat) in andBangBindings -> andPat ]
+
+ let sourcesRange = sources |> List.map (fun e -> e.Range) |> List.reduce unionRanges
+
+ let numSources = sources.Length
+ let bindReturnNName = "Bind" + string numSources + "Return"
+ let bindNName = "Bind" + string numSources
+
+ // Check if this is a Bind2Return etc.
+ let hasBindReturnN =
+ not (
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ bindReturnNName
+ ceenv.builderTy
+ )
+ )
+
+ if
+ hasBindReturnN
+ && Option.isSome (convertSimpleReturnToExpr ceenv comp varSpace innerComp)
+ then
+ let consumePat = SynPat.Tuple(false, pats, [], letPat.Range)
+
+ // Add the variables to the query variable space, on demand
+ let varSpace =
+ addVarsToVarSpace varSpace (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv consumePat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ Some(
+ TranslateComputationExpressionBind
+ ceenv
+ comp
+ q
+ varSpace
+ mBind
+ (addBindDebugPoint spBind)
+ bindNName
+ sources
+ consumePat
+ innerComp
+ translatedCtxt
+ )
+
+ else
+
+ // Check if this is a Bind2 etc.
+ let hasBindN =
+ not (
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ bindNName
+ ceenv.builderTy
+ )
+ )
+
+ if hasBindN then
+ let consumePat = SynPat.Tuple(false, pats, [], letPat.Range)
+
+ // Add the variables to the query variable space, on demand
+ let varSpace =
+ addVarsToVarSpace varSpace (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv consumePat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ Some(
+ TranslateComputationExpressionBind
+ ceenv
+ comp
+ q
+ varSpace
+ mBind
+ (addBindDebugPoint spBind)
+ bindNName
+ sources
+ consumePat
+ innerComp
+ translatedCtxt
+ )
+ else
+
+ // Look for the maximum supported MergeSources, MergeSources3, ...
+ let mkMergeSourcesName n =
+ if n = 2 then
+ "MergeSources"
+ else
+ "MergeSources" + (string n)
+
+ let maxMergeSources =
+ let rec loop (n: int) =
+ let mergeSourcesName = mkMergeSourcesName n
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ mergeSourcesName
+ ceenv.builderTy
+ )
+ then
+ (n - 1)
+ else
+ loop (n + 1)
+
+ loop 2
+
+ if maxMergeSources = 1 then
+ error (Error(FSComp.SR.tcRequireMergeSourcesOrBindN (bindNName), mBind))
+
+ let rec mergeSources (sourcesAndPats: (SynExpr * SynPat) list) =
+ let numSourcesAndPats = sourcesAndPats.Length
+ assert (numSourcesAndPats <> 0)
+
+ if numSourcesAndPats = 1 then
+ sourcesAndPats[0]
+
+ elif numSourcesAndPats <= maxMergeSources then
+
+ // Call MergeSources2(e1, e2), MergeSources3(e1, e2, e3) etc
+ let mergeSourcesName = mkMergeSourcesName numSourcesAndPats
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ mergeSourcesName
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireMergeSourcesOrBindN (bindNName), mBind))
+
+ let source =
+ mkSynCall mergeSourcesName sourcesRange (List.map fst sourcesAndPats) ceenv.builderValName
+
+ let pat = SynPat.Tuple(false, List.map snd sourcesAndPats, [], letPat.Range)
+ source, pat
+
+ else
+
+ // Call MergeSourcesMax(e1, e2, e3, e4, (...))
+ let nowSourcesAndPats, laterSourcesAndPats =
+ List.splitAt (maxMergeSources - 1) sourcesAndPats
+
+ let mergeSourcesName = mkMergeSourcesName maxMergeSources
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mBind
+ ceenv.ad
+ mergeSourcesName
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireMergeSourcesOrBindN (bindNName), mBind))
+
+ let laterSource, laterPat = mergeSources laterSourcesAndPats
+
+ let source =
+ mkSynCall
+ mergeSourcesName
+ sourcesRange
+ (List.map fst nowSourcesAndPats @ [ laterSource ])
+ ceenv.builderValName
+
+ let pat =
+ SynPat.Tuple(false, List.map snd nowSourcesAndPats @ [ laterPat ], [], letPat.Range)
+
+ source, pat
+
+ let mergedSources, consumePat = mergeSources (List.zip sources pats)
+
+ // Add the variables to the query variable space, on demand
+ let varSpace =
+ addVarsToVarSpace varSpace (fun _mCustomOp env ->
+ use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
+
+ let _, _, vspecs, envinner, _ =
+ TcMatchPattern cenv (NewInferenceType cenv.g) env ceenv.tpenv consumePat None TcTrueMatchClause.No
+
+ vspecs, envinner)
+
+ // Build the 'Bind' call
+ Some(
+ TranslateComputationExpressionBind
+ ceenv
+ comp
+ q
+ varSpace
+ mBind
+ (addBindDebugPoint spBind)
+ "Bind"
+ [ mergedSources ]
+ consumePat
+ innerComp
+ translatedCtxt
+ )
+
+ | SynExpr.Match(spMatch, expr, clauses, m, trivia) ->
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcMatchMayNotBeUsedWithQuery (), trivia.MatchKeyword))
+
+ let clauses =
+ clauses
+ |> List.map (fun (SynMatchClause(pat, cond, innerComp, patm, sp, trivia)) ->
+ SynMatchClause(pat, cond, TranslateComputationExpressionNoQueryOps ceenv innerComp, patm, sp, trivia))
+
+ Some(translatedCtxt (SynExpr.Match(spMatch, expr, clauses, m, trivia)))
+
+ // 'match! expr with pats ...' --> build.Bind(e1, (function pats ...))
+ // FUTURE: consider allowing translation to BindReturn
+ | SynExpr.MatchBang(spMatch, expr, clauses, _m, trivia) ->
+ let inputExpr = mkSourceExpr expr ceenv.sourceMethInfo ceenv.builderValName
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcMatchMayNotBeUsedWithQuery (), trivia.MatchBangKeyword))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ trivia.MatchBangKeyword
+ ceenv.ad
+ "Bind"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Bind"), trivia.MatchBangKeyword))
+
+ let clauses =
+ clauses
+ |> List.map (fun (SynMatchClause(pat, cond, innerComp, patm, sp, trivia)) ->
+ SynMatchClause(pat, cond, TranslateComputationExpressionNoQueryOps ceenv innerComp, patm, sp, trivia))
+
+ let consumeExpr =
+ SynExpr.MatchLambda(false, trivia.MatchBangKeyword, clauses, DebugPointAtBinding.NoneAtInvisible, trivia.MatchBangKeyword)
+
+ let callExpr =
+ mkSynCall "Bind" trivia.MatchBangKeyword [ inputExpr; consumeExpr ] ceenv.builderValName
+ |> addBindDebugPoint spMatch
+
+ Some(translatedCtxt callExpr)
+
+ | SynExpr.TryWith(innerComp, clauses, mTryToLast, spTry, spWith, trivia) ->
+ let mTry =
+ match spTry with
+ | DebugPointAtTry.Yes _ -> trivia.TryKeyword.NoteSourceConstruct(NotedSourceConstruct.Try)
+ | _ -> trivia.TryKeyword
+
+ let spWith2 =
+ match spWith with
+ | DebugPointAtWith.Yes _ -> DebugPointAtBinding.Yes trivia.WithKeyword
+ | _ -> DebugPointAtBinding.NoneAtInvisible
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcTryWithMayNotBeUsedInQueries (), mTry))
+
+ let clauses =
+ clauses
+ |> List.map (fun (SynMatchClause(pat, cond, clauseComp, patm, sp, trivia)) ->
+ SynMatchClause(pat, cond, TranslateComputationExpressionNoQueryOps ceenv clauseComp, patm, sp, trivia))
+
+ let consumeExpr =
+ SynExpr.MatchLambda(true, mTryToLast, clauses, spWith2, mTryToLast)
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mTry
+ ceenv.ad
+ "TryWith"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("TryWith"), mTry))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ mTry
+ ceenv.ad
+ "Delay"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("Delay"), mTry))
+
+ let innerExpr = TranslateComputationExpressionNoQueryOps ceenv innerComp
+
+ let innerExpr =
+ match spTry with
+ | DebugPointAtTry.Yes _ -> SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mTry, true, innerExpr)
+ | _ -> innerExpr
+
+ let callExpr =
+ mkSynCall
+ "TryWith"
+ mTry
+ [
+ mkSynCall "Delay" mTry [ mkSynDelay2 innerExpr ] ceenv.builderValName
+ consumeExpr
+ ]
+ ceenv.builderValName
+
+ Some(translatedCtxt callExpr)
+
+ | SynExpr.YieldOrReturnFrom((true, _), synYieldExpr, _, { YieldOrReturnFromKeyword = m }) ->
+ let yieldFromExpr =
+ mkSourceExpr synYieldExpr ceenv.sourceMethInfo ceenv.builderValName
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "YieldFrom"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("YieldFrom"), m))
+
+ let yieldFromCall =
+ mkSynCall "YieldFrom" synYieldExpr.Range [ yieldFromExpr ] ceenv.builderValName
+
+ let yieldFromCall =
+ if IsControlFlowExpression synYieldExpr then
+ yieldFromCall
+ else
+ SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, yieldFromCall)
+
+ Some(translatedCtxt yieldFromCall)
+
+ | SynExpr.YieldOrReturnFrom((false, _), synReturnExpr, _, { YieldOrReturnFromKeyword = m }) ->
+ let returnFromExpr =
+ mkSourceExpr synReturnExpr ceenv.sourceMethInfo ceenv.builderValName
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcReturnMayNotBeUsedInQueries (), m))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "ReturnFrom"
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod ("ReturnFrom"), m))
+
+ let returnFromCall =
+ mkSynCall "ReturnFrom" synReturnExpr.Range [ returnFromExpr ] ceenv.builderValName
+
+ let returnFromCall =
+ if IsControlFlowExpression synReturnExpr then
+ returnFromCall
+ else
+ SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, returnFromCall)
+
+ Some(translatedCtxt returnFromCall)
+
+ | SynExpr.YieldOrReturn((isYield, _), synYieldOrReturnExpr, _, { YieldOrReturnKeyword = m }) ->
+ let methName = (if isYield then "Yield" else "Return")
+
+ if ceenv.isQuery && not isYield then
+ error (Error(FSComp.SR.tcReturnMayNotBeUsedInQueries (), m))
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ cenv
+ ceenv.env
+ m
+ ceenv.ad
+ methName
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod methName, m))
+
+ let yieldOrReturnCall =
+ mkSynCall methName synYieldOrReturnExpr.Range [ synYieldOrReturnExpr ] ceenv.builderValName
+
+ let yieldOrReturnCall =
+ if IsControlFlowExpression synYieldOrReturnExpr then
+ yieldOrReturnCall
+ else
+ SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, yieldOrReturnCall)
+
+ Some(translatedCtxt yieldOrReturnCall)
+
+ | _ -> None
+
+and ConsumeCustomOpClauses
+ (ceenv: ComputationExpressionContext<'a>)
+ (comp: SynExpr)
+ q
+ (varSpace: LazyWithContext<_, _>)
+ dataCompPrior
+ compClausesExpr
+ lastUsesBind
+ mClause
+ =
+
+ // Substitute 'yield ' into the context
+
+ let patvs, _env = varSpace.Force comp.Range
+ let varSpaceSimplePat = mkSimplePatForVarSpace mClause patvs
+ let varSpacePat = mkPatForVarSpace mClause patvs
+
+ match compClausesExpr with
+
+ // Detect one custom operation... This clause will always match at least once...
+ | OptionalSequential(CustomOperationClause ceenv (nm, opDatas, opExpr, mClause, optionalIntoPat), optionalCont) ->
+
+ let opName, _, _, _, _, _, _, _, methInfo = opDatas[0]
+
+ let isLikeZip = customOperationIsLikeZip ceenv nm
+
+ let isLikeJoin = customOperationIsLikeJoin ceenv nm
+
+ let isLikeGroupJoin = customOperationIsLikeZip ceenv nm
+
+ // Record the resolution of the custom operation for posterity
+ let item =
+ Item.CustomOperation(opName, (fun () -> customOpUsageText ceenv nm), Some methInfo)
+
+ // FUTURE: consider whether we can do better than emptyTyparInst here, in order to display instantiations
+ // of type variables in the quick info provided in the IDE.
+ CallNameResolutionSink
+ ceenv.cenv.tcSink
+ (nm.idRange, ceenv.env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ceenv.env.eAccessRights)
+
+ if isLikeZip || isLikeJoin || isLikeGroupJoin then
+ errorR (Error(FSComp.SR.tcBinaryOperatorRequiresBody (nm.idText, Option.get (customOpUsageText ceenv nm)), nm.idRange))
+
+ match optionalCont with
+ | None ->
+ // we are about to drop the 'opExpr' AST on the floor. we've already reported an error. attempt to get name resolutions before dropping it
+ RecordNameAndTypeResolutions ceenv.cenv ceenv.env ceenv.tpenv opExpr
+ dataCompPrior
+ | Some contExpr -> ConsumeCustomOpClauses ceenv comp q varSpace dataCompPrior contExpr lastUsesBind mClause
+ else
+
+ let maintainsVarSpace = customOperationMaintainsVarSpace ceenv nm
+
+ let maintainsVarSpaceUsingBind = customOperationMaintainsVarSpaceUsingBind ceenv nm
+
+ let expectedArgCount = tryExpectedArgCountForCustomOperator ceenv nm
+
+ let dataCompAfterOp =
+ match opExpr with
+ | StripApps(SingleIdent nm, args) ->
+ let argCountsMatch =
+ match expectedArgCount with
+ | Some n -> n = args.Length
+ | None -> ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations
+
+ if argCountsMatch then
+ // Check for the [] attribute on each argument position
+ let args =
+ args
+ |> List.mapi (fun i arg ->
+ if isCustomOperationProjectionParameter ceenv (i + 1) nm then
+ SynExpr.Lambda(
+ false,
+ false,
+ varSpaceSimplePat,
+ arg,
+ None,
+ arg.Range.MakeSynthetic(),
+ SynExprLambdaTrivia.Zero
+ )
+ else
+ arg)
+
+ mkSynCall methInfo.DisplayName mClause (dataCompPrior :: args) ceenv.builderValName
+ else
+ let expectedArgCount = defaultArg expectedArgCount 0
+
+ errorR (
+ Error(FSComp.SR.tcCustomOperationHasIncorrectArgCount (nm.idText, expectedArgCount, args.Length), nm.idRange)
+ )
+
+ mkSynCall
+ methInfo.DisplayName
+ mClause
+ ([ dataCompPrior ]
+ @ List.init expectedArgCount (fun i -> arbExpr ("_arg" + string i, mClause)))
+ ceenv.builderValName
+ | _ -> failwith "unreachable"
+
+ match optionalCont with
+ | None ->
+ match optionalIntoPat with
+ | Some intoPat -> errorR (Error(FSComp.SR.tcIntoNeedsRestOfQuery (), intoPat.Range))
+ | None -> ()
+
+ dataCompAfterOp
+
+ | Some contExpr ->
+
+ // select a.Name into name; ...
+ // distinct into d; ...
+ //
+ // Rebind the into pattern and process the rest of the clauses
+ match optionalIntoPat with
+ | Some intoPat ->
+ if not (customOperationAllowsInto ceenv nm) then
+ error (Error(FSComp.SR.tcOperatorDoesntAcceptInto (nm.idText), intoPat.Range))
+
+ // Rebind using either for ... or let!....
+ let rebind =
+ if maintainsVarSpaceUsingBind then
+ SynExpr.LetOrUseBang(
+ DebugPointAtBinding.NoneAtLet,
+ false,
+ false,
+ intoPat,
+ dataCompAfterOp,
+ [],
+ contExpr,
+ intoPat.Range,
+ SynExprLetOrUseBangTrivia.Zero
+ )
+ else
+ SynExpr.ForEach(
+ DebugPointAtFor.No,
+ DebugPointAtInOrTo.No,
+ SeqExprOnly false,
+ false,
+ intoPat,
+ dataCompAfterOp,
+ contExpr,
+ intoPat.Range
+ )
+
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q ceenv.emptyVarSpace rebind id
+
+ // select a.Name; ...
+ // distinct; ...
+ //
+ // Process the rest of the clauses
+ | None ->
+ if maintainsVarSpace || maintainsVarSpaceUsingBind then
+ ConsumeCustomOpClauses ceenv comp q varSpace dataCompAfterOp contExpr maintainsVarSpaceUsingBind mClause
+ else
+ ConsumeCustomOpClauses ceenv comp q ceenv.emptyVarSpace dataCompAfterOp contExpr false mClause
+
+ // No more custom operator clauses in compClausesExpr, but there may be clauses like join, yield etc.
+ // Bind/iterate the dataCompPrior and use compClausesExpr as the body.
+ | _ ->
+ // Rebind using either for ... or let!....
+ let rebind =
+ if lastUsesBind then
+ SynExpr.LetOrUseBang(
+ DebugPointAtBinding.NoneAtLet,
+ false,
+ false,
+ varSpacePat,
+ dataCompPrior,
+ [],
+ compClausesExpr,
+ compClausesExpr.Range,
+ SynExprLetOrUseBangTrivia.Zero
+ )
+ else
+ SynExpr.ForEach(
+ DebugPointAtFor.No,
+ DebugPointAtInOrTo.No,
+ SeqExprOnly false,
+ false,
+ varSpacePat,
+ dataCompPrior,
+ compClausesExpr,
+ compClausesExpr.Range
+ )
+
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace rebind id
+
+and TranslateComputationExpressionNoQueryOps ceenv comp =
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial CustomOperationsMode.Denied ceenv.emptyVarSpace comp id
+
+and TranslateComputationExpressionBind
+ (ceenv: ComputationExpressionContext<'a>)
+ comp
+ q
+ varSpace
+ bindRange
+ addBindDebugPoint
+ bindName
+ (bindArgs: SynExpr list)
+ (consumePat: SynPat)
+ (innerComp: SynExpr)
+ translatedCtxt
+ =
+
+ let innerRange = innerComp.Range
+
+ let innerCompReturn =
+ if ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.AndBang then
+ convertSimpleReturnToExpr ceenv comp varSpace innerComp
+ else
+ None
+
+ match innerCompReturn with
+ | Some(innerExpr, customOpInfo) when
+ (let bindName = bindName + "Return"
+
+ not (
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ ceenv.cenv
+ ceenv.env
+ bindRange
+ ceenv.ad
+ bindName
+ ceenv.builderTy
+ )
+ ))
+ ->
+
+ let bindName = bindName + "Return"
+
+ // Build the `BindReturn` call
+ let dataCompPriorToOp =
+ let consumeExpr =
+ SynExpr.MatchLambda(
+ false,
+ consumePat.Range,
+ [
+ SynMatchClause(consumePat, None, innerExpr, innerRange, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)
+ ],
+ DebugPointAtBinding.NoneAtInvisible,
+ innerRange
+ )
+
+ translatedCtxt (mkSynCall bindName bindRange (bindArgs @ [ consumeExpr ]) ceenv.builderValName)
+
+ match customOpInfo with
+ | None -> dataCompPriorToOp
+ | Some(innerComp, mClause) ->
+ // If the `BindReturn` was forced by a custom operation, continue to process the clauses of the CustomOp
+ ConsumeCustomOpClauses ceenv comp q varSpace dataCompPriorToOp innerComp false mClause
+
+ | _ ->
+
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ ceenv.cenv
+ ceenv.env
+ bindRange
+ ceenv.ad
+ bindName
+ ceenv.builderTy
+ )
+ then
+ error (Error(FSComp.SR.tcRequireBuilderMethod (bindName), bindRange))
+
+ // Build the `Bind` call
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill ->
+ let consumeExpr =
+ SynExpr.MatchLambda(
+ false,
+ consumePat.Range,
+ [
+ SynMatchClause(consumePat, None, holeFill, innerRange, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero)
+ ],
+ DebugPointAtBinding.NoneAtInvisible,
+ innerRange
+ )
+
+ let bindCall =
+ mkSynCall bindName bindRange (bindArgs @ [ consumeExpr ]) ceenv.builderValName
+
+ translatedCtxt (bindCall |> addBindDebugPoint))
+
+/// This function is for desugaring into .Bind{N}Return calls if possible
+/// The outer option indicates if .BindReturn is possible. When it returns None, .BindReturn cannot be used
+/// The inner option indicates if a custom operation is involved inside
+and convertSimpleReturnToExpr (ceenv: ComputationExpressionContext<'a>) comp varSpace innerComp =
+ match innerComp with
+ | SynExpr.YieldOrReturn((false, _), returnExpr, m, _) ->
+ let returnExpr = SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, false, returnExpr)
+ Some(returnExpr, None)
+
+ | SynExpr.Match(spMatch, expr, clauses, m, trivia) ->
+ let clauses =
+ clauses
+ |> List.map (fun (SynMatchClause(pat, cond, innerComp2, patm, sp, trivia)) ->
+ match convertSimpleReturnToExpr ceenv comp varSpace innerComp2 with
+ | None -> None // failure
+ | Some(_, Some _) -> None // custom op on branch = failure
+ | Some(innerExpr2, None) -> Some(SynMatchClause(pat, cond, innerExpr2, patm, sp, trivia)))
+
+ if clauses |> List.forall Option.isSome then
+ Some(SynExpr.Match(spMatch, expr, (clauses |> List.map Option.get), m, trivia), None)
+ else
+ None
+
+ | SynExpr.IfThenElse(guardExpr, thenComp, elseCompOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia) ->
+ match convertSimpleReturnToExpr ceenv comp varSpace thenComp with
+ | None -> None
+ | Some(_, Some _) -> None
+ | Some(thenExpr, None) ->
+ let elseExprOptOpt =
+ match elseCompOpt with
+ // When we are missing an 'else' part alltogether in case of 'if cond then return exp', we fallback from BindReturn into regular Bind+Return
+ | None -> None
+ | Some elseComp ->
+ match convertSimpleReturnToExpr ceenv comp varSpace elseComp with
+ | None -> None // failure
+ | Some(_, Some _) -> None // custom op on branch = failure
+ | Some(elseExpr, None) -> Some(Some elseExpr)
+
+ match elseExprOptOpt with
+ | None -> None
+ | Some elseExprOpt ->
+ Some(SynExpr.IfThenElse(guardExpr, thenExpr, elseExprOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia), None)
+
+ | SynExpr.LetOrUse(isRec, false, binds, innerComp, m, trivia) ->
+ match convertSimpleReturnToExpr ceenv comp varSpace innerComp with
+ | None -> None
+ | Some(_, Some _) -> None
+ | Some(innerExpr, None) -> Some(SynExpr.LetOrUse(isRec, false, binds, innerExpr, m, trivia), None)
+
+ | OptionalSequential(CustomOperationClause ceenv (nm, _, _, mClause, _), _) when customOperationMaintainsVarSpaceUsingBind ceenv nm ->
+
+ let patvs, _env = varSpace.Force comp.Range
+ let varSpaceExpr = mkExprForVarSpace mClause patvs
+
+ Some(varSpaceExpr, Some(innerComp, mClause))
+
+ | SynExpr.Sequential(sp, true, innerComp1, innerComp2, m, trivia) ->
+
+ // Check the first part isn't a computation expression construct
+ if (isSimpleExpr ceenv innerComp1) then
+ // Check the second part is a simple return
+ match convertSimpleReturnToExpr ceenv comp varSpace innerComp2 with
+ | None -> None
+ | Some(innerExpr2, optionalCont) -> Some(SynExpr.Sequential(sp, true, innerComp1, innerExpr2, m, trivia), optionalCont)
+ else
+ None
+
+ | _ -> None
+
+/// Check if an expression has no computation expression constructs
+and isSimpleExpr ceenv comp =
+
+ match comp with
+ | ForEachThenJoinOrGroupJoinOrZipClause ceenv false _ -> false
+ | SynExpr.ForEach _ -> false
+ | SynExpr.For _ -> false
+ | SynExpr.While _ -> false
+ | SynExpr.WhileBang _ -> false
+ | SynExpr.TryFinally _ -> false
+ | SynExpr.ImplicitZero _ -> false
+ | OptionalSequential(JoinOrGroupJoinOrZipClause ceenv _, _) -> false
+ | OptionalSequential(CustomOperationClause ceenv _, _) -> false
+ | SynExpr.Sequential(expr1 = innerComp1; expr2 = innerComp2) -> isSimpleExpr ceenv innerComp1 && isSimpleExpr ceenv innerComp2
+ | SynExpr.IfThenElse(thenExpr = thenComp; elseExpr = elseCompOpt) ->
+ isSimpleExpr ceenv thenComp
+ && (match elseCompOpt with
+ | None -> true
+ | Some c -> isSimpleExpr ceenv c)
+ | SynExpr.LetOrUse(body = innerComp) -> isSimpleExpr ceenv innerComp
+ | SynExpr.LetOrUseBang _ -> false
+ | SynExpr.Match(clauses = clauses) ->
+ clauses
+ |> List.forall (fun (SynMatchClause(resultExpr = innerComp)) -> isSimpleExpr ceenv innerComp)
+ | SynExpr.MatchBang _ -> false
+ | SynExpr.TryWith(tryExpr = innerComp; withCases = clauses) ->
+ isSimpleExpr ceenv innerComp
+ && clauses
+ |> List.forall (fun (SynMatchClause(resultExpr = clauseComp)) -> isSimpleExpr ceenv clauseComp)
+ | SynExpr.YieldOrReturnFrom _ -> false
+ | SynExpr.YieldOrReturn _ -> false
+ | SynExpr.DoBang _ -> false
+ | _ -> true
+
+and TranslateComputationExpression (ceenv: ComputationExpressionContext<'a>) firstTry q varSpace comp translatedCtxt =
+
+ ceenv.cenv.stackGuard.Guard
+ <| fun () ->
+ match TryTranslateComputationExpression ceenv firstTry q varSpace comp translatedCtxt with
+ | Some e -> e
+ | None ->
+ // This only occurs in final position in a sequence
+ match comp with
+ // "do! expr;" in final position is treated as { let! () = expr in return () } when Return is provided (and no Zero with Default attribute is available) or as { let! () = expr in zero } otherwise
+ | SynExpr.DoBang(expr = rhsExpr; trivia = { DoBangKeyword = m }) ->
+ let mUnit = rhsExpr.Range
+ let rhsExpr = mkSourceExpr rhsExpr ceenv.sourceMethInfo ceenv.builderValName
+
+ if ceenv.isQuery then
+ error (Error(FSComp.SR.tcBindMayNotBeUsedInQueries (), m))
+
+ let bodyExpr =
+ if
+ isNil (
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ ceenv.cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "Return"
+ ceenv.builderTy
+ )
+ then
+ SynExpr.ImplicitZero m
+ else
+ match
+ TryFindIntrinsicOrExtensionMethInfo
+ ResultCollectionSettings.AtMostOneResult
+ ceenv.cenv
+ ceenv.env
+ m
+ ceenv.ad
+ "Zero"
+ ceenv.builderTy
+ with
+ | minfo :: _ when MethInfoHasAttribute ceenv.cenv.g m ceenv.cenv.g.attrib_DefaultValueAttribute minfo ->
+ SynExpr.ImplicitZero m
+ | _ -> SynExpr.YieldOrReturn((false, true), SynExpr.Const(SynConst.Unit, m), m, SynExprYieldOrReturnTrivia.Zero)
+
+ let letBangBind =
+ SynExpr.LetOrUseBang(
+ DebugPointAtBinding.NoneAtDo,
+ false,
+ false,
+ SynPat.Const(SynConst.Unit, mUnit),
+ rhsExpr,
+ [],
+ bodyExpr,
+ m,
+ SynExprLetOrUseBangTrivia.Zero
+ )
+
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace letBangBind translatedCtxt
+
+ // "expr;" in final position is treated as { expr; zero }
+ // Suppress the sequence point on the "zero"
+ | _ ->
+ // Check for 'where x > y' and other mis-applications of infix operators. If detected, give a good error message, and just ignore comp
+ if ceenv.isQuery && checkForBinaryApp ceenv comp then
+ TranslateComputationExpression
+ ceenv
+ CompExprTranslationPass.Initial
+ q
+ varSpace
+ (SynExpr.ImplicitZero comp.Range)
+ translatedCtxt
+ else
+ if ceenv.isQuery && not comp.IsArbExprAndThusAlreadyReportedError then
+ match comp with
+ | SynExpr.JoinIn _ -> () // an error will be reported later when we process innerComp1 as a sequential
+ | _ -> errorR (Error(FSComp.SR.tcUnrecognizedQueryOperator (), comp.RangeOfFirstPortion))
+
+ TranslateComputationExpression
+ ceenv
+ CompExprTranslationPass.Initial
+ q
+ varSpace
+ (SynExpr.ImplicitZero comp.Range)
+ (fun holeFill ->
+ let fillExpr =
+ if ceenv.enableImplicitYield then
+ let implicitYieldExpr = mkSynCall "Yield" comp.Range [ comp ] ceenv.builderValName
+
+ SynExpr.SequentialOrImplicitYield(
+ DebugPointAtSequential.SuppressExpr,
+ comp,
+ holeFill,
+ implicitYieldExpr,
+ comp.Range
+ )
+ else
+ SynExpr.Sequential(
+ DebugPointAtSequential.SuppressExpr,
+ true,
+ comp,
+ holeFill,
+ comp.Range,
+ SynExprSequentialTrivia.Zero
+ )
+
+ translatedCtxt fillExpr)
+
+/// Used for all computation expressions except sequence expressions
+let TcComputationExpression (cenv: TcFileState) env (overallTy: OverallTy) tpenv (mWhole, interpExpr: Expr, builderTy, comp: SynExpr) =
+ let overallTy = overallTy.Commit
+
+ let ad = env.eAccessRights
+
+ let builderValName = CompilerGeneratedName "builder"
+ let mBuilderVal = interpExpr.Range
+
+ // Give bespoke error messages for the FSharp.Core "query" builder
+ let isQuery =
+ match stripDebugPoints interpExpr with
+ // An unparameterized custom builder, e.g., `query`, `async`.
+ | Expr.Val(vref, _, m)
+ // A parameterized custom builder, e.g., `builder<…>`, `builder ()`.
+ | Expr.App(funcExpr = Expr.Val(vref, _, m)) when not vref.IsMember || vref.IsConstructor ->
+ let item = Item.CustomBuilder(vref.DisplayName, vref)
+ CallNameResolutionSink cenv.tcSink (m, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
+ valRefEq cenv.g vref cenv.g.query_value_vref
+ | _ -> false
+
+ let sourceMethInfo =
+ TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad "Source" builderTy
+
+ /// Decide if the builder is an auto-quote builder
+ let isAutoQuote = hasMethInfo "Quote" cenv env mBuilderVal ad builderTy
+
+ let customOperationMethods =
+ getCustomOperationMethods cenv env ad mBuilderVal builderTy
+
+ /// Decide if the identifier represents a use of a custom query operator
+ let hasCustomOperations =
+ match customOperationMethods with
+ | [] -> CustomOperationsMode.Denied
+ | _ -> CustomOperationsMode.Allowed
+
+ let customOperationMethodsIndexedByKeyword =
+ if cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations then
+ customOperationMethods
+ |> Seq.groupBy (fun (nm, _, _, _, _, _, _, _, _) -> nm)
+ |> Seq.map (fun (nm, group) -> (nm, Seq.toList group))
+ else
+ customOperationMethods
+ |> Seq.groupBy (fun (nm, _, _, _, _, _, _, _, _) -> nm)
+ |> Seq.map (fun (nm, group) -> (nm, Seq.toList group))
+ |> dict
+
+ // Check for duplicates by method name (keywords and method names must be 1:1)
+ let customOperationMethodsIndexedByMethodName =
+ if cenv.g.langVersion.SupportsFeature LanguageFeature.OverloadsForCustomOperations then
+ customOperationMethods
+ |> Seq.groupBy (fun (_, _, _, _, _, _, _, _, methInfo) -> methInfo.LogicalName)
+ |> Seq.map (fun (nm, group) -> (nm, Seq.toList group))
+ else
+ customOperationMethods
+ |> Seq.groupBy (fun (_, _, _, _, _, _, _, _, methInfo) -> methInfo.LogicalName)
+ |> Seq.map (fun (nm, group) -> (nm, Seq.toList group))
+ |> dict
+
+ // If there are no 'yield' in the computation expression, and the builder supports 'Yield',
+ // then allow the type-directed rule interpreting non-unit-typed expressions in statement
+ // positions as 'yield'. 'yield!' may be present in the computation expression.
+ let enableImplicitYield =
+ cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
+ && (hasMethInfo "Yield" cenv env mBuilderVal ad builderTy
+ && hasMethInfo "Combine" cenv env mBuilderVal ad builderTy
+ && hasMethInfo "Delay" cenv env mBuilderVal ad builderTy
+ && YieldFree cenv comp)
+
+ let origComp = comp
+
+ let ceenv =
+ {
+ cenv = cenv
+ env = env
+ tpenv = tpenv
+ customOperationMethodsIndexedByKeyword = customOperationMethodsIndexedByKeyword
+ customOperationMethodsIndexedByMethodName = customOperationMethodsIndexedByMethodName
+ sourceMethInfo = sourceMethInfo
+ builderValName = builderValName
+ ad = ad
+ builderTy = builderTy
+ isQuery = isQuery
+ enableImplicitYield = enableImplicitYield
+ origComp = origComp
+ mWhole = mWhole
+ emptyVarSpace = LazyWithContext.NotLazy([], env)
+ }
+
+ /// Inside the 'query { ... }' use a modified name environment that contains fake 'CustomOperation' entries
+ /// for all custom operations. This adds them to the completion lists and prevents them being used as values inside
+ /// the query.
+ let env =
+ if List.isEmpty customOperationMethods then
+ env
+ else
+ { env with
+ eNameResEnv =
+ (env.eNameResEnv, customOperationMethods)
+ ||> Seq.fold (fun nenv (nm, _, _, _, _, _, _, _, methInfo) ->
+ AddFakeNameToNameEnv
+ nm
+ nenv
+ (Item.CustomOperation(nm, (fun () -> customOpUsageText ceenv (ident (nm, mBuilderVal))), Some methInfo)))
+ }
+
+ // Environment is needed for completions
+ CallEnvSink cenv.tcSink (comp.Range, env.NameEnv, ad)
+
+ let ceenv = { ceenv with env = env }
+
+ let basicSynExpr =
+ TranslateComputationExpression ceenv CompExprTranslationPass.Initial hasCustomOperations (LazyWithContext.NotLazy([], env)) comp id
+
+ let mDelayOrQuoteOrRun =
+ mBuilderVal
+ .NoteSourceConstruct(NotedSourceConstruct.DelayOrQuoteOrRun)
+ .MakeSynthetic()
+
+ // Add a call to 'Delay' if the method is present
+ let delayedExpr =
+ match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad "Delay" builderTy with
+ | [] -> basicSynExpr
+ | _ -> mkSynCall "Delay" mDelayOrQuoteOrRun [ (mkSynDelay2 basicSynExpr) ] builderValName
+
+ // Add a call to 'Quote' if the method is present
+ let quotedSynExpr =
+ if isAutoQuote then
+ SynExpr.Quote(mkSynIdGet mDelayOrQuoteOrRun (CompileOpName "<@ @>"), false, delayedExpr, true, mWhole)
+ else
+ delayedExpr
+
+ // Add a call to 'Run' if the method is present
+ let runExpr =
+ match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBuilderVal ad "Run" builderTy with
+ | [] -> quotedSynExpr
+ | _ -> mkSynCall "Run" mDelayOrQuoteOrRun [ quotedSynExpr ] builderValName
+
+ let lambdaExpr =
+ SynExpr.Lambda(
+ false,
+ false,
+ SynSimplePats.SimplePats([ mkSynSimplePatVar false (mkSynId mBuilderVal builderValName) ], [], mBuilderVal),
+ runExpr,
+ None,
+ mBuilderVal,
+ SynExprLambdaTrivia.Zero
+ )
+
+ let env =
+ match comp with
+ | SynExpr.YieldOrReturn(flags = (true, _)) ->
+ { env with
+ eContextInfo = ContextInfo.YieldInComputationExpression
+ }
+ | SynExpr.YieldOrReturn(flags = (_, true)) ->
+ { env with
+ eContextInfo = ContextInfo.ReturnInComputationExpression
+ }
+ | _ -> env
+
+ let lambdaExpr, tpenv =
+ TcExpr cenv (MustEqual(mkFunTy cenv.g builderTy overallTy)) env tpenv lambdaExpr
+
+ // beta-var-reduce to bind the builder using a 'let' binding
+ let coreExpr =
+ mkApps cenv.g ((lambdaExpr, tyOfExpr cenv.g lambdaExpr), [], [ interpExpr ], mBuilderVal)
+
+ coreExpr, tpenv
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fsi b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckComputationExpressions.fsi
similarity index 55%
rename from src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fsi
rename to src/fcs-fable/src/Compiler/Checking/Expressions/CheckComputationExpressions.fsi
index e9f24dfb15..ac9554252f 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckComputationExpressions.fsi
@@ -8,24 +8,6 @@ open FSharp.Compiler.Syntax
open FSharp.Compiler.Text
open FSharp.Compiler.TypedTree
-val TcSequenceExpressionEntry:
- cenv: TcFileState ->
- env: TcEnv ->
- overallTy: OverallTy ->
- tpenv: UnscopedTyparEnv ->
- hasBuilder: bool * comp: SynExpr ->
- m: range ->
- Expr * UnscopedTyparEnv
-
-val TcArrayOrListComputedExpression:
- cenv: TcFileState ->
- env: TcEnv ->
- overallTy: OverallTy ->
- tpenv: UnscopedTyparEnv ->
- isArray: bool * comp: SynExpr ->
- m: range ->
- Expr * UnscopedTyparEnv
-
val TcComputationExpression:
cenv: TcFileState ->
env: TcEnv ->
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressions.fs
similarity index 91%
rename from src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs
rename to src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressions.fs
index 69189a7313..0dec31f31b 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressions.fs
@@ -6,6 +6,7 @@ module internal FSharp.Compiler.CheckExpressions
open System
open System.Collections.Generic
+open System.Text.RegularExpressions
open Internal.Utilities.Collections
open Internal.Utilities.Library
@@ -17,6 +18,7 @@ open FSharp.Compiler.AbstractIL.IL
open FSharp.Compiler.AccessibilityLogic
open FSharp.Compiler.AttributeChecking
open FSharp.Compiler.CheckBasics
+open FSharp.Compiler.CheckExpressionsOps
open FSharp.Compiler.CheckRecordSyntaxHelpers
open FSharp.Compiler.ConstraintSolver
open FSharp.Compiler.DiagnosticsLogger
@@ -41,6 +43,7 @@ open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.TypeHierarchy
open FSharp.Compiler.TypeRelations
+open Import
#if !NO_TYPEPROVIDERS
open FSharp.Compiler.TypeProviders
@@ -94,7 +97,7 @@ exception UnionPatternsBindDifferentNames of range
exception VarBoundTwice of Ident
-exception ValueRestriction of DisplayEnv * InfoReader * bool * Val * Typar * range
+exception ValueRestriction of DisplayEnv * InfoReader * Val * Typar * range
exception ValNotMutable of DisplayEnv * ValRef * range
@@ -140,6 +143,47 @@ exception StandardOperatorRedefinitionWarning of string * range
exception InvalidInternalsVisibleToAssemblyName of badName: string * fileName: string option
+//----------------------------------------------------------------------------------------------
+// Helpers for determining if/what specifiers a string has.
+// Used to decide if interpolated string can be lowered to a concat call.
+// We don't care about single- vs multi-$ strings here, because lexer took care of that already.
+//----------------------------------------------------------------------------------------------
+[]
+let (|HasFormatSpecifier|_|) (s: string) =
+ if
+ Regex.IsMatch(
+ s,
+ // Regex pattern for something like: %[flags][width][.precision][type]
+ """
+ (^|[^%]) # Start with beginning of string or any char other than '%'
+ (%%)*% # followed by an odd number of '%' chars
+ [+-0 ]{0,3} # optionally followed by flags
+ (\d+)? # optionally followed by width
+ (\.\d+)? # optionally followed by .precision
+ [bscdiuxXoBeEfFgGMOAat] # and then a char that determines specifier's type
+ """,
+ RegexOptions.Compiled ||| RegexOptions.IgnorePatternWhitespace)
+ then
+ ValueSome HasFormatSpecifier
+ else
+ ValueNone
+
+// Removes trailing "%s" unless it was escaped by another '%' (checks for odd sequence of '%' before final "%s")
+let (|WithTrailingStringSpecifierRemoved|) (s: string) =
+ if s.EndsWith "%s" then
+#if FABLE_COMPILER
+ let i = s[..(s.Length - 3)].TrimEnd('%').Length - 1
+#else
+ let i = s.AsSpan(0, s.Length - 2).LastIndexOfAnyExcept '%'
+#endif
+ let diff = s.Length - 2 - i
+ if diff &&& 1 <> 0 then
+ s[..i]
+ else
+ s
+ else
+ s
+
/// Compute the available access rights from a particular location in code
let ComputeAccessRights eAccessPath eInternalsVisibleCompPaths eFamilyType =
AccessibleFrom (eAccessPath :: eInternalsVisibleCompPaths, eFamilyType)
@@ -411,7 +455,7 @@ type CheckedBindingInfo =
valAttribs: Attribs *
xmlDoc: XmlDoc *
tcPatPhase2: (TcPatPhase2Input -> Pattern) *
- exlicitTyparInfo: ExplicitTyparInfo *
+ explicitTyparInfo: ExplicitTyparInfo *
nameToPrelimValSchemeMap: NameMap *
rhsExprChecked: Expr *
argAndRetAttribs: ArgAndRetAttribs *
@@ -428,13 +472,6 @@ type CheckedBindingInfo =
type cenv = TcFileState
-let CopyAndFixupTypars g m rigid tpsorig =
- FreshenAndFixupTypars g m rigid [] [] tpsorig
-
-let UnifyTypes (cenv: cenv) (env: TcEnv) m expectedTy actualTy =
- let g = cenv.g
- AddCxTypeEqualsType env.eContextInfo env.DisplayEnv cenv.css m (tryNormalizeMeasureInType g expectedTy) (tryNormalizeMeasureInType g actualTy)
-
// If the overall type admits subsumption or type directed conversion, and the original unify would have failed,
// then allow subsumption or type directed conversion.
//
@@ -446,7 +483,8 @@ let UnifyOverallType (cenv: cenv) (env: TcEnv) m overallTy actualTy =
| MustConvertTo(isMethodArg, reqdTy) when g.langVersion.SupportsFeature LanguageFeature.AdditionalTypeDirectedConversions ->
let actualTy = tryNormalizeMeasureInType g actualTy
let reqdTy = tryNormalizeMeasureInType g reqdTy
- if AddCxTypeEqualsTypeUndoIfFailed env.DisplayEnv cenv.css m reqdTy actualTy then
+ let reqTyForUnification = reqTyForArgumentNullnessInference g actualTy reqdTy
+ if AddCxTypeEqualsTypeUndoIfFailed env.DisplayEnv cenv.css m reqTyForUnification actualTy then
()
else
// try adhoc type-directed conversions
@@ -637,7 +675,7 @@ let UnifyFunctionTypeUndoIfFailed (cenv: cenv) denv m ty =
| ValueNone ->
let domainTy = NewInferenceType g
let resultTy = NewInferenceType g
- if AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty (mkFunTy g domainTy resultTy) then
+ if AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty (mkFunTy g domainTy resultTy) then
ValueSome(domainTy, resultTy)
else
ValueNone
@@ -699,7 +737,7 @@ let UnifyUnitType (cenv: cenv) (env: TcEnv) m ty expr =
else
let domainTy = NewInferenceType g
let resultTy = NewInferenceType g
- if AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty (mkFunTy g domainTy resultTy) then
+ if AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty (mkFunTy g domainTy resultTy) then
warning (FunctionValueUnexpected(denv, ty, m))
else
let reportImplicitlyDiscardError() =
@@ -740,7 +778,7 @@ module AttributeTargets =
let ForNewConstructors tcSink (env: TcEnv) mObjTy methodName meths =
let origItem = Item.CtorGroup(methodName, meths)
- let callSink (item, minst) = CallMethodGroupNameResolutionSink tcSink (mObjTy, env.NameEnv, item, origItem, minst, ItemOccurence.Use, env.AccessRights)
+ let callSink (item, minst) = CallMethodGroupNameResolutionSink tcSink (mObjTy, env.NameEnv, item, origItem, minst, ItemOccurrence.Use, env.AccessRights)
let sendToSink minst refinedMeths = callSink (Item.CtorGroup(methodName, refinedMeths), minst)
match meths with
| [] ->
@@ -767,7 +805,7 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst =
| SynMeasure.One _ -> Measure.One
| SynMeasure.Named(tc, m) ->
let ad = env.eAccessRights
- let _, tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Use OpenQualified env.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No)
+ let _, tcref, _ = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.Use OpenQualified env.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No)
match tcref.TypeOrMeasureKind with
| TyparKind.Type -> error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m))
| TyparKind.Measure -> Measure.Const tcref
@@ -792,10 +830,10 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst =
let measureTy =
match synConst with
| SynConst.Measure(synMeasure = SynMeasure.Anon _) ->
- (mkAppTy tcr [TType_measure (Measure.Var (NewAnonTypar (TyparKind.Measure, m, TyparRigidity.Anon, (if iszero then TyparStaticReq.None else TyparStaticReq.HeadType), TyparDynamicReq.No)))])
+ (mkWoNullAppTy tcr [TType_measure (Measure.Var (NewAnonTypar (TyparKind.Measure, m, TyparRigidity.Anon, (if iszero then TyparStaticReq.None else TyparStaticReq.HeadType), TyparDynamicReq.No)))])
- | SynConst.Measure(synMeasure = ms) -> mkAppTy tcr [TType_measure (tcMeasure ms)]
- | _ -> mkAppTy tcr [TType_measure Measure.One]
+ | SynConst.Measure(synMeasure = ms) -> mkWoNullAppTy tcr [TType_measure (tcMeasure ms)]
+ | _ -> mkWoNullAppTy tcr [TType_measure Measure.One]
unif measureTy
let expandedMeasurablesEnabled =
@@ -815,7 +853,7 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst =
unif g.float_ty
Const.Double f
| SynConst.Decimal f ->
- unif (mkAppTy g.decimal_tcr [])
+ unif (mkWoNullAppTy g.decimal_tcr [])
Const.Decimal f
| SynConst.SByte i ->
unif g.sbyte_ty
@@ -977,6 +1015,62 @@ let TranslatePartialValReprInfo tps (PrelimValReprInfo (argsData, retData)) =
// Members
//-------------------------------------------------------------------------
+
+[]
+type TcCanFail =
+ | IgnoreMemberResoutionError
+ | IgnoreAllErrors
+ | ReportAllErrors
+
+[]
+[]
+type TcTrueMatchClause =
+ | Yes
+ | No
+
+let TcAddNullnessToType (warn: bool) (cenv: cenv) (env: TcEnv) nullness innerTyC m =
+ let g = cenv.g
+ if g.langFeatureNullness then
+ if TypeNullNever g innerTyC then
+ let tyString = NicePrint.minimalStringOfType env.DisplayEnv innerTyC
+ errorR(Error(FSComp.SR.tcTypeDoesNotHaveAnyNull(tyString), m))
+
+ match tryAddNullnessToTy nullness innerTyC with
+
+ | None ->
+ let tyString = NicePrint.minimalStringOfType env.DisplayEnv innerTyC
+ errorR(Error(FSComp.SR.tcTypeDoesNotHaveAnyNull(tyString), m))
+ innerTyC
+
+ | Some innerTyCWithNull ->
+ // The inner type is not allowed to support null or use null as a representation value.
+ // For example "int option?" is not allowed, nor "string??".
+ //
+ // For variable types in FSharp.Core we make an exception because we must allow
+ // val toObj: value: 'T option -> 'T | null when 'T : not struct (* and 'T : not null *)
+ // without implying 'T is not null. This is because it is legitimate to use this
+ // function to "collapse" null and obj-null-coming-from-option using such a function.
+
+ if not g.compilingFSharpCore || not (isTyparTy g innerTyC) then
+ AddCxTypeDefnNotSupportsNull env.DisplayEnv cenv.css m NoTrace innerTyC
+ AddCxTypeIsReferenceType env.DisplayEnv cenv.css m NoTrace innerTyC
+
+ if not g.compilingFSharpCore && isTyparTy g innerTyC then
+ // A typar might be later inferred into a type not supporting `| null|, like tuple or anon.
+ // Repeat the check in post inference
+ AddCxTypeCanCarryNullnessInfo env.DisplayEnv cenv.css m innerTyC nullness
+
+ innerTyCWithNull
+
+ else
+ if warn then
+ warning(Error(FSComp.SR.tcNullnessCheckingNotEnabled(), m))
+ innerTyC
+
+//-------------------------------------------------------------------------
+// Members
+//-------------------------------------------------------------------------
+
let ComputeLogicalName (id: Ident) (memberFlags: SynMemberFlags) =
match memberFlags.MemberKind with
| SynMemberKind.ClassConstructor -> ".cctor"
@@ -1080,7 +1174,7 @@ let PublishModuleDefn (cenv: cenv) env mspec =
if intoFslibCcu then mty
else mty.AddEntity mspec)
let item = Item.ModuleOrNamespaces([mkLocalModuleRef mspec])
- CallNameResolutionSink cenv.tcSink (mspec.Range, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (mspec.Range, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
let PublishTypeDefn (cenv: cenv) env mspec =
UpdateAccModuleOrNamespaceType cenv env (fun _ mty ->
@@ -1139,7 +1233,7 @@ let CombineVisibilityAttribs vis1 vis2 m =
vis1
| _ -> vis2
-let ComputeAccessAndCompPath env (declKindOpt: DeclKind option) m vis overrideVis actualParent =
+let ComputeAccessAndCompPath (g:TcGlobals) env (declKindOpt: DeclKind option) m vis overrideVis actualParent =
let accessPath = env.eAccessPath
let accessModPermitted =
match declKindOpt with
@@ -1150,12 +1244,13 @@ let ComputeAccessAndCompPath env (declKindOpt: DeclKind option) m vis overrideVi
errorR(Error(FSComp.SR.tcMultipleVisibilityAttributesWithLet(), m))
let vis =
- match overrideVis, vis with
- | Some v, _ -> v
- | _, None -> taccessPublic (* a module or member binding defaults to "public" *)
- | _, Some (SynAccess.Public _) -> taccessPublic
- | _, Some (SynAccess.Private _) -> taccessPrivate accessPath
- | _, Some (SynAccess.Internal _) -> taccessInternal
+ match declKindOpt, overrideVis, vis with
+ | _, Some v, _ -> v
+ | Some (DeclKind.ClassLetBinding _), _, None when g.realsig -> taccessPrivate accessPath // a type binding defaults to "private"
+ | _, _, None -> taccessPublic // a module or member binding defaults to "public"
+ | _, _, Some (SynAccess.Public _) -> taccessPublic
+ | _, _, Some (SynAccess.Private _) -> taccessPrivate accessPath
+ | _, _, Some (SynAccess.Internal _) -> taccessInternal
let vis =
match actualParent with
@@ -1198,7 +1293,7 @@ let CheckForAbnormalOperatorNames (cenv: cenv) (idRange: range) coreDisplayName
let CheckInitProperties (g: TcGlobals) (minfo: MethInfo) methodName mItem =
if g.langVersion.SupportsFeature(LanguageFeature.InitPropertiesSupport) then
- // Check, wheter this method has external init, emit an error diagnostic in this case.
+ // Check, whether this method has external init, emit an error diagnostic in this case.
if minfo.HasExternalInit then
errorR (Error (FSComp.SR.tcSetterForInitOnlyPropertyCannotBeCalled1 methodName, mItem))
@@ -1235,7 +1330,7 @@ let CheckRequiredProperties (g:TcGlobals) (env: TcEnv) (cenv: TcFileState) (minf
let details = NicePrint.multiLineStringOfPropInfos g cenv.amap mMethExpr env.DisplayEnv missingProps
errorR(Error(FSComp.SR.tcMissingRequiredMembers details, mMethExpr))
-let private HasMethodImplNoInliningAttribute g attrs =
+let private HasMethodImplNoInliningAttribute g attrs =
match TryFindFSharpAttribute g g.attrib_MethodImplAttribute attrs with
// NO_INLINING = 8
| Some (Attrib(_, _, [ AttribInt32Arg flags ], _, _, _, _)) -> (flags &&& 0x8) <> 0x0
@@ -1281,18 +1376,18 @@ let MakeAndPublishVal (cenv: cenv) env (altActualParent, inSig, declKind, valRec
Parent(memberInfo.ApparentEnclosingEntity), vis
| _ -> altActualParent, None
- let vis, _ = ComputeAccessAndCompPath env (Some declKind) id.idRange vis overrideVis actualParent
+ let vis, _ = ComputeAccessAndCompPath g env (Some declKind) id.idRange vis overrideVis actualParent
+
+ let inlineFlag =
+ if HasFSharpAttributeOpt g g.attrib_DllImportAttribute attrs then
+ if inlineFlag = ValInline.Always then
+ errorR(Error(FSComp.SR.tcDllImportStubsCannotBeInlined(), m))
+ ValInline.Never
+ else
+ if HasMethodImplNoInliningAttribute g attrs
+ then ValInline.Never
+ else inlineFlag
- let inlineFlag =
- if HasFSharpAttributeOpt g g.attrib_DllImportAttribute attrs then
- if inlineFlag = ValInline.Always then
- errorR(Error(FSComp.SR.tcDllImportStubsCannotBeInlined(), m))
- ValInline.Never
- else
- if HasMethodImplNoInliningAttribute g attrs
- then ValInline.Never
- else inlineFlag
-
// CompiledName not allowed on virtual/abstract/override members
let compiledNameAttrib = TryFindFSharpStringAttribute g g.attrib_CompiledNameAttribute attrs
@@ -1372,7 +1467,7 @@ let MakeAndPublishVal (cenv: cenv) env (altActualParent, inSig, declKind, valRec
let nenv = AddFakeNamedValRefToNameEnv vspec.DisplayName env.NameEnv (mkLocalValRef vspec)
CallEnvSink cenv.tcSink (vspec.Range, nenv, env.eAccessRights)
let item = Item.Value(mkLocalValRef vspec)
- CallNameResolutionSink cenv.tcSink (vspec.Range, nenv, item, emptyTyparInst, ItemOccurence.Binding, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (vspec.Range, nenv, item, emptyTyparInst, ItemOccurrence.Binding, env.eAccessRights)
| _ -> ()
vspec
@@ -1610,9 +1705,9 @@ let CombineSyntacticAndInferredValReprInfo g rhsExpr prelimScheme =
| _ when memberInfoOpt.IsSome ->
partialValReprInfoOpt
// Don't use any expression information for 'let' bindings where return attributes are present
- | _ when retAttribs.Length > 0 ->
+ | _ when retAttribs.Length > 0 ->
partialValReprInfoOpt
- | Some partialValReprInfoFromSyntax ->
+ | Some partialValReprInfoFromSyntax ->
let (PrelimValReprInfo(curriedArgInfosFromSyntax, retInfoFromSyntax)) = partialValReprInfoFromSyntax
let partialArityInfo =
if isMutable then
@@ -1689,20 +1784,20 @@ let MakeAndPublishSimpleValsForMergedScope (cenv: cenv) env m (names: NameMap<_>
else
let nameResolutions = ResizeArray()
- let notifyNameResolution (pos, item, itemGroup, itemTyparInst, occurence, nenv, ad, m: range, replacing) =
+ let notifyNameResolution (pos, item, itemGroup, itemTyparInst, occurrence, nenv, ad, m: range, replacing) =
if not m.IsSynthetic then
- nameResolutions.Add(pos, item, itemGroup, itemTyparInst, occurence, nenv, ad, m, replacing)
+ nameResolutions.Add(pos, item, itemGroup, itemTyparInst, occurrence, nenv, ad, m, replacing)
let values, vspecMap =
let sink =
{ new ITypecheckResultsSink with
member _.NotifyEnvWithScope(_, _, _) = () // ignore EnvWithScope reports
- member _.NotifyNameResolution(pos, item, itemTyparInst, occurence, nenv, ad, m, replacing) =
- notifyNameResolution (pos, item, item, itemTyparInst, occurence, nenv, ad, m, replacing)
+ member _.NotifyNameResolution(pos, item, itemTyparInst, occurrence, nenv, ad, m, replacing) =
+ notifyNameResolution (pos, item, item, itemTyparInst, occurrence, nenv, ad, m, replacing)
- member _.NotifyMethodGroupNameResolution(pos, item, itemGroup, itemTyparInst, occurence, nenv, ad, m, replacing) =
- notifyNameResolution (pos, item, itemGroup, itemTyparInst, occurence, nenv, ad, m, replacing)
+ member _.NotifyMethodGroupNameResolution(pos, item, itemGroup, itemTyparInst, occurrence, nenv, ad, m, replacing) =
+ notifyNameResolution (pos, item, itemGroup, itemTyparInst, occurrence, nenv, ad, m, replacing)
member _.NotifyExprHasType(_, _, _, _) = assert false // no expr typings in MakeAndPublishSimpleVals
@@ -1730,8 +1825,8 @@ let MakeAndPublishSimpleValsForMergedScope (cenv: cenv) env m (names: NameMap<_>
// send notification about mergedNameEnv
CallEnvSink cenv.tcSink (mergedRange, mergedNameEnv, ad)
// call CallNameResolutionSink for all captured name resolutions using mergedNameEnv
- for _, item, itemGroup, itemTyparInst, occurence, _nenv, ad, m, _replacing in nameResolutions do
- CallMethodGroupNameResolutionSink cenv.tcSink (m, mergedNameEnv, item, itemGroup, itemTyparInst, occurence, ad)
+ for _, item, itemGroup, itemTyparInst, occurrence, _nenv, ad, m, _replacing in nameResolutions do
+ CallMethodGroupNameResolutionSink cenv.tcSink (m, mergedNameEnv, item, itemGroup, itemTyparInst, occurrence, ad)
values, vspecMap
@@ -1743,7 +1838,7 @@ let MakeAndPublishSimpleValsForMergedScope (cenv: cenv) env m (names: NameMap<_>
// to C<_> occurs then generate C for a fresh type inference variable ?ty.
//-------------------------------------------------------------------------
-let FreshenTyconRef (g: TcGlobals) m rigid (tcref: TyconRef) declaredTyconTypars =
+let FreshenTyconRef (g: TcGlobals) m rigid (tcref: TyconRef) declaredTyconTypars =
let origTypars = declaredTyconTypars
let clearStaticReq = g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers
let freshTypars = copyTypars clearStaticReq origTypars
@@ -1756,7 +1851,7 @@ let FreshenTyconRef (g: TcGlobals) m rigid (tcref: TyconRef) declaredTyconTypars
let freshTy = TType_app(tcref, tinst, g.knownWithoutNull)
origTy, freshTypars, renaming, freshTy
-let FreshenPossibleForallTy g m rigid ty =
+let FreshenPossibleForallTy g m rigid ty =
let origTypars, tau = tryDestForallTy g ty
if isNil origTypars then
[], [], [], tau
@@ -1766,7 +1861,7 @@ let FreshenPossibleForallTy g m rigid ty =
let tps, renaming, tinst = CopyAndFixupTypars g m rigid origTypars
origTypars, tps, tinst, instType renaming tau
-let FreshenTyconRef2 (g: TcGlobals) m (tcref: TyconRef) =
+let FreshenTyconRef2 (g: TcGlobals) m (tcref: TyconRef) =
let tps, renaming, tinst = FreshenTypeInst g m (tcref.Typars m)
tps, renaming, tinst, TType_app (tcref, tinst, g.knownWithoutNull)
@@ -1802,9 +1897,9 @@ let FreshenAbstractSlot g amap m synTyparDecls absMethInfo =
typarsFromAbsSlotAreRigid, typarsFromAbsSlot, argTysFromAbsSlot, retTyFromAbsSlot
let CheckRecdExprDuplicateFields (elems: Ident list) =
- elems |> List.iteri (fun i (uc1: Ident) ->
- elems |> List.iteri (fun j (uc2: Ident) ->
- if j > i && uc1.idText = uc2.idText then
+ elems |> List.iteri (fun i (uc1: Ident) ->
+ elems |> List.iteri (fun j (uc2: Ident) ->
+ if j > i && uc1.idText = uc2.idText then
errorR (Error(FSComp.SR.tcMultipleFieldsInRecord(uc1.idText), uc1.idRange))))
//-------------------------------------------------------------------------
@@ -1869,7 +1964,7 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * '
// Record the precise resolution of the field for intellisense
let item = Item.RecdField(rfinfo2)
- CallNameResolutionSink cenv.tcSink (ident.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, ad)
+ CallNameResolutionSink cenv.tcSink (ident.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ad)
let fref2 = rfinfo2.RecdFieldRef
@@ -1895,7 +1990,7 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * '
| _ -> error(Error(FSComp.SR.tcRecordFieldInconsistentTypes(), m)))
Some(tinst, tcref, fldsmap, List.rev rfldsList)
-let rec ApplyUnionCaseOrExn (makerForUnionCase, makerForExnTag) m (cenv: cenv) env overallTy item =
+let ApplyUnionCaseOrExn (makerForUnionCase, makerForExnTag) m (cenv: cenv) env overallTy item =
let g = cenv.g
let ad = env.eAccessRights
match item with
@@ -2049,12 +2144,12 @@ module GeneralizationHelpers =
/// Recursively knock out typars we can't generalize.
/// For non-generalized type variables be careful to iteratively knock out
/// both the typars and any typars free in the constraints of the typars
- /// into the set that are considered free in the environment.
- let rec TrimUngeneralizableTypars genConstrainedTyparFlag inlineFlag (generalizedTypars: Typar list) freeInEnv =
- // Do not generalize type variables with a static requirement unless function is marked 'inline'
- let generalizedTypars, ungeneralizableTypars1 =
+ /// into the set that are considered free in the environment.
+ let rec TrimUngeneralizableTypars genConstrainedTyparFlag inlineFlag (generalizedTypars: Typar list) freeInEnv =
+ // Do not generalize type variables with a static requirement unless function is marked 'inline'
+ let generalizedTypars, ungeneralizableTypars1 =
if inlineFlag = ValInline.Always then generalizedTypars, []
- else generalizedTypars |> List.partition (fun tp -> tp.StaticReq = TyparStaticReq.None)
+ else generalizedTypars |> List.partition (fun tp -> tp.StaticReq = TyparStaticReq.None)
// Do not generalize type variables which would escape their scope
// because they are free in the environment
@@ -2062,7 +2157,7 @@ module GeneralizationHelpers =
List.partition (fun x -> not (Zset.contains x freeInEnv)) generalizedTypars
// Some situations, e.g. implicit class constructions that represent functions as fields,
- // do not allow generalisation over constrained typars. (since they can not be represented as fields)
+ // do not allow generalisation over constrained typars. (since they cannot be represented as fields)
//
// Don't generalize IsCompatFlex type parameters to avoid changing inferred types.
let generalizedTypars, ungeneralizableTypars3 =
@@ -2101,7 +2196,7 @@ module GeneralizationHelpers =
match tp.Constraints |> List.partition (function TyparConstraint.CoercesTo _ -> true | _ -> false) with
| [TyparConstraint.CoercesTo(tgtTy, _)], others ->
// Throw away null constraints if they are implied
- if others |> List.exists (function TyparConstraint.SupportsNull _ -> not (TypeSatisfiesNullConstraint g m tgtTy) | _ -> true)
+ if others |> List.exists (function TyparConstraint.SupportsNull _ -> not (TypeNullIsExtraValue g m tgtTy) | _ -> true)
then None
else Some tgtTy
| _ -> None
@@ -2197,7 +2292,7 @@ module GeneralizationHelpers =
// to C<_> occurs then generate C for a fresh type inference variable ?ty.
//-------------------------------------------------------------------------
- let CheckDeclaredTyparsPermitted (memFlagsOpt: SynMemberFlags option, declaredTypars, m) =
+ let CheckDeclaredTyparsPermitted (memFlagsOpt: SynMemberFlags option, declaredTypars: Typars, m) =
match memFlagsOpt with
| None -> ()
| Some memberFlags ->
@@ -2207,7 +2302,13 @@ module GeneralizationHelpers =
| SynMemberKind.PropertySet
| SynMemberKind.PropertyGetSet ->
if not (isNil declaredTypars) then
- errorR(Error(FSComp.SR.tcPropertyRequiresExplicitTypeParameters(), m))
+ let declaredTyparsRange =
+ declaredTypars
+ |> List.map(fun typar -> typar.Range)
+
+ let m = declaredTyparsRange |> List.fold (fun r a -> unionRanges r a) range.Zero
+
+ errorR(Error(FSComp.SR.tcPropertyRequiresExplicitTypeParameters(), m))
| SynMemberKind.Constructor ->
if not (isNil declaredTypars) then
errorR(Error(FSComp.SR.tcConstructorCannotHaveTypeParameters(), m))
@@ -2240,7 +2341,7 @@ module GeneralizationHelpers =
//-------------------------------------------------------------------------
let ComputeInlineFlag (memFlagsOption: SynMemberFlags option) isInline isMutable g attrs m =
- let hasNoCompilerInliningAttribute () = HasFSharpAttribute g g.attrib_NoCompilerInliningAttribute attrs
+ let hasNoCompilerInliningAttribute () = HasFSharpAttribute g g.attrib_NoCompilerInliningAttribute attrs
let isCtorOrAbstractSlot () =
match memFlagsOption with
@@ -2257,7 +2358,7 @@ let ComputeInlineFlag (memFlagsOption: SynMemberFlags option) isInline isMutable
if isMutable || isCtorOrAbstractSlot() || hasNoCompilerInliningAttribute() || isExtern () then
ValInline.Never, errorR
elif HasMethodImplNoInliningAttribute g attrs then
- ValInline.Never,
+ ValInline.Never,
if g.langVersion.SupportsFeature LanguageFeature.WarningWhenInliningMethodImplNoInlineMarkedFunction
then warning
else ignore
@@ -2266,7 +2367,7 @@ let ComputeInlineFlag (memFlagsOption: SynMemberFlags option) isInline isMutable
else
ValInline.Optional, ignore
- if isInline && (inlineFlag <> ValInline.Always) then
+ if isInline && (inlineFlag <> ValInline.Always) then
reportIncorrectInlineKeywordUsage (Error(FSComp.SR.tcThisValueMayNotBeInlined(), m))
inlineFlag
@@ -2327,7 +2428,7 @@ type NormalizedBinding =
| NormalizedBinding of
visibility: SynAccess option *
kind: SynBindingKind *
- mustInline: bool *
+ shouldInline: bool *
isMutable: bool *
attribs: SynAttribute list *
xmlDoc: XmlDoc *
@@ -2343,9 +2444,9 @@ type IsObjExprBinding =
| ValOrMemberBinding
module BindingNormalization =
- /// Push a bunch of pats at once. They may contain patterns, e.g. let f (A x) (B y) = ...
- /// In this case the semantics is let f a b = let A x = a in let B y = b
- let private PushMultiplePatternsToRhs (cenv: cenv) isMember pats (NormalizedBindingRhs(spatsL, rtyOpt, rhsExpr)) =
+ /// Push a bunch of pats at once. They may contain patterns, e.g. let f (A x) (B y) = ...
+ /// In this case the semantics is let f a b = let A x = a in let B y = b
+ let private PushMultiplePatternsToRhs (cenv: cenv) isMember pats (NormalizedBindingRhs(spatsL, rtyOpt, rhsExpr)) =
let spatsL2, rhsExpr = PushCurriedPatternsToExpr cenv.synArgNameGenerator rhsExpr.Range isMember pats None rhsExpr
NormalizedBindingRhs(spatsL2@spatsL, rtyOpt, rhsExpr)
@@ -2425,8 +2526,12 @@ module BindingNormalization =
match memberFlagsOpt with
| None ->
let extraDot = if synLongId.ThereIsAnExtraDotAtTheEnd then ExtraDotAfterIdentifier.Yes else ExtraDotAfterIdentifier.No
-
- match ResolvePatternLongIdent cenv.tcSink nameResolver AllIdsOK true m ad env.NameEnv TypeNameResolutionInfo.Default longId extraDot with
+ let warnOnUpper =
+ if not args.IsEmpty then
+ WarnOnUpperUnionCaseLabel
+ else AllIdsOK
+
+ match ResolvePatternLongIdent cenv.tcSink nameResolver warnOnUpper true m ad env.NameEnv TypeNameResolutionInfo.Default longId extraDot with
| Item.NewDef id ->
if id.idText = opNameCons then
NormalizedBindingPat(pat, rhsExpr, valSynData, typars)
@@ -2575,13 +2680,8 @@ module EventDeclarationNormalization =
let FreshenObjectArgType (cenv: cenv) m rigid tcref isExtrinsic declaredTyconTypars =
let g = cenv.g
-#if EXTENDED_EXTENSION_MEMBERS // indicates if extension members can add additional constraints to type parameters
- let tcrefObjTy, enclosingDeclaredTypars, renaming, objTy =
- FreshenTyconRef g m (if isExtrinsic then TyparRigidity.Flexible else rigid) tcref declaredTyconTypars
-#else
let tcrefObjTy, enclosingDeclaredTypars, renaming, objTy =
FreshenTyconRef g m rigid tcref declaredTyconTypars
-#endif
// Struct members have a byref 'this' type (unless they are extrinsic extension members)
let thisTy =
@@ -2744,10 +2844,7 @@ let TcVal checkAttributes (cenv: cenv) env (tpenv: UnscopedTyparEnv) (vref: ValR
let exprForVal = Expr.Val (vref, vrefFlags, m)
let exprForVal = mkTyAppExpr m (exprForVal, vTy) tinst
let isSpecial =
- (match vrefFlags with NormalValUse | PossibleConstrainedCall _ -> false | _ -> true) ||
- valRefEq g vref g.splice_expr_vref ||
- valRefEq g vref g.splice_raw_expr_vref
-
+ (match vrefFlags with NormalValUse | PossibleConstrainedCall _ -> false | _ -> true) || g.isSpliceOperator vref
let exprForVal = RecordUseOfRecValue cenv valRecInfo vref exprForVal m
tpsorig, exprForVal, isSpecial, tau, tinst, tpenv
@@ -2757,34 +2854,6 @@ let TcVal checkAttributes (cenv: cenv) env (tpenv: UnscopedTyparEnv) (vref: ValR
| Some AfterResolution.DoNothing | None -> ()
res
-/// simplified version of TcVal used in calls to BuildMethodCall (typrelns.fs)
-/// this function is used on typechecking step for making calls to provided methods and on optimization step (for the same purpose).
-let LightweightTcValForUsingInBuildMethodCall g (vref: ValRef) vrefFlags (vrefTypeInst: TTypes) m =
- let v = vref.Deref
- let vTy = vref.Type
- // byref-typed values get dereferenced
- if isByrefTy g vTy then
- mkAddrGet m vref, destByrefTy g vTy
- else
- match v.LiteralValue with
- | Some literalConst ->
- let _, _, _, tau = FreshenPossibleForallTy g m TyparRigidity.Flexible vTy
- Expr.Const (literalConst, m, tau), tau
-
- | None ->
- // Instantiate the value
- let tau =
- // If we have got an explicit instantiation then use that
- let _, tps, tpTys, tau = FreshenPossibleForallTy g m TyparRigidity.Flexible vTy
-
- if tpTys.Length <> vrefTypeInst.Length then error(Error(FSComp.SR.tcTypeParameterArityMismatch(tps.Length, vrefTypeInst.Length), m))
-
- instType (mkTyparInst tps vrefTypeInst) tau
-
- let exprForVal = Expr.Val (vref, vrefFlags, m)
- let exprForVal = mkTyAppExpr m (exprForVal, vTy) vrefTypeInst
- exprForVal, tau
-
/// Mark points where we decide whether an expression will support automatic
/// decondensation or not.
type ApplicableExpr =
@@ -2919,11 +2988,20 @@ let TcRuntimeTypeTest isCast isOperator (cenv: cenv) denv m tgtTy srcTy =
else
error(Error(FSComp.SR.tcTypeTestErased(NicePrint.minimalStringOfType denv tgtTy, NicePrint.minimalStringOfType denv (stripTyEqnsWrtErasure EraseAll g tgtTy)), m))
else
- for ety in getErasedTypes g tgtTy do
+ let checkTrgtNullness =
+ match (srcTy,g),(tgtTy,g) with
+ | (NullableRefType|NullTrueValue|NullableTypar), WithoutNullRefType when g.checkNullness && isCast ->
+ let srcNice = NicePrint.minimalStringOfTypeWithNullness denv srcTy
+ let tgtNice = NicePrint.minimalStringOfTypeWithNullness denv tgtTy
+ warning(Error(FSComp.SR.tcDowncastFromNullableToWithoutNull(srcNice,tgtNice,tgtNice), m))
+ false
+ | (NullableRefType|NullTrueValue|NullableTypar), (NullableRefType|NullTrueValue|NullableTypar) -> not isCast //a type test (unlike type cast) will never return true for null in the source, therefore adding |null to target does not help => keep the erasure warning
+ | _ -> true
+ for ety in getErasedTypes g tgtTy checkTrgtNullness do
if isMeasureTy g ety then
warning(Error(FSComp.SR.tcTypeTestLosesMeasures(NicePrint.minimalStringOfType denv ety), m))
else
- warning(Error(FSComp.SR.tcTypeTestLossy(NicePrint.minimalStringOfType denv ety, NicePrint.minimalStringOfType denv (stripTyEqnsWrtErasure EraseAll g ety)), m))
+ warning(Error(FSComp.SR.tcTypeTestLossy(NicePrint.minimalStringOfTypeWithNullness denv ety, NicePrint.minimalStringOfType denv (stripTyEqnsWrtErasure EraseAll g ety)), m))
/// Checks, warnings and constraint assertions for upcasts
let TcStaticUpcast (cenv: cenv) denv m tgtTy srcTy =
@@ -3025,7 +3103,7 @@ let BuildDisposableCleanup (cenv: cenv) env m (v: Val) =
else
let disposeObjVar, disposeObjExpr = mkCompGenLocal m "objectToDispose" g.system_IDisposable_ty
let disposeExpr, _ = BuildPossiblyConditionalMethodCall cenv env PossiblyMutates m false disposeMethod NormalValUse [] [disposeObjExpr] [] None
- let inputExpr = mkCoerceExpr(exprForVal v.Range v, g.obj_ty, m, v.Type)
+ let inputExpr = mkCoerceExpr(exprForVal v.Range v, g.obj_ty_ambivalent, m, v.Type)
mkIsInstConditional g m g.system_IDisposable_ty inputExpr disposeObjVar disposeExpr (mkUnit g m)
/// Build call to get_OffsetToStringData as part of 'fixed'
@@ -3115,15 +3193,17 @@ let BuildRecdFieldSet g m objExpr (rfinfo: RecdFieldInfo) argExpr =
// Helpers dealing with named and optional args at callsites
//-------------------------------------------------------------------------
+[]
let (|BinOpExpr|_|) expr =
match expr with
- | SynExpr.App (_, _, SynExpr.App (_, _, SingleIdent opId, a, _), b, _) -> Some (opId, a, b)
- | _ -> None
+ | SynExpr.App (_, _, SynExpr.App (_, _, SingleIdent opId, a, _), b, _) -> ValueSome (opId, a, b)
+ | _ -> ValueNone
+[]
let (|SimpleEqualsExpr|_|) expr =
match expr with
- | BinOpExpr(opId, a, b) when opId.idText = opNameEquals -> Some (a, b)
- | _ -> None
+ | BinOpExpr(opId, a, b) when opId.idText = opNameEquals -> ValueSome (a, b)
+ | _ -> ValueNone
/// Detect a named argument at a callsite
let TryGetNamedArg expr =
@@ -3162,30 +3242,6 @@ let GetMethodArgs arg =
unnamedCallerArgs, namedCallerArgs
-
-//-------------------------------------------------------------------------
-// Helpers dealing with pattern match compilation
-//-------------------------------------------------------------------------
-
-let CompilePatternForMatch (cenv: cenv) (env: TcEnv) mExpr mMatch warnOnUnused actionOnFailure (inputVal, generalizedTypars, inputExprOpt) clauses inputTy resultTy =
- let g = cenv.g
- let dtree, targets = CompilePattern g env.DisplayEnv cenv.amap (LightweightTcValForUsingInBuildMethodCall g) cenv.infoReader mExpr mMatch warnOnUnused actionOnFailure (inputVal, generalizedTypars, inputExprOpt) clauses inputTy resultTy
- mkAndSimplifyMatch DebugPointAtBinding.NoneAtInvisible mExpr mMatch resultTy dtree targets
-
-/// Compile a pattern
-let CompilePatternForMatchClauses (cenv: cenv) env mExpr mMatch warnOnUnused actionOnFailure inputExprOpt inputTy resultTy tclauses =
- // Avoid creating a dummy in the common cases where we are about to bind a name for the expression
- // CLEANUP: avoid code duplication with code further below, i.e.all callers should call CompilePatternForMatch
- match tclauses with
- | [MatchClause(TPat_as (pat1, PatternValBinding (asVal, GeneralizedType(generalizedTypars, _)), _), None, TTarget(vs, targetExpr, _), m2)] ->
- let vs2 = ListSet.remove valEq asVal vs
- let expr = CompilePatternForMatch cenv env mExpr mMatch warnOnUnused actionOnFailure (asVal, generalizedTypars, None) [MatchClause(pat1, None, TTarget(vs2, targetExpr, None), m2)] inputTy resultTy
- asVal, expr
- | _ ->
- let matchValueTmp, _ = mkCompGenLocal mExpr "matchValue" inputTy
- let expr = CompilePatternForMatch cenv env mExpr mMatch warnOnUnused actionOnFailure (matchValueTmp, [], inputExprOpt) tclauses inputTy resultTy
- matchValueTmp, expr
-
//-------------------------------------------------------------------------
// Helpers dealing with sequence expressions
//-------------------------------------------------------------------------
@@ -3251,7 +3307,7 @@ let AnalyzeArbitraryExprAsEnumerable (cenv: cenv) (env: TcEnv) localAlloc m expr
let enumElemTy =
- if isObjTy g enumElemTy then
+ if isObjTyAnyNullness g enumElemTy then
// Look for an 'Item' property, or a set of these with consistent return types
let allEquivReturnTypes (minfo: MethInfo) (others: MethInfo list) =
let returnTy = minfo.GetFSharpReturnType(cenv.amap, m, [])
@@ -3263,7 +3319,7 @@ let AnalyzeArbitraryExprAsEnumerable (cenv: cenv) (env: TcEnv) localAlloc m expr
// e.g. MatchCollection
typeEquiv g g.int32_ty ty ||
// e.g. EnvDTE.Documents.Item
- typeEquiv g g.obj_ty ty
+ typeEquiv g g.obj_ty_ambivalent ty
| _ -> false
match TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AllResults cenv env m ad "get_Item" tyToSearchForGetEnumeratorAndItem with
@@ -3341,7 +3397,7 @@ let AnalyzeArbitraryExprAsEnumerable (cenv: cenv) (env: TcEnv) localAlloc m expr
match probe exprTyAsSeq with
| Some res -> res
| None ->
- let ienumerable = mkAppTy g.tcref_System_Collections_IEnumerable []
+ let ienumerable = mkWoNullAppTy g.tcref_System_Collections_IEnumerable []
match probe ienumerable with
| Some res -> res
| None ->
@@ -3443,9 +3499,9 @@ let EliminateInitializationGraphs
| Expr.TyLambda (_, _, b, _, _) -> CheckExpr st b
| Expr.Obj (_, ty, _, e, overrides, extraImpls, _) ->
- // NOTE: we can't fixup recursive references inside delegates since the closure delegee of a delegate is not accessible
- // from outside. Object expressions implementing interfaces can, on the other hand, be fixed up. See FSharp 1.0 bug 1469
- if isInterfaceTy g ty then
+ // NOTE: we can't fixup recursive references inside delegates since the closure delegee of a delegate is not accessible
+ // from outside. Object expressions implementing interfaces can, on the other hand, be fixed up. See FSharp 1.0 bug 1469
+ if isInterfaceTy g ty then
List.iter (fun (TObjExprMethod(_, _, _, _, e, _)) -> checkDelayed st e) overrides
List.iter (snd >> List.iter (fun (TObjExprMethod(_, _, _, _, e, _)) -> checkDelayed st e)) extraImpls
else
@@ -3487,7 +3543,7 @@ let EliminateInitializationGraphs
| Expr.Quote _ -> ()
| Expr.WitnessArg (_witnessInfo, _m) -> ()
- and CheckBinding st (TBind(_, e, _)) = CheckExpr st e
+ and CheckBinding st (TBind(_, e, _)) = CheckExpr st e
and CheckDecisionTree st dt =
match dt with
@@ -3563,7 +3619,7 @@ let EliminateInitializationGraphs
let vTy = mkLazyTy g ty
let fty = mkFunTy g g.unit_ty ty
- let flazy, felazy = mkCompGenLocal m v.LogicalName fty
+ let flazy, felazy = mkCompGenLocal m v.LogicalName fty
let frhs = mkUnitDelayLambda g m e
if mustHaveValReprInfo then
@@ -3648,7 +3704,7 @@ let CheckAndRewriteObjectCtor g env (ctorLambdaExpr: Expr) =
// = "let pat = expr in "
| Expr.Let (bind, body, m, _) -> mkLetBind m bind (checkAndRewrite body)
- // The constructor is a sequence "let pat = expr in "
+ // The constructor is a sequence "let pat = expr in "
| Expr.Match (debugPoint, a, b, targets, c, d) ->
let targets = targets |> Array.map (fun (TTarget(vs, body, flags)) -> TTarget(vs, checkAndRewrite body, flags))
Expr.Match (debugPoint, a, b, targets, c, d)
@@ -3791,22 +3847,22 @@ let buildApp (cenv: cenv) expr resultTy arg m =
type DelayedItem =
/// Represents the in "item"
- | DelayedTypeApp of
- typeArgs: SynType list *
- mTypeArgs: range *
+ | DelayedTypeApp of
+ typeArgs: SynType list *
+ mTypeArgs: range *
mExprAndTypeArgs: range
/// Represents the args in "item args", or "item.Property(args)".
- | DelayedApp of
- isAtomic: ExprAtomicFlag *
- isSugar: bool *
- synLeftExprOpt: SynExpr option *
- argExpr: SynExpr *
+ | DelayedApp of
+ isAtomic: ExprAtomicFlag *
+ isSugar: bool *
+ synLeftExprOpt: SynExpr option *
+ argExpr: SynExpr *
mFuncAndArg: range
/// Represents the long identifiers in "item.Ident1", or "item.Ident1.Ident2" etc.
- | DelayedDotLookup of
- idents: Ident list *
+ | DelayedDotLookup of
+ idents: Ident list *
range
/// Represents an incomplete "item."
@@ -3816,7 +3872,7 @@ type DelayedItem =
| DelayedSet of SynExpr * range
module DelayedItem =
- let maybeAppliedArgForPreferExtensionOverProperty delayed =
+ let maybeAppliedArgForPreferExtensionOverProperty delayed =
match delayed with
| [] -> None
| DelayedItem.DelayedApp(argExpr=argExpr) :: _ -> Some argExpr
@@ -3993,7 +4049,7 @@ let rec TcTyparConstraint ridx (cenv: cenv) newOk checkConstraints occ (env: TcE
tpenv
| SynTypeConstraint.WhereTyparSubtypeOfType(tp, ty, m) ->
- let tyR, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurence.UseInType WarnOnIWSAM.No env tpenv ty
+ let tyR, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.No env tpenv ty
let tpR, tpenv = TcTypar cenv env newOk tpenv tp
if newOk = NoNewTypars && isSealedTy g tyR then
errorR(Error(FSComp.SR.tcInvalidConstraintTypeSealed(), m))
@@ -4003,6 +4059,13 @@ let rec TcTyparConstraint ridx (cenv: cenv) newOk checkConstraints occ (env: TcE
| SynTypeConstraint.WhereTyparSupportsNull(tp, m) ->
TcSimpleTyparConstraint cenv env newOk tpenv tp m AddCxTypeUseSupportsNull
+ | SynTypeConstraint.WhereTyparNotSupportsNull(tp, m, _) ->
+ if g.langFeatureNullness then
+ TcSimpleTyparConstraint cenv env newOk tpenv tp m AddCxTypeDefnNotSupportsNull
+ else
+ warning(Error(FSComp.SR.tcNullnessCheckingNotEnabled(), m))
+ tpenv
+
| SynTypeConstraint.WhereTyparIsComparable(tp, m) ->
TcSimpleTyparConstraint cenv env newOk tpenv tp m AddCxTypeMustSupportComparison
@@ -4029,7 +4092,7 @@ let rec TcTyparConstraint ridx (cenv: cenv) newOk checkConstraints occ (env: TcE
| SynTypeConstraint.WhereSelfConstrained(ty, m) ->
checkLanguageFeatureAndRecover g.langVersion LanguageFeature.SelfTypeConstraints m
- let tyR, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurence.UseInType WarnOnIWSAM.No env tpenv ty
+ let tyR, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.No env tpenv ty
match tyR with
| TType_app(tcref, tinst, _) when (tcref.IsTypeAbbrev && (isTyparTy g tcref.TypeAbbrev.Value) && tinst |> List.forall (isTyparTy g)) ->
match checkConstraints with
@@ -4052,7 +4115,7 @@ and TcConstraintWhereTyparIsEnum cenv env newOk checkConstraints tpenv tp synUnd
let tpenv =
match synUnderlingTys with
| [synUnderlyingTy] ->
- let underlyingTy, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synUnderlyingTy
+ let underlyingTy, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synUnderlyingTy
AddCxTypeIsEnum env.DisplayEnv cenv.css m NoTrace (mkTyparTy tpR) underlyingTy
tpenv
| _ ->
@@ -4076,7 +4139,8 @@ and TcConstraintWhereTyparSupportsMember cenv env newOk tpenv synSupportTys synM
let g = cenv.g
let traitInfo, tpenv = TcPseudoMemberSpec cenv newOk env synSupportTys tpenv synMemberSig m
match traitInfo with
- | TTrait(objTys, ".ctor", memberFlags, argTys, returnTy, _) when memberFlags.MemberKind = SynMemberKind.Constructor ->
+ | TTrait(tys=objTys; memberName=".ctor"; memberFlags=memberFlags; objAndArgTys=argTys; returnTyOpt=returnTy)
+ when memberFlags.MemberKind = SynMemberKind.Constructor ->
match objTys, argTys with
| [ty], [] when typeEquiv g ty (GetFSharpViewOfReturnType g returnTy) ->
AddCxTypeMustSupportDefaultCtor env.DisplayEnv cenv.css m NoTrace ty
@@ -4096,7 +4160,7 @@ and TcSimpleTyparConstraint cenv env newOk tpenv tp m constraintAdder =
and TcPseudoMemberSpec cenv newOk env synTypes tpenv synMemberSig m =
let g = cenv.g
- let tys, tpenv = List.mapFold (TcTypeAndRecover cenv newOk CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env) tpenv synTypes
+ let tys, tpenv = List.mapFold (TcTypeAndRecover cenv newOk CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env) tpenv synTypes
match synMemberSig with
| SynMemberSig.Member (synValSig, memberFlags, m, _) ->
@@ -4105,6 +4169,20 @@ and TcPseudoMemberSpec cenv newOk env synTypes tpenv synMemberSig m =
let members, tpenv = TcValSpec cenv env ModuleOrMemberBinding newOk ExprContainerInfo (Some memberFlags) (Some (List.head tys)) tpenv synValSig []
match members with
| [ValSpecResult(_, _, id, _, _, memberConstraintTy, prelimValReprInfo, _)] ->
+
+ match synValSig with
+ | SynValSig(accessibility = access) ->
+ match access with
+ | SynValSigAccess.Single(Some access)
+ | SynValSigAccess.GetSet(Some access, _, _)
+ | SynValSigAccess.GetSet(_, Some access, _)
+ | SynValSigAccess.GetSet(_, _, Some access) ->
+ if g.langVersion.SupportsFeature(LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters) then
+ errorR(Error(FSComp.SR.tcAccessModifiersNotAllowedInSRTPConstraint(), access.Range))
+ else
+ warning(Error(FSComp.SR.tcAccessModifiersNotAllowedInSRTPConstraint(), access.Range))
+ | _ -> ()
+
let memberConstraintTypars, _ = tryDestForallTy g memberConstraintTy
let valReprInfo = TranslatePartialValReprInfo memberConstraintTypars prelimValReprInfo
let _, _, curriedArgInfos, returnTy, _ = GetValReprTypeInCompiledForm g valReprInfo 0 memberConstraintTy m
@@ -4123,9 +4201,9 @@ and TcPseudoMemberSpec cenv newOk env synTypes tpenv synMemberSig m =
warning(Error(FSComp.SR.tcTraitMayNotUseComplexThings(), m))
let item = Item.OtherName (Some id, memberConstraintTy, None, None, id.idRange)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.AccessRights)
- TTrait(tys, logicalCompiledName, memberFlags, argTys, returnTy, ref None), tpenv
+ TTrait(tys, logicalCompiledName, memberFlags, argTys, returnTy, ref None, ref None), tpenv
| _ -> error(Error(FSComp.SR.tcInvalidConstraint(), m))
@@ -4155,7 +4233,7 @@ and TcValSpec (cenv: cenv) env declKind newOk containerInfo memFlagsOpt thisTyOp
let allDeclaredTypars = enclosingDeclaredTypars @ declaredTypars
let envinner = AddDeclaredTypars NoCheckForDuplicateTypars allDeclaredTypars env
let checkConstraints = CheckCxs
- let tpenv = TcTyparConstraints cenv newOk checkConstraints ItemOccurence.UseInType envinner tpenv synTyparConstraints
+ let tpenv = TcTyparConstraints cenv newOk checkConstraints ItemOccurrence.UseInType envinner tpenv synTyparConstraints
// Treat constraints at the "end" of the type as if they are declared.
// This is by far the most convenient place to locate the constraints.
@@ -4164,7 +4242,7 @@ and TcValSpec (cenv: cenv) env declKind newOk containerInfo memFlagsOpt thisTyOp
let tpenv =
match ty with
| SynType.WithGlobalConstraints(_, synConstraints, _) ->
- TcTyparConstraints cenv newOk checkConstraints ItemOccurence.UseInType envinner tpenv synConstraints
+ TcTyparConstraints cenv newOk checkConstraints ItemOccurrence.UseInType envinner tpenv synConstraints
| _ ->
tpenv
@@ -4172,7 +4250,7 @@ and TcValSpec (cenv: cenv) env declKind newOk containerInfo memFlagsOpt thisTyOp
allDeclaredTypars |> List.iter (SetTyparRigid env.DisplayEnv m)
// Process the type, including any constraints
- let declaredTy, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurence.UseInType WarnOnIWSAM.Yes envinner tpenv ty
+ let declaredTy, tpenv = TcTypeAndRecover cenv newOk checkConstraints ItemOccurrence.UseInType WarnOnIWSAM.Yes envinner tpenv ty
match memFlagsOpt, thisTyOpt with
| Some memberFlags, Some thisTy ->
@@ -4192,12 +4270,12 @@ and TcValSpec (cenv: cenv) env declKind newOk containerInfo memFlagsOpt thisTyOp
if arginfos.Length > 1 then error(Error(FSComp.SR.tcInvalidPropertyType(), m))
match memberFlags.MemberKind with
| SynMemberKind.PropertyGet ->
- if SynInfo.HasNoArgs valSynInfo then
+ if SynInfo.HasNoArgs valSynInfo then
let getterTy = mkFunTy g g.unit_ty declaredTy
getterTy, (SynInfo.IncorporateEmptyTupledArgForPropertyGetter valSynInfo)
else
declaredTy, valSynInfo
- | _ ->
+ | _ ->
let setterArgTys = List.map fst (List.concat arginfos) @ [returnTy]
let setterArgTy = mkRefTupledTy g setterArgTys
let setterTy = mkFunTy g setterArgTy cenv.g.unit_ty
@@ -4291,7 +4369,7 @@ and TcTypeOrMeasureParameter kindOpt cenv (env: TcEnv) newOk tpenv (SynTypar(id,
| Some TyparKind.Type, TyparKind.Measure -> error (Error(FSComp.SR.tcExpectedTypeParameter(), id.idRange)); res, tpenv
| _, _ ->
let item = Item.TypeVar(id.idText, res)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.UseInType, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.UseInType, env.AccessRights)
res, tpenv
let key = id.idText
@@ -4326,7 +4404,7 @@ and TcTypeOrMeasureParameter kindOpt cenv (env: TcEnv) newOk tpenv (SynTypar(id,
let tpR = Construct.NewTypar (kind, TyparRigidity.WarnIfNotRigid, tp, false, TyparDynamicReq.Yes, [], false, false)
let item = Item.TypeVar(id.idText, tpR)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.UseInType, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.UseInType, env.AccessRights)
tpR, AddUnscopedTypar key tpR tpenv
@@ -4353,7 +4431,7 @@ and TcTyparDecl (cenv: cenv) env synTyparDecl =
()
let item = Item.TypeVar(id.idText, tp)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.UseInType, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.UseInType, env.eAccessRights)
tp
@@ -4371,14 +4449,14 @@ and TcTypeOrMeasure kindOpt (cenv: cenv) newOk checkConstraints occ (iwsam: Warn
match synTy with
| SynType.LongIdent(SynLongIdent([], _, _)) ->
// special case when type name is absent - i.e. empty inherit part in type declaration
- g.obj_ty, tpenv
+ g.obj_ty_ambivalent, tpenv
| SynType.LongIdent synLongId ->
TcLongIdentType kindOpt cenv newOk checkConstraints occ iwsam env tpenv synLongId
| MultiDimensionArrayType (rank, elemTy, m) ->
TcArrayType cenv newOk checkConstraints occ env tpenv rank elemTy m
-
+
| SynType.App (StripParenTypes (SynType.LongIdent longId), _, args, _, _, postfix, m) ->
TcLongIdentAppType kindOpt cenv newOk checkConstraints occ iwsam env tpenv longId postfix args m
@@ -4419,21 +4497,28 @@ and TcTypeOrMeasure kindOpt (cenv: cenv) newOk checkConstraints occ (iwsam: Warn
| SynType.StaticConstant (synConst, m) ->
TcTypeStaticConstant kindOpt tpenv synConst m
+ | SynType.StaticConstantNull m
| SynType.StaticConstantNamed (_, _, m)
| SynType.StaticConstantExpr (_, m) ->
errorR(Error(FSComp.SR.parsInvalidLiteralInType(), m))
NewErrorType (), tpenv
+ | SynType.WithNull(innerTy, ambivalent, m, _) ->
+ let innerTyC, tpenv = TcTypeAndRecover cenv newOk checkConstraints occ WarnOnIWSAM.Yes env tpenv innerTy
+ let nullness = if ambivalent then KnownAmbivalentToNull else KnownWithNull
+ let tyWithNull = TcAddNullnessToType false cenv env nullness innerTyC m
+ tyWithNull, tpenv
+
| SynType.MeasurePower(ty, exponent, m) ->
TcTypeMeasurePower kindOpt cenv newOk checkConstraints occ env tpenv ty exponent m
| SynType.App(arg1, _, args, _, _, postfix, m) ->
- TcTypeMeasureApp kindOpt cenv newOk checkConstraints occ env tpenv arg1 args postfix m
+ TcTypeMeasureApp kindOpt cenv newOk checkConstraints occ env tpenv arg1 args postfix m
| SynType.Paren(innerType, _)
| SynType.SignatureParameter(usedType = innerType) ->
TcTypeOrMeasure kindOpt cenv newOk checkConstraints occ iwsam env tpenv innerType
-
+
| SynType.Or(range = m) ->
// The inner types are expected to be collected by (|TypesForTypar|) at this point.
error(Error((FSComp.SR.tcSynTypeOrInvalidInDeclaration()), m))
@@ -4457,7 +4542,7 @@ and TcLongIdentType kindOpt (cenv: cenv) newOk checkConstraints occ iwsam env tp
let m = synLongId.Range
let ad = env.eAccessRights
- let tinstEnclosing, tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver occ OpenQualified env.NameEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No)
+ let tinstEnclosing, tcref, inst = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver occ OpenQualified env.NameEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No)
CheckIWSAM cenv env checkConstraints iwsam m tcref
@@ -4471,7 +4556,7 @@ and TcLongIdentType kindOpt (cenv: cenv) newOk checkConstraints occ iwsam env tp
| _, TyparKind.Measure ->
TType_measure (Measure.Const tcref), tpenv
| _, TyparKind.Type ->
- TcTypeApp cenv newOk checkConstraints occ env tpenv m tcref tinstEnclosing []
+ TcTypeApp cenv newOk checkConstraints occ env tpenv m tcref tinstEnclosing [] inst
/// Some.Long.TypeName
/// ty1 SomeLongTypeName
@@ -4479,9 +4564,9 @@ and TcLongIdentAppType kindOpt (cenv: cenv) newOk checkConstraints occ iwsam env
let (SynLongIdent(tc, _, _)) = longId
let ad = env.eAccessRights
- let tinstEnclosing, tcref =
+ let tinstEnclosing, tcref, inst =
let tyResInfo = TypeNameResolutionStaticArgsInfo.FromTyArgs args.Length
- ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInType OpenQualified env.eNameResEnv ad tc tyResInfo PermitDirectReferenceToGeneratedType.No
+ ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.UseInType OpenQualified env.eNameResEnv ad tc tyResInfo PermitDirectReferenceToGeneratedType.No
|> ForceRaise
CheckIWSAM cenv env checkConstraints iwsam m tcref
@@ -4498,7 +4583,7 @@ and TcLongIdentAppType kindOpt (cenv: cenv) newOk checkConstraints occ iwsam env
| _, TyparKind.Type ->
if postfix && tcref.Typars m |> List.exists (fun tp -> match tp.Kind with TyparKind.Measure -> true | _ -> false) then
error(Error(FSComp.SR.tcInvalidUnitsOfMeasurePrefix(), m))
- TcTypeApp cenv newOk checkConstraints occ env tpenv m tcref tinstEnclosing args
+ TcTypeApp cenv newOk checkConstraints occ env tpenv m tcref tinstEnclosing args inst
| _, TyparKind.Measure ->
match args, postfix with
@@ -4517,8 +4602,8 @@ and TcNestedAppType (cenv: cenv) newOk checkConstraints occ iwsam env tpenv synL
let leftTy, tpenv = TcType cenv newOk checkConstraints occ iwsam env tpenv synLeftTy
match leftTy with
| AppTy g (tcref, tinst) ->
- let tcref = ResolveTypeLongIdentInTyconRef cenv.tcSink cenv.nameResolver env.eNameResEnv (TypeNameResolutionInfo.ResolveToTypeRefs (TypeNameResolutionStaticArgsInfo.FromTyArgs args.Length)) ad m tcref longId
- TcTypeApp cenv newOk checkConstraints occ env tpenv m tcref tinst args
+ let tcref, inst = ResolveTypeLongIdentInTyconRef cenv.tcSink cenv.nameResolver env.eNameResEnv (TypeNameResolutionInfo.ResolveToTypeRefs (TypeNameResolutionStaticArgsInfo.FromTyArgs args.Length)) ad m tcref longId
+ TcTypeApp cenv newOk checkConstraints occ env tpenv m tcref tinst args inst
| _ ->
error(Error(FSComp.SR.tcTypeHasNoNestedTypes(), m))
@@ -4533,18 +4618,18 @@ and TcTupleType kindOpt (cenv: cenv) newOk checkConstraints occ env tpenv isStru
| Some TyparKind.Measure -> true
| None -> args |> List.exists(function | SynTupleTypeSegment.Slash _ -> true | _ -> false)
| Some _ -> false
-
+
if isMeasure then
let ms,tpenv = TcMeasuresAsTuple cenv newOk checkConstraints occ env tpenv args m
TType_measure ms,tpenv
else
let argsR,tpenv = TcTypesAsTuple cenv newOk checkConstraints occ env tpenv args m
TType_tuple(tupInfo, argsR), tpenv
-
+
and CheckAnonRecdTypeDuplicateFields (elems: Ident array) =
- elems |> Array.iteri (fun i (uc1: Ident) ->
- elems |> Array.iteri (fun j (uc2: Ident) ->
- if j > i && uc1.idText = uc2.idText then
+ elems |> Array.iteri (fun i (uc1: Ident) ->
+ elems |> Array.iteri (fun j (uc2: Ident) ->
+ if j > i && uc1.idText = uc2.idText then
errorR(Error(FSComp.SR.tcAnonRecdTypeDuplicateFieldId(uc1.idText), uc1.idRange))))
and TcAnonRecdType (cenv: cenv) newOk checkConstraints occ env tpenv isStruct args m =
@@ -4561,7 +4646,7 @@ and TcAnonRecdType (cenv: cenv) newOk checkConstraints occ env tpenv isStruct ar
sortedFieldTys |> List.iteri (fun i (x,_) ->
let item = Item.AnonRecdField(anonInfo, sortedCheckedArgTys, i, x.idRange)
- CallNameResolutionSink cenv.tcSink (x.idRange,env.NameEnv,item,emptyTyparInst,ItemOccurence.UseInType,env.eAccessRights))
+ CallNameResolutionSink cenv.tcSink (x.idRange,env.NameEnv,item,emptyTyparInst,ItemOccurrence.UseInType,env.eAccessRights))
TType_anon(anonInfo, sortedCheckedArgTys),tpenv
@@ -4575,7 +4660,7 @@ and TcFunctionType (cenv: cenv) newOk checkConstraints occ env tpenv domainTy re
and TcArrayType (cenv: cenv) newOk checkConstraints occ env tpenv rank elemTy m =
let g = cenv.g
let elemTy, tpenv = TcTypeAndRecover cenv newOk checkConstraints occ WarnOnIWSAM.Yes env tpenv elemTy
- let tyR = mkArrayTy g rank elemTy m
+ let tyR = mkArrayTy g rank g.knownWithoutNull elemTy m
tyR, tpenv
and TcTypeParameter kindOpt (cenv: cenv) env newOk tpenv tp =
@@ -4600,8 +4685,9 @@ and TcTypeWithConstraints (cenv: cenv) env newOk checkConstraints occ tpenv synT
and TcTypeHashConstraint (cenv: cenv) env newOk checkConstraints occ tpenv synTy m =
let tp = TcAnonTypeOrMeasure (Some TyparKind.Type) cenv TyparRigidity.WarnIfNotRigid TyparDynamicReq.Yes newOk m
let ty, tpenv = TcTypeAndRecover cenv newOk checkConstraints occ WarnOnIWSAM.No env tpenv synTy
- AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace ty (mkTyparTy tp)
- tp.AsType, tpenv
+ let tpTy = mkTyparTy tp
+ AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace ty tpTy
+ tpTy, tpenv
// (x: 't & #I1 & #I2)
// (x: #I1 & #I2)
@@ -4624,7 +4710,8 @@ and TcIntersectionConstraint (cenv: cenv) env newOk checkConstraints occ tpenv s
| _ -> tpenv
) tpenv
- tp.AsType, tpenv
+ let tpTy = tp.AsType KnownAmbivalentToNull // TODO: NULLNESS
+ tpTy, tpenv
and TcTypeStaticConstant kindOpt tpenv c m =
match c, kindOpt with
@@ -4704,9 +4791,9 @@ and TcTypesAsTuple (cenv: cenv) newOk checkConstraints occ env tpenv (args: SynT
let hasASlash =
args
|> List.exists(function | SynTupleTypeSegment.Slash _ -> true | _ -> false)
-
+
if hasASlash then errorR(Error(FSComp.SR.tcUnexpectedSlashInType(), m))
-
+
let args : SynType list = getTypeFromTuplePath args
match args with
| [] -> error(InternalError("empty tuple type", m))
@@ -4758,7 +4845,7 @@ and TcStaticConstantParameter (cenv: cenv) (env: TcEnv) tpenv kind (StripParenTy
match idOpt with
| Some id ->
let item = Item.OtherName (Some id, ttype, None, Some container, id.idRange)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.AccessRights)
| _ -> ()
match v with
@@ -4778,7 +4865,7 @@ and TcStaticConstantParameter (cenv: cenv) (env: TcEnv) tpenv kind (StripParenTy
| SynConst.Double n when typeEquiv g g.float_ty kind -> record(g.float_ty); box (n: double)
| SynConst.Char n when typeEquiv g g.char_ty kind -> record(g.char_ty); box (n: char)
| SynConst.String (s, _, _)
- | SynConst.SourceIdentifier (_, s, _) when (not (isNull s)) && typeEquiv g g.string_ty kind -> record(g.string_ty); box (s: string)
+ | SynConst.SourceIdentifier (_, s, _) when typeEquiv g g.string_ty kind -> record(g.string_ty); box (s: string)
| SynConst.Bool b when typeEquiv g g.bool_ty kind -> record(g.bool_ty); box (b: bool)
| _ -> fail()
v, tpenv
@@ -4807,7 +4894,6 @@ and TcStaticConstantParameter (cenv: cenv) (env: TcEnv) tpenv kind (StripParenTy
| Const.Single n -> record(g.float32_ty); box (n: single)
| Const.Double n -> record(g.float_ty); box (n: double)
| Const.Char n -> record(g.char_ty); box (n: char)
- | Const.String null -> fail()
| Const.String s -> record(g.string_ty); box (s: string)
| Const.Bool b -> record(g.bool_ty); box (b: bool)
| _ -> fail()
@@ -4864,8 +4950,8 @@ and CrackStaticConstantArgs (cenv: cenv) env tpenv (staticParameters: Tainted
if sp.PUntaint((fun sp -> sp.IsOptional), m) then
match sp.PUntaint((fun sp -> sp.RawDefaultValue), m) with
- | Null -> error (Error(FSComp.SR.etStaticParameterRequiresAValue (spName, containerName, containerName, spName), m))
- | NonNull v -> v
+ | null -> error (Error(FSComp.SR.etStaticParameterRequiresAValue (spName, containerName, containerName, spName), m))
+ | v -> v
else
error (Error(FSComp.SR.etStaticParameterRequiresAValue (spName, containerName, containerName, spName), m))
| ps ->
@@ -4931,7 +5017,7 @@ and TcProvidedTypeApp (cenv: cenv) env tpenv tcref args m =
// We put the type name check after the 'isDirectReferenceToGenerated' check because we need the 'isDirectReferenceToGenerated' error to be shown for generated types
checkTypeName()
if hasNoArgs then
- mkAppTy tcref [], tpenv
+ mkWoNullAppTy tcref [], tpenv
else
let ty = Import.ImportProvidedType cenv.amap m providedTypeAfterStaticArguments
ty, tpenv
@@ -4942,7 +5028,7 @@ and TcProvidedTypeApp (cenv: cenv) env tpenv tcref args m =
/// Note that the generic type may be a nested generic type List.ListEnumerator.
/// In this case, 'argsR is only the instantiation of the suffix type arguments, and pathTypeArgs gives
/// the prefix of type arguments.
-and TcTypeApp (cenv: cenv) newOk checkConstraints occ env tpenv m tcref pathTypeArgs (synArgTys: SynType list) =
+and TcTypeApp (cenv: cenv) newOk checkConstraints occ env tpenv m tcref pathTypeArgs (synArgTys: SynType list) (tinst: TypeInst) =
let g = cenv.g
CheckTyconAccessible cenv.amap m env.AccessRights tcref |> ignore
CheckEntityAttributes g tcref m |> CommitOperationResult
@@ -4953,16 +5039,22 @@ and TcTypeApp (cenv: cenv) newOk checkConstraints occ env tpenv m tcref pathType
if tcref.Deref.IsProvided then TcProvidedTypeApp cenv env tpenv tcref synArgTys m else
#endif
- let tps, _, tinst, _ = FreshenTyconRef2 g m tcref
-
- // If we're not checking constraints, i.e. when we first assert the super/interfaces of a type definition, then just
- // clear the constraint lists of the freshly generated type variables. A little ugly but fairly localized.
- if checkConstraints = NoCheckCxs then tps |> List.iter (fun tp -> tp.SetConstraints [])
let synArgTysLength = synArgTys.Length
let pathTypeArgsLength = pathTypeArgs.Length
if tinst.Length <> pathTypeArgsLength + synArgTysLength then
error (TyconBadArgs(env.DisplayEnv, tcref, pathTypeArgsLength + synArgTysLength, m))
+ let tps = tinst |> List.skip pathTypeArgsLength |> List.map (fun t ->
+ match t with
+ | TType_var(typar, _)
+ | TType_measure(Measure.Var typar) -> typar
+ | t -> failwith $"TcTypeApp: {t}"
+ )
+
+ // If we're not checking constraints, i.e. when we first assert the super/interfaces of a type definition, then just
+ // clear the constraint lists of the freshly generated type variables. A little ugly but fairly localized.
+ if checkConstraints = NoCheckCxs then tps |> List.iter (fun tp -> tp.SetConstraints [])
+
let argTys, tpenv =
// Get the suffix of typars
let tpsForArgs = List.skip (tps.Length - synArgTysLength) tps
@@ -4976,7 +5068,7 @@ and TcTypeApp (cenv: cenv) newOk checkConstraints occ env tpenv m tcref pathType
List.iter2 (UnifyTypes cenv env m) tinst actualArgTys
// Try to decode System.Tuple --> F# tuple types etc.
- let ty = g.decompileType tcref actualArgTys
+ let ty = g.decompileType tcref actualArgTys g.knownWithoutNull
ty, tpenv
@@ -4991,7 +5083,7 @@ and TcTypeOrMeasureAndRecover kindOpt (cenv: cenv) newOk checkConstraints occ iw
match kindOpt, newOk with
| Some TyparKind.Measure, NoNewTypars -> TType_measure Measure.One
| Some TyparKind.Measure, _ -> TType_measure (NewErrorMeasure ())
- | _, NoNewTypars -> g.obj_ty
+ | _, NoNewTypars -> g.obj_ty_ambivalent
| _ -> NewErrorType ()
recoveryTy, tpenv
@@ -5008,9 +5100,9 @@ and TcNestedTypeApplication (cenv: cenv) newOk checkConstraints occ iwsam env tp
error(Error(FSComp.SR.tcTypeHasNoNestedTypes(), mWholeTypeApp))
match ty with
- | TType_app(tcref, _, _) ->
+ | TType_app(tcref, inst, _) ->
CheckIWSAM cenv env checkConstraints iwsam mWholeTypeApp tcref
- TcTypeApp cenv newOk checkConstraints occ env tpenv mWholeTypeApp tcref pathTypeArgs tyargs
+ TcTypeApp cenv newOk checkConstraints occ env tpenv mWholeTypeApp tcref pathTypeArgs tyargs inst
| _ ->
error(InternalError("TcNestedTypeApplication: expected type application", mWholeTypeApp))
@@ -5063,12 +5155,16 @@ and ConvSynPatToSynExpr synPat =
/// Check a long identifier 'Case' or 'Case argsR' that has been resolved to an active pattern case
and TcPatLongIdentActivePatternCase warnOnUpper (cenv: cenv) (env: TcEnv) vFlags patEnv ty (mLongId, item, apref, args, m) =
let g = cenv.g
-
let (TcPatLinearEnv(tpenv, names, takenNames)) = patEnv
let (APElemRef (apinfo, vref, idx, isStructRetTy)) = apref
+ let cenv =
+ match g.checkNullness,TryFindLocalizedFSharpStringAttribute g g.attrib_WarnOnWithoutNullArgumentAttribute vref.Attribs with
+ | true, (Some _ as warnMsg) -> {cenv with css.WarnWhenUsingWithoutNullOnAWithNullTarget = warnMsg}
+ | _ -> cenv
+
// Report information about the 'active recognizer' occurrence to IDE
- CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurence.Pattern, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mLongId, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Pattern, env.eAccessRights)
// TOTAL/PARTIAL ACTIVE PATTERNS
let _, vExpr, _, _, tinst, _ = TcVal true cenv env tpenv vref None None m
@@ -5076,18 +5172,106 @@ and TcPatLongIdentActivePatternCase warnOnUpper (cenv: cenv) (env: TcEnv) vFlags
let vExprTy = vExpr.Type
let activePatArgsAsSynPats, patArg =
- match args with
- | [] -> [], SynPat.Const(SynConst.Unit, m)
- | _ ->
- // This bit of type-directed analysis ensures that parameterized partial active patterns returning unit do not need to take an argument
- let dtys, retTy = stripFunTy g vExprTy
-
- if dtys.Length = args.Length + 1 &&
- ((isOptionTy g retTy && isUnitTy g (destOptionTy g retTy)) ||
- (isValueOptionTy g retTy && isUnitTy g (destValueOptionTy g retTy))) then
+ // only cases which return unit or unresolved type (in AP definition) compatible with unit can omit output arg
+ let canOmit retTy =
+ let couldResolveToUnit ty =
+ tryDestTyparTy g ty
+ |> ValueOption.exists (fun typar ->
+ not typar.IsSolved
+ && typar.Constraints |> List.forall (fun c ->
+ let (|Unit|_|) ty = if isUnitTy g ty then Some Unit else None
+
+ match c with
+ // These apply or could apply to unit.
+ | TyparConstraint.IsReferenceType _
+ | TyparConstraint.SupportsComparison _
+ | TyparConstraint.SupportsEquality _
+ | TyparConstraint.DefaultsTo (ty = Unit)
+ | TyparConstraint.AllowsRefStruct _
+ | TyparConstraint.MayResolveMember _ -> true
+
+ // Any other kind of constraint is incompatible with unit.
+ | TyparConstraint.CoercesTo _
+ | TyparConstraint.DefaultsTo _
+ | TyparConstraint.IsDelegate _
+ | TyparConstraint.IsEnum _
+ | TyparConstraint.IsNonNullableStruct _
+ | TyparConstraint.NotSupportsNull _
+ | TyparConstraint.IsUnmanaged _
+ | TyparConstraint.RequiresDefaultConstructor _
+ | TyparConstraint.SimpleChoice _
+ | TyparConstraint.NotSupportsNull _
+ | TyparConstraint.SupportsNull _ -> false))
+
+ let caseRetTy =
+ if isOptionTy g retTy then destOptionTy g retTy
+ elif isValueOptionTy g retTy then destValueOptionTy g retTy
+ elif isChoiceTy g retTy then destChoiceTy g retTy idx
+ else retTy
+
+ isUnitTy g caseRetTy || couldResolveToUnit caseRetTy
+
+ // This bit of type-directed analysis ensures that parameterized partial active patterns returning unit do not need to take an argument
+ let dtys, retTy = stripFunTy g vExprTy
+ let paramCount = if dtys.Length = 0 then 0 else dtys.Length - 1
+
+ let showErrMsg returnCount =
+ let fmtExprArgs paramCount =
+ let rec loop i (sb: Text.StringBuilder) =
+ let cutoff = 10
+ if i > paramCount then sb.ToString()
+ elif i > cutoff then sb.Append("...").ToString()
+ else loop (i + 1) (sb.Append(" e").Append i)
+
+ loop 1 (Text.StringBuilder())
+
+ let caseName = apinfo.ActiveTags[idx]
+ let msg =
+ match paramCount, returnCount with
+ | 0, 0 -> FSComp.SR.tcActivePatternArgsCountNotMatchNoArgsNoPat(caseName, caseName)
+ | 0, _ -> FSComp.SR.tcActivePatternArgsCountNotMatchOnlyPat(caseName)
+ | _, 0 -> FSComp.SR.tcActivePatternArgsCountNotMatchArgs(paramCount, caseName, fmtExprArgs paramCount)
+ | _, _ -> FSComp.SR.tcActivePatternArgsCountNotMatchArgsAndPat(paramCount, caseName, fmtExprArgs paramCount)
+ error(Error(msg, m))
+
+ // partial active pattern (returning bool) doesn't have output arg
+ if (not apinfo.IsTotal && isBoolTy g retTy) then
+ checkLanguageFeatureError g.langVersion LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern m
+ if paramCount = List.length args then
args, SynPat.Const(SynConst.Unit, m)
else
- List.frontAndBack args
+ showErrMsg 0
+
+ // for single case active pattern, if not all parameter provided, output will be a function
+ // that takes the remaining parameter as input
+ elif apinfo.IsTotal && apinfo.ActiveTags.Length = 1 && dtys.Length >= args.Length && not args.IsEmpty then
+ List.frontAndBack args
+
+ // active pattern cases returning unit or unknown things (in AP definition) can omit output arg
+ elif paramCount = args.Length then
+ // only cases which return unit or unresolved type (in AP definition) can omit output arg
+ if canOmit retTy then
+ args, SynPat.Const(SynConst.Unit, m)
+ else
+ showErrMsg 1
+
+ // active pattern in function param (e.g. let f (|P|_|) = ...)
+ elif tryDestTyparTy g vExprTy |> ValueOption.exists (fun typar -> not typar.IsSolved) then
+ List.frontAndBack args
+
+ // args count should equal to AP function params count
+ elif dtys.Length <> args.Length then
+ let returnCount =
+ match dtys with
+ // val (|P|) : expr1:_ -> unit
+ // val (|P|_|) : expr1:_ -> unit option
+ // val (|P|_|) : expr1:_ -> unit voption
+ | [_] when canOmit retTy -> 0
+ | _ -> 1
+
+ showErrMsg returnCount
+ else
+ List.frontAndBack args
if not (isNil activePatArgsAsSynPats) && apinfo.ActiveTags.Length <> 1 then
errorR (Error (FSComp.SR.tcRequireActivePatternWithOneResult (), m))
@@ -5151,6 +5335,7 @@ and TcExprFlex (cenv: cenv) flex compat (desiredTy: TType) (env: TcEnv) tpenv (s
if flex then
let argTy = NewInferenceType g
+ (destTyparTy g argTy).SetSupportsNullFlex(true)
if compat then
(destTyparTy g argTy).SetIsCompatFlex(true)
@@ -5252,17 +5437,17 @@ and TryTcStmt (cenv: cenv) env tpenv synExpr =
let expr, ty, tpenv = TcExprOfUnknownType cenv env tpenv synExpr
let m = synExpr.Range
let hasTypeUnit = TryUnifyUnitTypeWithoutWarning cenv env m ty
- hasTypeUnit, expr, tpenv
+ hasTypeUnit, ty, expr, tpenv
and CheckForAdjacentListExpression (cenv: cenv) synExpr hpa isInfix delayed (arg: SynExpr) =
let g = cenv.g
// func (arg)[arg2] gives warning that .[ must be used.
match delayed with
- | DelayedApp (hpa2, isSugar2, _, arg2, _) :: _ when not isInfix && (hpa = ExprAtomicFlag.NonAtomic) && isAdjacentListExpr isSugar2 hpa2 (Some synExpr) arg2 ->
+ | DelayedApp (hpa2, isSugar2, _, arg2, _) :: _ when not isInfix && (hpa = ExprAtomicFlag.NonAtomic) && isAdjacentListExpr isSugar2 hpa2 (Some synExpr) arg2 ->
let mWarning = unionRanges arg.Range arg2.Range
- match arg with
- | SynExpr.Paren _ ->
+ match arg with
+ | SynExpr.Paren _ ->
if g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then
warning(Error(FSComp.SR.tcParenThenAdjacentListArgumentNeedsAdjustment(), mWarning))
elif not (g.langVersion.IsExplicitlySpecifiedAs50OrBefore()) then
@@ -5275,7 +5460,7 @@ and CheckForAdjacentListExpression (cenv: cenv) synExpr hpa isInfix delayed (arg
elif not (g.langVersion.IsExplicitlySpecifiedAs50OrBefore()) then
informationalWarning(Error(FSComp.SR.tcListThenAdjacentListArgumentReserved(), mWarning))
- | _ ->
+ | _ ->
if g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then
warning(Error(FSComp.SR.tcOtherThenAdjacentListArgumentNeedsAdjustment(), mWarning))
elif not (g.langVersion.IsExplicitlySpecifiedAs50OrBefore()) then
@@ -5289,96 +5474,112 @@ and CheckForAdjacentListExpression (cenv: cenv) synExpr hpa isInfix delayed (arg
and TcExprThen (cenv: cenv) overallTy env tpenv isArg synExpr delayed =
let g = cenv.g
- match synExpr with
+ let cachedExpression =
+ env.eCachedImplicitYieldExpressions.FindAll synExpr.Range
+ |> List.tryPick (fun (se, ty, e) ->
+ if obj.ReferenceEquals(se, synExpr) then Some (ty, e) else None
+ )
- // A.
- // A.B.
- | SynExpr.DiscardAfterMissingQualificationAfterDot (expr1, _, m) ->
- let _, _, tpenv = suppressErrorReporting (fun () -> TcExprOfUnknownTypeThen cenv env tpenv expr1 [DelayedDot])
- mkDefault(m, overallTy.Commit), tpenv
+ match cachedExpression with
+ | Some (ty, expr) ->
+ UnifyOverallType cenv env synExpr.Range overallTy ty
+ expr, tpenv
+ | _ ->
- // A
- // A.B.C
- | LongOrSingleIdent (isOpt, longId, altNameRefCellOpt, mLongId) ->
- TcNonControlFlowExpr env <| fun env ->
- if isOpt then errorR(Error(FSComp.SR.tcSyntaxErrorUnexpectedQMark(), mLongId))
+ match synExpr with
- // Check to see if pattern translation decided to use an alternative identifier.
- match altNameRefCellOpt with
- | Some {contents = SynSimplePatAlternativeIdInfo.Decided altId} ->
- TcExprThen cenv overallTy env tpenv isArg (SynExpr.LongIdent (isOpt, SynLongIdent([altId], [], [None]), None, mLongId)) delayed
- | _ ->
- TcLongIdentThen cenv overallTy env tpenv longId delayed
+ // A.
+ // A.B.
+ | SynExpr.DiscardAfterMissingQualificationAfterDot (expr1, _, m) ->
+ let _, _, tpenv = suppressErrorReporting (fun () -> TcExprOfUnknownTypeThen cenv env tpenv expr1 [DelayedDot])
+ mkDefault(m, overallTy.Commit), tpenv
- // f?x<-v
- | SynExpr.Set(SynExpr.Dynamic(e1, _, e2, _) , rhsExpr, m) ->
- TcExprThenSetDynamic cenv overallTy env tpenv isArg e1 e2 rhsExpr m delayed
-
- // f x
- // f(x) // hpa=true
- // f[x] // hpa=true
- | SynExpr.App (hpa, isInfix, func, arg, mFuncAndArg) ->
- match func with
- | SynExpr.DotLambda _ -> errorR(Error(FSComp.SR.tcDotLambdaAtNotSupportedExpression(), func.Range))
- | _ -> ()
+ // A
+ // A.B.C
+ | LongOrSingleIdent (isOpt, longId, altNameRefCellOpt, mLongId) ->
+ TcNonControlFlowExpr env <| fun env ->
- TcNonControlFlowExpr env <| fun env ->
-
- CheckForAdjacentListExpression cenv synExpr hpa isInfix delayed arg
+ if isOpt then errorR(Error(FSComp.SR.tcSyntaxErrorUnexpectedQMark(), mLongId))
- TcExprThen cenv overallTy env tpenv false func ((DelayedApp (hpa, isInfix, Some func, arg, mFuncAndArg)) :: delayed)
+ // Check to see if pattern translation decided to use an alternative identifier.
+ match altNameRefCellOpt with
+ | Some {contents = SynSimplePatAlternativeIdInfo.Decided altId} ->
+ TcExprThen cenv overallTy env tpenv isArg (SynExpr.LongIdent (isOpt, SynLongIdent([altId], [], [None]), None, mLongId)) delayed
+ | _ ->
+ TcLongIdentThen cenv overallTy env tpenv longId delayed
+
+ // f?x<-v
+ | SynExpr.Set(SynExpr.Dynamic(e1, _, e2, _) , rhsExpr, m) ->
+ TcExprThenSetDynamic cenv overallTy env tpenv isArg e1 e2 rhsExpr m delayed
+
+ // f x
+ // f(x) // hpa=true
+ // f[x] // hpa=true
+ | SynExpr.App (hpa, isInfix, func, arg, mFuncAndArg) ->
+ match func with
+ | SynExpr.DotLambda _ -> errorR(Error(FSComp.SR.tcDotLambdaAtNotSupportedExpression(), func.Range))
+ | _ -> ()
- // e1?e2
- | SynExpr.Dynamic(e1, mQmark, e2, _) ->
- TcExprThenDynamic cenv overallTy env tpenv isArg e1 mQmark e2 delayed
+ TcNonControlFlowExpr env <| fun env ->
- // e
- | SynExpr.TypeApp (func, _, typeArgs, _, _, mTypeArgs, mFuncAndTypeArgs) ->
- TcExprThen cenv overallTy env tpenv false func ((DelayedTypeApp (typeArgs, mTypeArgs, mFuncAndTypeArgs)) :: delayed)
+ CheckForAdjacentListExpression cenv synExpr hpa isInfix delayed arg
- // expr1.id1
- // expr1.id1.id2
- // etc.
- | SynExpr.DotGet (expr1, _, SynLongIdent(longId, _, _), _) ->
- TcNonControlFlowExpr env <| fun env ->
- TcExprThen cenv overallTy env tpenv false expr1 ((DelayedDotLookup (longId, synExpr.Range)) :: delayed)
+ TcExprThen cenv overallTy env tpenv false func ((DelayedApp (hpa, isInfix, Some func, arg, mFuncAndArg)) :: delayed)
- // expr1.[expr2]
- // expr1.[e21, ..., e2n]
- // etc.
- | SynExpr.DotIndexedGet (expr1, IndexerArgs indexArgs, mDot, mWholeExpr) ->
- TcNonControlFlowExpr env <| fun env ->
- if not isArg && g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then
- informationalWarning(Error(FSComp.SR.tcIndexNotationDeprecated(), mDot))
- TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv None expr1 indexArgs delayed
-
- // expr1.[expr2] <- expr3
- // expr1.[e21, ..., e2n] <- expr3
- // etc.
- | SynExpr.DotIndexedSet (expr1, IndexerArgs indexArgs, expr3, mOfLeftOfSet, mDot, mWholeExpr) ->
- TcNonControlFlowExpr env <| fun env ->
- if g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then
- warning(Error(FSComp.SR.tcIndexNotationDeprecated(), mDot))
- TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv (Some (expr3, mOfLeftOfSet)) expr1 indexArgs delayed
+ // e1?e2
+ | SynExpr.Dynamic(e1, mQmark, e2, _) ->
+ TcExprThenDynamic cenv overallTy env tpenv isArg e1 mQmark e2 delayed
- // Part of 'T.Ident
- | SynExpr.Typar (typar, m) ->
- TcTyparExprThen cenv overallTy env tpenv typar m delayed
+ // e
+ | SynExpr.TypeApp (func, _, typeArgs, _, _, mTypeArgs, mFuncAndTypeArgs) ->
+ TcExprThen cenv overallTy env tpenv false func ((DelayedTypeApp (typeArgs, mTypeArgs, mFuncAndTypeArgs)) :: delayed)
- // ^expr
- | SynExpr.IndexFromEnd (rightExpr, m) ->
- errorR(Error(FSComp.SR.tcTraitInvocationShouldUseTick(), m))
- // Incorporate the '^' into the rightExpr, producing a nested SynExpr.Typar
- let adjustedExpr = ParseHelpers.adjustHatPrefixToTyparLookup m rightExpr
- TcExprThen cenv overallTy env tpenv isArg adjustedExpr delayed
+ // expr1.id1
+ // expr1.id1.id2
+ // etc.
+ | SynExpr.DotGet (expr1, _, SynLongIdent(longId, _, _), _) ->
+ TcNonControlFlowExpr env <| fun env ->
+ TcExprThen cenv overallTy env tpenv false expr1 ((DelayedDotLookup (longId, synExpr.Range)) :: delayed)
+
+ // expr1.[expr2]
+ // expr1.[e21, ..., e2n]
+ // etc.
+ | SynExpr.DotIndexedGet (expr1, IndexerArgs indexArgs, mDot, mWholeExpr) ->
+ TcNonControlFlowExpr env <| fun env ->
+ if not isArg && g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then
+ informationalWarning(Error(FSComp.SR.tcIndexNotationDeprecated(), mDot))
+ TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv None expr1 indexArgs delayed
+
+ // expr1.[expr2] <- expr3
+ // expr1.[e21, ..., e2n] <- expr3
+ // etc.
+ | SynExpr.DotIndexedSet (expr1, IndexerArgs indexArgs, expr3, mOfLeftOfSet, mDot, mWholeExpr) ->
+ TcNonControlFlowExpr env <| fun env ->
+ if g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then
+ warning(Error(FSComp.SR.tcIndexNotationDeprecated(), mDot))
+ // Wrap in extra parens: like MakeDelayedSet,
+ // but we don't actually want to delay it here.
+ let setInfo = SynExpr.Paren (expr3, range0, None, expr3.Range), mOfLeftOfSet
+ TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv (Some setInfo) expr1 indexArgs delayed
+
+ // Part of 'T.Ident
+ | SynExpr.Typar (typar, m) ->
+ TcTyparExprThen cenv overallTy env tpenv typar m delayed
+
+ // ^expr
+ | SynExpr.IndexFromEnd (rightExpr, m) ->
+ errorR(Error(FSComp.SR.tcTraitInvocationShouldUseTick(), m))
+ // Incorporate the '^' into the rightExpr, producing a nested SynExpr.Typar
+ let adjustedExpr = ParseHelpers.adjustHatPrefixToTyparLookup m rightExpr
+ TcExprThen cenv overallTy env tpenv isArg adjustedExpr delayed
- | _ ->
- match delayed with
- | [] -> TcExprUndelayed cenv overallTy env tpenv synExpr
| _ ->
- let expr, exprTy, tpenv = TcExprUndelayedNoType cenv env tpenv synExpr
- PropagateThenTcDelayed cenv overallTy env tpenv synExpr.Range (MakeApplicableExprNoFlex cenv expr) exprTy ExprAtomicFlag.NonAtomic delayed
+ match delayed with
+ | [] -> TcExprUndelayed cenv overallTy env tpenv synExpr
+ | _ ->
+ let expr, exprTy, tpenv = TcExprUndelayedNoType cenv env tpenv synExpr
+ PropagateThenTcDelayed cenv overallTy env tpenv synExpr.Range (MakeApplicableExprNoFlex cenv expr) exprTy ExprAtomicFlag.NonAtomic delayed
and TcExprThenSetDynamic (cenv: cenv) overallTy env tpenv isArg e1 e2 rhsExpr m delayed =
let e2 = mkDynamicArgExpr e2
@@ -5387,9 +5588,9 @@ and TcExprThenSetDynamic (cenv: cenv) overallTy env tpenv isArg e1 e2 rhsExpr m
and TcExprThenDynamic (cenv: cenv) overallTy env tpenv isArg e1 mQmark e2 delayed =
let appExpr =
- let argExpr = mkDynamicArgExpr e2
+ let argExpr = mkDynamicArgExpr e2
mkSynInfix mQmark e1 "?" argExpr
-
+
TcExprThen cenv overallTy env tpenv isArg appExpr delayed
and TcExprsWithFlexes (cenv: cenv) env m tpenv flexes (argTys: TType list) (args: SynExpr list) =
@@ -5421,7 +5622,7 @@ and TcExprUndelayedNoType (cenv: cenv) env tpenv synExpr =
/// or '_ array') is already sufficiently pre-known, and the information in the overall type
/// can be eagerly propagated into the actual type (UnifyOverallType), including pre-calculating
/// any type-directed conversion. This must mean that types extracted when processing the expression are not
-/// considered in determining any type-directed conversion.
+/// considered in determining any type-directed conversion.
///
/// Used for:
/// - Array or List expressions (both computed and fixed-size), to propagate from the overall type into the array/list type
@@ -5486,13 +5687,13 @@ and TcPossiblyPropagatingExprLeafThenConvert isPropagating (cenv: cenv) (overall
processExpr overallTy.Commit
/// Process a leaf construct where the processing of the construct is initially independent
-/// of the overall type. Determine and apply additional type-directed conversions after the processing
+/// of the overall type. Determine and apply additional type-directed conversions after the processing
/// is complete, as the inferred type of the expression may enable a type-directed conversion.
///
/// Used for:
-/// - trait call
+/// - trait call
/// - LibraryOnlyUnionCaseFieldGet
-/// - constants
+/// - constants
and TcNonPropagatingExprLeafThenConvert (cenv: cenv) (overallTy: OverallTy) (env: TcEnv) m processExpr =
// Process the construct
@@ -5515,11 +5716,11 @@ and TcAdjustExprForTypeDirectedConversions (cenv: cenv) (overallTy: OverallTy) a
expr
and TcNonControlFlowExpr (env: TcEnv) f =
- if env.eIsControlFlow then
+ if env.eIsControlFlow then
let envinner = { env with eIsControlFlow = false }
let res, tpenv = f envinner
let m = res.Range
-
+
// If the range is associated with calls like `async.For` for computation expression syntax control-flow
// desugaring then don't emit a debug point - the debug points are placed separately in CheckComputationExpressions.fs
match m.NotedSourceConstruct with
@@ -5588,13 +5789,13 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy.Commit, env.AccessRights)
TcConstExpr cenv overallTy env m tpenv synConst
| SynExpr.DotLambda (synExpr, m, trivia) ->
- match env.NameEnv.eUnqualifiedItems |> Map.tryFind "_arg1" with
+ match env.NameEnv.eUnqualifiedItems |> Map.tryFind "_arg1" with
// Compiler-generated _arg items can have more forms, the real underscore will be 1-character wide
| Some (Item.Value(valRef)) when valRef.Range.StartColumn+1 = valRef.Range.EndColumn ->
warning(Error(FSComp.SR.tcAmbiguousDiscardDotLambda(), trivia.UnderscoreRange))
| Some _ -> ()
| None -> ()
-
+
let unaryArg = mkSynId trivia.UnderscoreRange (cenv.synArgNameGenerator.New())
let svar = mkSynCompGenSimplePatVar unaryArg
let pushedExpr = pushUnaryArg synExpr unaryArg
@@ -5606,8 +5807,8 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
| SynExpr.Match (spMatch, synInputExpr, synClauses, _m, _trivia) ->
TcExprMatch cenv overallTy env tpenv synInputExpr spMatch synClauses
- | SynExpr.MatchLambda (isExnMatch, mArg, clauses, spMatch, m) ->
- TcExprMatchLambda cenv overallTy env tpenv (isExnMatch, mArg, clauses, spMatch, m)
+ | SynExpr.MatchLambda (isExnMatch, mFunction, clauses, spMatch, m) ->
+ TcExprMatchLambda cenv overallTy env tpenv (isExnMatch, mFunction, clauses, spMatch, m)
| SynExpr.Assert (x, m) ->
TcNonControlFlowExpr env <| fun env ->
@@ -5648,7 +5849,8 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
| SynExpr.Null m ->
TcNonControlFlowExpr env <| fun env ->
AddCxTypeUseSupportsNull env.DisplayEnv cenv.css m NoTrace overallTy.Commit
- mkNull m overallTy.Commit, tpenv
+ let tyWithNull = addNullnessToTy KnownWithNull overallTy.Commit
+ mkNull m tyWithNull, tpenv
| SynExpr.Lazy (synInnerExpr, m) ->
TcNonControlFlowExpr env <| fun env ->
@@ -5675,7 +5877,7 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
TcExprArrayOrList cenv overallTy env tpenv (isArray, args, m)
| SynExpr.New (superInit, synObjTy, arg, mNewExpr) ->
- let objTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.Use WarnOnIWSAM.Yes env tpenv synObjTy
+ let objTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.Use WarnOnIWSAM.Yes env tpenv synObjTy
TcNonControlFlowExpr env <| fun env ->
TcPropagatingExprLeafThenConvert cenv overallTy objTy env (* true *) mNewExpr (fun () ->
@@ -5713,6 +5915,17 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
TcForEachExpr cenv overallTy env tpenv (seqExprOnly, isFromSource, pat, synEnumExpr, synBodyExpr, m, spFor, spIn, m)
| SynExpr.ComputationExpr (hasSeqBuilder, comp, m) ->
+ let isIndexRange = match comp with | SynExpr.IndexRange _ -> true | _ -> false
+ let deprecatedPlacesWhereSeqCanBeOmitted =
+ cenv.g.langVersion.SupportsFeature LanguageFeature.DeprecatePlacesWhereSeqCanBeOmitted
+ if
+ deprecatedPlacesWhereSeqCanBeOmitted
+ && isIndexRange
+ && not hasSeqBuilder
+ && not cenv.g.compilingFSharpCore
+ then
+ warning (Error(FSComp.SR.chkDeprecatePlacesWhereSeqCanBeOmitted (), m))
+
let env = ExitFamilyRegion env
cenv.TcSequenceExpressionEntry cenv env overallTy tpenv (hasSeqBuilder, comp) m
@@ -5743,7 +5956,7 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
let _, tpenv = suppressErrorReporting (fun () -> TcExpr cenv overallTy env tpenv expr1)
mkDefault(m, overallTy.Commit), tpenv
- | SynExpr.Sequential (sp, dir, synExpr1, synExpr2, m) ->
+ | SynExpr.Sequential (sp, dir, synExpr1, synExpr2, m, _) ->
TcExprSequential cenv overallTy env tpenv (synExpr, sp, dir, synExpr1, synExpr2, m)
// Used to implement the type-directed 'implicit yield' rule for computation expressions
@@ -5775,7 +5988,10 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
// synExpr1.longId(synExpr2) <- expr3, very rarely used named property setters
| SynExpr.DotNamedIndexedPropertySet (synExpr1, synLongId, synExpr2, expr3, mStmt) ->
TcNonControlFlowExpr env <| fun env ->
- TcExprDotNamedIndexedPropertySet cenv overallTy env tpenv (synExpr1, synLongId, synExpr2, expr3, mStmt)
+ // Wrap in extra parens: like MakeDelayedSet,
+ // but we don't actually want to delay it here.
+ let setInfo = SynExpr.Paren (expr3, range0, None, expr3.Range)
+ TcExprDotNamedIndexedPropertySet cenv overallTy env tpenv (synExpr1, synLongId, synExpr2, setInfo, mStmt)
| SynExpr.LongIdentSet (synLongId, synExpr2, m) ->
TcNonControlFlowExpr env <| fun env ->
@@ -5784,7 +6000,10 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
// Type.Items(synExpr1) <- synExpr2
| SynExpr.NamedIndexedPropertySet (synLongId, synExpr1, synExpr2, mStmt) ->
TcNonControlFlowExpr env <| fun env ->
- TcExprNamedIndexPropertySet cenv overallTy env tpenv (synLongId, synExpr1, synExpr2, mStmt)
+ // Wrap in extra parens: like MakeDelayedSet,
+ // but we don't actually want to delay it here.
+ let setInfo = SynExpr.Paren (synExpr2, range0, None, synExpr2.Range)
+ TcExprNamedIndexPropertySet cenv overallTy env tpenv (synLongId, synExpr1, setInfo, mStmt)
| SynExpr.TraitCall (TypesForTypar tps, synMemberSig, arg, m) ->
TcNonControlFlowExpr env <| fun env ->
@@ -5807,23 +6026,23 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy.Commit, env.AccessRights)
TcQuotationExpr cenv overallTy env tpenv (oper, raw, ast, isFromQueryExpression, m)
- | SynExpr.YieldOrReturn ((isTrueYield, _), _, m)
- | SynExpr.YieldOrReturnFrom ((isTrueYield, _), _, m) when isTrueYield ->
+ | SynExpr.YieldOrReturn ((isTrueYield, _), _, _m, { YieldOrReturnKeyword = m })
+ | SynExpr.YieldOrReturnFrom ((isTrueYield, _), _, _m, { YieldOrReturnFromKeyword = m }) when isTrueYield ->
error(Error(FSComp.SR.tcConstructRequiresListArrayOrSequence(), m))
- | SynExpr.YieldOrReturn ((_, isTrueReturn), _, m)
- | SynExpr.YieldOrReturnFrom ((_, isTrueReturn), _, m) when isTrueReturn ->
+ | SynExpr.YieldOrReturn ((_, isTrueReturn), _, _m, { YieldOrReturnKeyword = m })
+ | SynExpr.YieldOrReturnFrom ((_, isTrueReturn), _, _m, { YieldOrReturnFromKeyword = m }) when isTrueReturn ->
error(Error(FSComp.SR.tcConstructRequiresComputationExpressions(), m))
- | SynExpr.YieldOrReturn (_, _, m)
- | SynExpr.YieldOrReturnFrom (_, _, m)
+ | SynExpr.YieldOrReturn (trivia = { YieldOrReturnKeyword = m })
+ | SynExpr.YieldOrReturnFrom (trivia = { YieldOrReturnFromKeyword = m })
| SynExpr.ImplicitZero m ->
error(Error(FSComp.SR.tcConstructRequiresSequenceOrComputations(), m))
- | SynExpr.DoBang (_, m)
- | SynExpr.MatchBang (range = m)
+ | SynExpr.DoBang (trivia = { DoBangKeyword = m })
+ | SynExpr.MatchBang (trivia = { MatchBangKeyword = m })
| SynExpr.WhileBang (range = m)
- | SynExpr.LetOrUseBang (range = m) ->
+ | SynExpr.LetOrUseBang (trivia = { LetOrUseBangKeyword = m }) ->
error(Error(FSComp.SR.tcConstructRequiresComputationExpression(), m))
| SynExpr.IndexFromEnd (rightExpr, m) ->
@@ -5853,17 +6072,18 @@ and TcExprMatch (cenv: cenv) overallTy env tpenv synInputExpr spMatch synClauses
// <@ function x -> (x: int) @>
// is
// Lambda (_arg2, Let (x, _arg2, x))
-and TcExprMatchLambda (cenv: cenv) overallTy env tpenv (isExnMatch, mArg, clauses, spMatch, m) =
+and TcExprMatchLambda (cenv: cenv) overallTy env tpenv (isExnMatch, mFunction, clauses, spMatch, m) =
let domainTy, resultTy = UnifyFunctionType None cenv env.DisplayEnv m overallTy.Commit
- let idv1, idve1 = mkCompGenLocal mArg (cenv.synArgNameGenerator.New()) domainTy
+ let idv1, idve1 = mkCompGenLocal mFunction (cenv.synArgNameGenerator.New()) domainTy
+ CallExprHasTypeSink cenv.tcSink (mFunction.StartRange, env.NameEnv, domainTy, env.AccessRights)
let envinner = ExitFamilyRegion env
let envinner = { envinner with eIsControlFlow = true }
- let idv2, matchExpr, tpenv = TcAndPatternCompileMatchClauses m mArg (if isExnMatch then Throw else ThrowIncompleteMatchException) cenv None domainTy (MustConvertTo (false, resultTy)) envinner tpenv clauses
+ let idv2, matchExpr, tpenv = TcAndPatternCompileMatchClauses m mFunction (if isExnMatch then Throw else ThrowIncompleteMatchException) cenv None domainTy (MustConvertTo (false, resultTy)) envinner tpenv clauses
let overallExpr = mkMultiLambda m [idv1] ((mkLet spMatch m idv2 idve1 matchExpr), resultTy)
overallExpr, tpenv
and TcExprTypeAnnotated (cenv: cenv) overallTy env tpenv (synBodyExpr, synType, m) =
- let tgtTy, tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synType
+ let tgtTy, tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synType
UnifyOverallType cenv env m overallTy tgtTy
let bodyExpr, tpenv = TcExpr cenv (MustConvertTo (false, tgtTy)) env tpenv synBodyExpr
let bodyExpr2 = TcAdjustExprForTypeDirectedConversions cenv overallTy tgtTy env m bodyExpr
@@ -5873,7 +6093,7 @@ and TcExprTypeTest (cenv: cenv) overallTy env tpenv (synInnerExpr, tgtTy, m) =
let g = cenv.g
let innerExpr, srcTy, tpenv = TcExprOfUnknownType cenv env tpenv synInnerExpr
UnifyTypes cenv env m overallTy.Commit g.bool_ty
- let tgtTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv tgtTy
+ let tgtTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv tgtTy
TcRuntimeTypeTest false true cenv env.DisplayEnv m tgtTy srcTy
let expr = mkCallTypeTest g m tgtTy innerExpr
expr, tpenv
@@ -5883,7 +6103,7 @@ and TcExprUpcast (cenv: cenv) overallTy env tpenv (synExpr, synInnerExpr, m) =
let tgtTy, tpenv =
match synExpr with
| SynExpr.Upcast (_, tgtTy, m) ->
- let tgtTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv tgtTy
+ let tgtTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv tgtTy
UnifyTypes cenv env m tgtTy overallTy.Commit
tgtTy, tpenv
| SynExpr.InferredUpcast _ ->
@@ -5901,7 +6121,7 @@ and TcExprDowncast (cenv: cenv) overallTy env tpenv (synExpr, synInnerExpr, m) =
let tgtTy, tpenv, isOperator =
match synExpr with
| SynExpr.Downcast (_, tgtTy, m) ->
- let tgtTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv tgtTy
+ let tgtTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv tgtTy
UnifyTypes cenv env m tgtTy overallTy.Commit
tgtTy, tpenv, true
| SynExpr.InferredDowncast _ -> overallTy.Commit, tpenv, false
@@ -5911,7 +6131,10 @@ and TcExprDowncast (cenv: cenv) overallTy env tpenv (synExpr, synInnerExpr, m) =
// TcRuntimeTypeTest ensures tgtTy is a nominal type. Hence we can insert a check here
// based on the nullness semantics of the nominal type.
- let expr = mkCallUnbox g m tgtTy innerExpr
+ let expr =
+ match (tgtTy,g) with
+ | NullTrueValue | NullableRefType | NullableTypar when g.checkNullness -> mkCallUnboxFast g m tgtTy innerExpr
+ | _ -> mkCallUnbox g m tgtTy innerExpr
expr, tpenv
and TcExprLazy (cenv: cenv) overallTy env tpenv (synInnerExpr, m) =
@@ -5956,7 +6179,7 @@ and TcExprArrayOrList (cenv: cenv) overallTy env tpenv (isArray, args, m) =
let argTy = NewInferenceType g
let actualTy = if isArray then mkArrayType g argTy else mkListTy g argTy
- // Propagating type directed conversion, e.g. for
+ // Propagating type directed conversion, e.g. for
// let x : seq = [ 1; 2 ]
// Consider also the case where there is no relation but an op_Implicit is enabled from List<_> to C
// let x : C = [ B(); B() ]
@@ -5997,20 +6220,20 @@ and TcExprObjectExpr (cenv: cenv) overallTy env tpenv (synObjTy, argopt, binds,
let mObjTy = synObjTy.Range
- let objTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synObjTy
+ let objTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synObjTy
// Work out the type of any interfaces to implement
let extraImpls, tpenv =
(tpenv, extraImpls) ||> List.mapFold (fun tpenv (SynInterfaceImpl(synIntfTy, _mWith, bindings, members, m)) ->
let overrides = unionBindingAndMembers bindings members
- let intfTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synIntfTy
+ let intfTy, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synIntfTy
if not (isInterfaceTy g intfTy) then
error(Error(FSComp.SR.tcExpectedInterfaceType(), m))
if isErasedType g intfTy then
errorR(Error(FSComp.SR.tcCannotInheritFromErasedType(), m))
(m, intfTy, overrides), tpenv)
- let realObjTy = if isObjTy g objTy && not (isNil extraImpls) then (p23 (List.head extraImpls)) else objTy
+ let realObjTy = if isObjTyAnyNullness g objTy && not (isNil extraImpls) then (p23 (List.head extraImpls)) else objTy
TcPropagatingExprLeafThenConvert cenv overallTy realObjTy env (* canAdhoc *) m (fun () ->
TcObjectExpr cenv env tpenv (objTy, realObjTy, argopt, binds, extraImpls, mObjTy, mNewExpr, m)
@@ -6029,7 +6252,7 @@ and TcExprWhileLoop (cenv: cenv) overallTy env tpenv (spWhile, synGuardExpr, syn
let g = cenv.g
UnifyTypes cenv env m overallTy.Commit g.unit_ty
- let guardExpr, tpenv =
+ let guardExpr, tpenv =
let env = { env with eIsControlFlow = false }
TcExpr cenv (MustEqual g.bool_ty) env tpenv synGuardExpr
@@ -6057,7 +6280,7 @@ and TcExprIntegerForLoop (cenv: cenv) overallTy env tpenv (spFor, spTo, id, star
// notify name resolution sink about loop variable
let item = Item.Value(mkLocalValRef idv)
- CallNameResolutionSink cenv.tcSink (idv.Range, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (idv.Range, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
let bodyExpr, tpenv = TcStmt cenv envinner tpenv body
mkFastForLoop g (spFor, spTo, m, idv, startExpr, dir, finishExpr, bodyExpr), tpenv
@@ -6108,7 +6331,7 @@ and TcExprSequential (cenv: cenv) overallTy env tpenv (synExpr, _sp, dir, synExp
and TcExprSequentialOrImplicitYield (cenv: cenv) overallTy env tpenv (sp, synExpr1, synExpr2, otherExpr, m) =
- let isStmt, expr1, tpenv =
+ let isStmt, expr1Ty, expr1, tpenv =
let env1 = { env with eIsControlFlow = (match sp with DebugPointAtSequential.SuppressNeither | DebugPointAtSequential.SuppressExpr -> true | _ -> false) }
TryTcStmt cenv env1 tpenv synExpr1
@@ -6121,7 +6344,14 @@ and TcExprSequentialOrImplicitYield (cenv: cenv) overallTy env tpenv (sp, synExp
// The first expression wasn't unit-typed, so proceed to the alternative interpretation
// Note a copy of the first expression is embedded in 'otherExpr' and thus
// this will type-check the first expression over again.
- TcExpr cenv overallTy env tpenv otherExpr
+ let cachedExpr =
+ match expr1 with
+ | Expr.DebugPoint(_,e) -> e
+ | _ -> expr1
+
+ env.eCachedImplicitYieldExpressions.Add(synExpr1.Range, (synExpr1, expr1Ty, cachedExpr))
+ try TcExpr cenv overallTy env tpenv otherExpr
+ finally env.eCachedImplicitYieldExpressions.Remove synExpr1.Range
and TcExprStaticOptimization (cenv: cenv) overallTy env tpenv (constraints, synExpr2, expr3, m) =
let constraintsR, tpenv = List.mapFold (TcStaticOptimizationConstraint cenv env) tpenv constraints
@@ -6141,8 +6371,8 @@ and TcExprDotSet (cenv: cenv) overallTy env tpenv (synExpr1, synLongId, synExpr2
and TcExprDotNamedIndexedPropertySet (cenv: cenv) overallTy env tpenv (synExpr1, synLongId, synExpr2, expr3, mStmt) =
let (SynLongIdent(longId, _, _)) = synLongId
let mExprAndDotLookup = unionRanges synExpr1.Range (rangeOfLid longId)
- TcExprThen cenv overallTy env tpenv false synExpr1
- [ DelayedDotLookup(longId, mExprAndDotLookup);
+ TcExprThen cenv overallTy env tpenv false synExpr1
+ [ DelayedDotLookup(longId, mExprAndDotLookup);
DelayedApp(ExprAtomicFlag.Atomic, false, None, synExpr2, mStmt)
MakeDelayedSet(expr3, mStmt)]
@@ -6151,7 +6381,7 @@ and TcExprLongIdentSet (cenv: cenv) overallTy env tpenv (synLongId, synExpr2, m)
// Type.Items(synExpr1) <- synExpr2
and TcExprNamedIndexPropertySet (cenv: cenv) overallTy env tpenv (synLongId, synExpr1, synExpr2, mStmt) =
- TcLongIdentThen cenv overallTy env tpenv synLongId
+ TcLongIdentThen cenv overallTy env tpenv synLongId
[ DelayedApp(ExprAtomicFlag.Atomic, false, None, synExpr1, mStmt)
MakeDelayedSet(synExpr2, mStmt) ]
@@ -6203,10 +6433,10 @@ and TcExprILAssembly (cenv: cenv) overallTy env tpenv (ilInstrs, synTyArgs, synA
let g = cenv.g
let ilInstrs = (ilInstrs :?> ILInstr[])
let argTys = NewInferenceTypes g synArgs
- let tyargs, tpenv = TcTypes cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synTyArgs
+ let tyargs, tpenv = TcTypes cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synTyArgs
// No subsumption at uses of IL assembly code
let args, tpenv = TcExprsNoFlexes cenv env m tpenv argTys synArgs
- let retTys, tpenv = TcTypes cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synRetTys
+ let retTys, tpenv = TcTypes cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synRetTys
let returnTy =
match retTys with
| [] -> g.unit_ty
@@ -6215,37 +6445,12 @@ and TcExprILAssembly (cenv: cenv) overallTy env tpenv (ilInstrs, synTyArgs, synA
UnifyTypes cenv env m overallTy.Commit returnTy
mkAsmExpr (Array.toList ilInstrs, tyargs, args, retTys, m), tpenv
-// Converts 'a..b' to a call to the '(..)' operator in FSharp.Core
-// Converts 'a..b..c' to a call to the '(.. ..)' operator in FSharp.Core
-//
-// NOTE: we could eliminate these more efficiently in LowerComputedCollections.fs, since
-// [| 1..4 |]
-// becomes [| for i in (..) 1 4 do yield i |]
-// instead of generating the array directly from the ranges
-and RewriteRangeExpr synExpr =
- match synExpr with
- // a..b..c (parsed as (a..b)..c )
- | SynExpr.IndexRange(Some (SynExpr.IndexRange(Some synExpr1, _, Some synStepExpr, _, _, _)), _, Some synExpr2, _m1, _m2, mWhole) ->
- let mWhole = mWhole.MakeSynthetic()
- Some (mkSynTrifix mWhole ".. .." synExpr1 synStepExpr synExpr2)
- // a..b
- | SynExpr.IndexRange (Some synExpr1, mOperator, Some synExpr2, _m1, _m2, mWhole) ->
- let otherExpr =
- let mWhole = mWhole.MakeSynthetic()
- match mkSynInfix mOperator synExpr1 ".." synExpr2 with
- | SynExpr.App (a, b, c, d, _) -> SynExpr.App (a, b, c, d, mWhole)
- | _ -> failwith "impossible"
- Some otherExpr
- | _ -> None
-
/// Check lambdas as a group, to catch duplicate names in patterns
and TcIteratedLambdas (cenv: cenv) isFirst (env: TcEnv) overallTy takenNames tpenv e =
let g = cenv.g
match e with
- | SynExpr.Lambda (isMember, isSubsequent, synSimplePats, bodyExpr, _, m, _) when isMember || isFirst || isSubsequent ->
-
+ | SynExpr.Lambda (isMember, isSubsequent, synSimplePats, bodyExpr, _parsedData, m, _trivia) when isMember || isFirst || isSubsequent ->
let domainTy, resultTy = UnifyFunctionType None cenv env.DisplayEnv m overallTy.Commit
-
let vs, (TcPatLinearEnv (tpenv, names, takenNames)) =
cenv.TcSimplePats cenv isMember CheckCxs domainTy env (TcPatLinearEnv (tpenv, Map.empty, takenNames)) synSimplePats
@@ -6253,29 +6458,29 @@ and TcIteratedLambdas (cenv: cenv) isFirst (env: TcEnv) overallTy takenNames tpe
let byrefs = vspecMap |> Map.map (fun _ v -> isByrefTy g v.Type, v)
let envinner = if isMember then envinner else ExitFamilyRegion envinner
let vspecs = vs |> List.map (fun nm -> NameMap.find nm vspecMap)
-
+
// Match up the arginfos with the generated arguments and apply any information extracted from the attributes
let envinner =
- match envinner.eLambdaArgInfos with
- | infos :: rest ->
- if infos.Length = vspecs.Length then
- (vspecs, infos) ||> List.iter2 (fun v argInfo ->
+ match envinner.eLambdaArgInfos with
+ | infos :: rest ->
+ if infos.Length = vspecs.Length then
+ (vspecs, infos) ||> List.iter2 (fun v argInfo ->
v.SetArgReprInfoForDisplay (Some argInfo)
let inlineIfLambda = HasFSharpAttribute g g.attrib_InlineIfLambdaAttribute argInfo.Attribs
- if inlineIfLambda then
+ if inlineIfLambda then
v.SetInlineIfLambda())
{ envinner with eLambdaArgInfos = rest }
| [] -> envinner
-
+
let bodyExpr, tpenv = TcIteratedLambdas cenv false envinner (MustConvertTo (false, resultTy)) takenNames tpenv bodyExpr
// See bug 5758: Non-monotonicity in inference: need to ensure that parameters are never inferred to have byref type, instead it is always declared
byrefs |> Map.iter (fun _ (orig, v) ->
if not orig && isByrefTy g v.Type then errorR(Error(FSComp.SR.tcParameterInferredByref v.DisplayName, v.Range)))
- mkMultiLambda m vspecs (bodyExpr, resultTy), tpenv
+ mkMultiLambda m vspecs (bodyExpr, resultTy), tpenv
- | e ->
+ | e ->
let env = { env with eIsControlFlow = true }
// Dive into the expression to check for syntax errors and suppress them if they show.
conditionallySuppressErrorReporting (not isFirst && synExprContainsError e) (fun () ->
@@ -6296,7 +6501,7 @@ and TcTyparExprThen (cenv: cenv) overallTy env tpenv synTypar m delayed =
match rest with
| [] -> delayed2
| _ -> DelayedDotLookup (rest, m2) :: delayed2
- CallNameResolutionSink cenv.tcSink (ident.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (ident.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.AccessRights)
TcItemThen cenv overallTy env tpenv ([], item, mExprAndLongId, [], AfterResolution.DoNothing) (Some ty) delayed3
//TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed item mItem rest afterResolution
| _ ->
@@ -6318,14 +6523,14 @@ and (|IndexArgOptionalFromEnd|) (cenv: cenv) indexArg =
and DecodeIndexArg (cenv: cenv) indexArg =
match indexArg with
| SynExpr.IndexRange (info1, _opm, info2, m1, m2, _) ->
- let info1 =
- match info1 with
+ let info1 =
+ match info1 with
| Some (IndexArgOptionalFromEnd cenv (expr1, isFromEnd1, _)) -> Some (expr1, isFromEnd1)
- | None -> None
- let info2 =
- match info2 with
+ | None -> None
+ let info2 =
+ match info2 with
| Some (IndexArgOptionalFromEnd cenv (synExpr2, isFromEnd2, _)) -> Some (synExpr2, isFromEnd2)
- | None -> None
+ | None -> None
IndexArgRange (info1, info2, m1, m2)
| IndexArgOptionalFromEnd cenv (expr, isFromEnd, m) ->
IndexArgItem(expr, isFromEnd, m)
@@ -6334,7 +6539,7 @@ and DecodeIndexArgs (cenv: cenv) indexArgs =
indexArgs |> List.map (DecodeIndexArg cenv)
and (|IndexerArgs|) expr =
- match expr with
+ match expr with
| SynExpr.Tuple (false, argExprs, _, _) -> argExprs
| _ -> [expr]
@@ -6350,15 +6555,15 @@ and ExpandIndexArgs (cenv: cenv) (synLeftExprOpt: SynExpr option) indexArgs =
let rewriteReverseExpr (rank: int) (offset: SynExpr) (range: range) =
let rankExpr = SynExpr.Const(SynConst.Int32 rank, range)
let sliceArgs = SynExpr.Paren(SynExpr.Tuple(false, [rankExpr; offset], [], range), range, Some range, range)
- match synLeftExprOpt with
- | None -> error(Error(FSComp.SR.tcInvalidUseOfReverseIndex(), range))
- | Some xsId ->
+ match synLeftExprOpt with
+ | None -> error(Error(FSComp.SR.tcInvalidUseOfReverseIndex(), range))
+ | Some xsId ->
mkSynApp1
(mkSynDot range range xsId (SynIdent((mkSynId (range.MakeSynthetic()) "GetReverseIndex"), None)))
sliceArgs
range
- let mkSynSomeExpr (m: range) x =
+ let mkSynSomeExpr (m: range) x =
let m = m.MakeSynthetic()
SynExpr.App (ExprAtomicFlag.NonAtomic, false, mkSynLidGet m FSharpLib.CorePath "Some", x, m)
@@ -6374,12 +6579,12 @@ and ExpandIndexArgs (cenv: cenv) (synLeftExprOpt: SynExpr option) indexArgs =
[ if fromEnd then rewriteReverseExpr pos expr range else expr ]
| IndexArgRange(info1, info2, range1, range2) ->
[
- match info1 with
+ match info1 with
| Some (a1, isFromEnd1) ->
yield mkSynSomeExpr range1 (if isFromEnd1 then rewriteReverseExpr pos a1 range1 else a1)
- | None ->
+ | None ->
yield mkSynNoneExpr range1
- match info2 with
+ match info2 with
| Some (a2, isFromEnd2) ->
yield mkSynSomeExpr range2 (if isFromEnd2 then rewriteReverseExpr pos a2 range2 else a2)
| None ->
@@ -6620,7 +6825,7 @@ and TcCtorCall isNaked cenv env tpenv (overallTy: OverallTy) objTy mObjTyOpt ite
| Item.DelegateCtor ty, [arg] ->
// Re-record the name resolution since we now know it's a constructor call
match mObjTyOpt with
- | Some mObjTy -> CallNameResolutionSink cenv.tcSink (mObjTy, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.AccessRights)
+ | Some mObjTy -> CallNameResolutionSink cenv.tcSink (mObjTy, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.AccessRights)
| None -> ()
TcNewDelegateThen cenv (MustEqual objTy) env tpenv mItem mWholeCall ty arg ExprAtomicFlag.NonAtomic delayed
@@ -6636,7 +6841,8 @@ and TcRecordConstruction (cenv: cenv) (overallTy: TType) isObjExpr env tpenv wit
UnifyTypes cenv env m overallTy objTy
// Types with implicit constructors can't use record or object syntax: all constructions must go through the implicit constructor
- if tycon.MembersOfFSharpTyconByName |> NameMultiMap.existsInRange (fun v -> v.IsIncrClassConstructor) then
+ let supportsObjectExpressionWithoutOverrides = isObjExpr && g.langVersion.SupportsFeature(LanguageFeature.AllowObjectExpressionWithoutOverrides)
+ if not supportsObjectExpressionWithoutOverrides && tycon.MembersOfFSharpTyconByName |> NameMultiMap.existsInRange (fun v -> v.IsIncrClassConstructor) then
errorR(Error(FSComp.SR.tcConstructorRequiresCall(tycon.DisplayName), m))
let fspecs = tycon.TrueInstanceFieldsAsList
@@ -6816,7 +7022,7 @@ and FreshenObjExprAbstractSlot (cenv: cenv) (env: TcEnv) (implTy: TType) virtNam
FreshenAbstractSlot g cenv.amap mBinding synTyparDecls absSlot
// Work out the required type of the member
- let bindingTy = mkFunTy cenv.g implTy (mkMethodTy cenv.g argTysFromAbsSlot retTyFromAbsSlot)
+ let bindingTy = mkFunTy cenv.g implTy (mkMethodTy cenv.g argTysFromAbsSlot retTyFromAbsSlot)
Some(typarsFromAbsSlotAreRigid, typarsFromAbsSlot, bindingTy)
@@ -6840,7 +7046,7 @@ and TcObjectExprBinding (cenv: cenv) (env: TcEnv) implTy tpenv (absSlotInfo, bin
let logicalMethId = id
let memberFlags = OverrideMemberFlags SynMemberKind.Member
bindingRhs, logicalMethId, memberFlags
-
+
| SynPat.Named (SynIdent(id,_), _, _, _), Some memberFlags ->
CheckMemberFlags None NewSlotsOK OverridesOK memberFlags mBinding
let bindingRhs = PushOnePatternToRhs cenv true (mkSynThisPatVar (ident (CompilerGeneratedName "this", id.idRange))) bindingRhs
@@ -6970,7 +7176,7 @@ and CheckSuperType (cenv: cenv) ty m =
typeEquiv g ty g.system_Array_ty ||
typeEquiv g ty g.system_MulticastDelegate_ty ||
typeEquiv g ty g.system_Delegate_ty then
- error(Error(FSComp.SR.tcPredefinedTypeCannotBeUsedAsSuperType(), m))
+ errorR(Error(FSComp.SR.tcPredefinedTypeCannotBeUsedAsSuperType(), m))
if isErasedType g ty then
errorR(Error(FSComp.SR.tcCannotInheritFromErasedType(), m))
@@ -6978,12 +7184,15 @@ and CheckSuperType (cenv: cenv) ty m =
and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraImpls, mObjTy, mNewExpr, mWholeExpr) =
let g = cenv.g
-
match tryTcrefOfAppTy g objTy with
| ValueNone -> error(Error(FSComp.SR.tcNewMustBeUsedWithNamedType(), mNewExpr))
| ValueSome tcref ->
let isRecordTy = tcref.IsRecordTycon
- if not isRecordTy && not (isInterfaceTy g objTy) && isSealedTy g objTy then errorR(Error(FSComp.SR.tcCannotCreateExtensionOfSealedType(), mNewExpr))
+ let isInterfaceTy = isInterfaceTy g objTy
+ let isFSharpObjModelTy = isFSharpObjModelTy g objTy
+ let isOverallTyAbstract = HasFSharpAttribute g g.attrib_AbstractClassAttribute tcref.Attribs || isAbstractTycon tcref.Deref
+
+ if not isRecordTy && not isInterfaceTy && isSealedTy g objTy then errorR(Error(FSComp.SR.tcCannotCreateExtensionOfSealedType(), mNewExpr))
CheckSuperType cenv objTy mObjTy
@@ -6994,14 +7203,14 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI
let env = EnterFamilyRegion tcref env
let ad = env.AccessRights
- if // record construction ?
+ if // record construction ? e.g { A = 1; B = 2 }
isRecordTy ||
- // object construction?
- (isFSharpObjModelTy g objTy && not (isInterfaceTy g objTy) && argopt.IsNone) then
+ // object construction? e.g. new A() { ... }
+ (isFSharpObjModelTy && not isInterfaceTy && argopt.IsNone) then
if argopt.IsSome then error(Error(FSComp.SR.tcNoArgumentsForRecordValue(), mWholeExpr))
if not (isNil extraImpls) then error(Error(FSComp.SR.tcNoInterfaceImplementationForConstructionExpression(), mNewExpr))
- if isFSharpObjModelTy g objTy && GetCtorShapeCounter env <> 1 then
+ if isFSharpObjModelTy && GetCtorShapeCounter env <> 1 then
error(Error(FSComp.SR.tcObjectConstructionCanOnlyBeUsedInClassTypes(), mNewExpr))
let fldsList =
binds |> List.map (fun b ->
@@ -7011,31 +7220,35 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI
TcRecordConstruction cenv objTy true env tpenv None objTy fldsList mWholeExpr
else
- let item = ForceRaise (ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mObjTy ad objTy)
+ // object expression construction e.g. { new A() with ... } or { new IA with ... }
+ let ctorCall, baseIdOpt, tpenv =
+ if isInterfaceTy then
+ match argopt with
+ | None ->
+ BuildObjCtorCall g mWholeExpr, None, tpenv
+ | Some _ ->
+ error(Error(FSComp.SR.tcConstructorForInterfacesDoNotTakeArguments(), mNewExpr))
+ else
+ let item = ForceRaise (ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mObjTy ad objTy)
- if isFSharpObjModelTy g objTy && GetCtorShapeCounter env = 1 then
- error(Error(FSComp.SR.tcObjectsMustBeInitializedWithObjectExpression(), mNewExpr))
+ if isFSharpObjModelTy && GetCtorShapeCounter env = 1 then
+ error(Error(FSComp.SR.tcObjectsMustBeInitializedWithObjectExpression(), mNewExpr))
- let ctorCall, baseIdOpt, tpenv =
- match item, argopt with
- | Item.CtorGroup(methodName, minfos), Some (arg, baseIdOpt) ->
- let meths = minfos |> List.map (fun minfo -> minfo, None)
- let afterResolution = ForNewConstructors cenv.tcSink env mObjTy methodName minfos
- let ad = env.AccessRights
-
- let expr, tpenv = TcMethodApplicationThen cenv env (MustEqual objTy) None tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic None []
- // The 'base' value is always bound
- let baseIdOpt = (match baseIdOpt with None -> Some(ident("base", mObjTy)) | Some id -> Some id)
- expr, baseIdOpt, tpenv
- | Item.FakeInterfaceCtor intfTy, None ->
- UnifyTypes cenv env mWholeExpr objTy intfTy
- let expr = BuildObjCtorCall g mWholeExpr
- expr, None, tpenv
- | Item.FakeInterfaceCtor _, Some _ ->
- error(Error(FSComp.SR.tcConstructorForInterfacesDoNotTakeArguments(), mNewExpr))
- | Item.CtorGroup _, None ->
- error(Error(FSComp.SR.tcConstructorRequiresArguments(), mNewExpr))
- | _ -> error(Error(FSComp.SR.tcNewRequiresObjectConstructor(), mNewExpr))
+ match item, argopt with
+ | Item.CtorGroup(methodName, minfos), Some (arg, baseIdOpt) ->
+ let meths = minfos |> List.map (fun minfo -> minfo, None)
+ let afterResolution = ForNewConstructors cenv.tcSink env mObjTy methodName minfos
+ let ad = env.AccessRights
+
+ let expr, tpenv = TcMethodApplicationThen cenv env (MustEqual objTy) None tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic None []
+ // The 'base' value is always bound
+ let baseIdOpt = (match baseIdOpt with None -> Some(ident("base", mObjTy)) | Some id -> Some id)
+ expr, baseIdOpt, tpenv
+
+ | Item.CtorGroup _, None ->
+ error(Error(FSComp.SR.tcConstructorRequiresArguments(), mNewExpr))
+
+ | _ -> error(Error(FSComp.SR.tcNewRequiresObjectConstructor(), mNewExpr))
let baseValOpt = MakeAndPublishBaseVal cenv env baseIdOpt objTy
let env = Option.foldBack (AddLocalVal g cenv.tcSink mNewExpr) baseValOpt env
@@ -7045,17 +7258,18 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI
let overridesAndVirts, tpenv = ComputeObjectExprOverrides cenv env tpenv impls
- // 2. check usage conditions
- overridesAndVirts |> List.iter (fun (m, implTy, dispatchSlots, dispatchSlotsKeyed, availPriorOverrides, overrides) ->
+ // 2. check usage conditions
+ for ovd in overridesAndVirts do
+ let (m, implTy, dispatchSlots, dispatchSlotsKeyed, availPriorOverrides, overrides) = ovd
let overrideSpecs = overrides |> List.map fst
let hasStaticMembers = dispatchSlots |> List.exists (fun reqdSlot -> not reqdSlot.MethodInfo.IsInstance)
-
if hasStaticMembers then
errorR(Error(FSComp.SR.chkStaticMembersOnObjectExpressions(), mObjTy))
DispatchSlotChecking.CheckOverridesAreAllUsedOnce (env.DisplayEnv, g, cenv.infoReader, true, implTy, dispatchSlotsKeyed, availPriorOverrides, overrideSpecs)
- DispatchSlotChecking.CheckDispatchSlotsAreImplemented (env.DisplayEnv, cenv.infoReader, m, env.NameEnv, cenv.tcSink, false, true, implTy, dispatchSlots, availPriorOverrides, overrideSpecs) |> ignore)
+ if not hasStaticMembers then
+ DispatchSlotChecking.CheckDispatchSlotsAreImplemented (env.DisplayEnv, cenv.infoReader, m, env.NameEnv, cenv.tcSink, isOverallTyAbstract, true, implTy, dispatchSlots, availPriorOverrides, overrideSpecs) |> ignore
// 3. create the specs of overrides
let allTypeImpls =
@@ -7087,8 +7301,12 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI
let objtyR, overrides' = allTypeImpls.Head
assert (typeEquiv g objTy objtyR)
let extraImpls = allTypeImpls.Tail
+ let supportsObjectExpressionWithoutOverrides = g.langVersion.SupportsFeature(LanguageFeature.AllowObjectExpressionWithoutOverrides)
- // 7. Build the implementation
+ if not supportsObjectExpressionWithoutOverrides && not isInterfaceTy && overrides'.IsEmpty && extraImpls.IsEmpty then
+ errorR (Error(FSComp.SR.tcInvalidObjectExpressionSyntaxForm (), mWholeExpr))
+
+ // 4. Build the implementation
let expr = mkObjExpr(objtyR, baseValOpt, ctorCall, overrides', extraImpls, mWholeExpr)
let expr = mkCoerceIfNeeded g realObjTy objtyR expr
expr, tpenv
@@ -7111,7 +7329,7 @@ and TcConstStringExpr cenv (overallTy: OverallTy) env m tpenv (s: string) litera
| _ -> false
let g = cenv.g
-
+
match isFormat g overallTy.Commit, literalType with
| true, LiteralArgumentType.StaticField ->
@@ -7138,7 +7356,7 @@ and TcFormatStringExpr cenv (overallTy: OverallTy) env m tpenv (fmtString: strin
let formatTy = mkPrintfFormatTy g aty bty cty dty ety
// This might qualify as a format string - check via a type directed rule
- let ok = not (isObjTy g overallTy.Commit) && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy.Commit formatTy
+ let ok = not (isObjTyAnyNullness g overallTy.Commit) && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy.Commit formatTy
if ok then
// Parse the format string to work out the phantom types
@@ -7217,7 +7435,7 @@ and TcInterpolatedStringExpr cenv (overallTy: OverallTy) env m tpenv (parts: Syn
Choice1Of2 (true, newFormatMethod)
// ... or if that fails then may be a FormattableString by a type-directed rule....
- elif (not (isObjTy g overallTy.Commit) &&
+ elif (not (isObjTyAnyNullness g overallTy.Commit) &&
((g.system_FormattableString_tcref.CanDeref && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy.Commit g.system_FormattableString_ty)
|| (g.system_IFormattable_tcref.CanDeref && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy.Commit g.system_IFormattable_ty))) then
@@ -7238,7 +7456,7 @@ and TcInterpolatedStringExpr cenv (overallTy: OverallTy) env m tpenv (parts: Syn
| None -> languageFeatureNotSupportedInLibraryError LanguageFeature.StringInterpolation m
// ... or if that fails then may be a PrintfFormat by a type-directed rule....
- elif not (isObjTy g overallTy.Commit) && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy.Commit formatTy then
+ elif not (isObjTyAnyNullness g overallTy.Commit) && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy.Commit formatTy then
// And if that succeeds, the printerTy and printerResultTy must be the same (there are no curried arguments)
UnifyTypes cenv env m printerTy printerResultTy
@@ -7308,8 +7526,7 @@ and TcInterpolatedStringExpr cenv (overallTy: OverallTy) env m tpenv (parts: Syn
if List.isEmpty synFillExprs then
if isString then
- let sb = System.Text.StringBuilder(printfFormatString).Replace("%%", "%")
- let str = mkString g m (sb.ToString())
+ let str = mkString g m (printfFormatString.Replace("%%", "%"))
TcPropagatingExprLeafThenConvert cenv overallTy g.string_ty env (* true *) m (fun () ->
str, tpenv
)
@@ -7320,25 +7537,68 @@ and TcInterpolatedStringExpr cenv (overallTy: OverallTy) env m tpenv (parts: Syn
// Type check the expressions filling the holes
let fillExprs, tpenv = TcExprsNoFlexes cenv env m tpenv argTys synFillExprs
- let fillExprsBoxed = (argTys, fillExprs) ||> List.map2 (mkCallBox g m)
+ // Take all interpolated string parts and typed fill expressions
+ // and convert them to typed expressions that can be used as args to System.String.Concat
+ // return an empty list if there are some format specifiers that make lowering to not applicable
+ let rec concatenable acc fillExprs parts =
+ match fillExprs, parts with
+ | [], [] ->
+ List.rev acc
+ | [], SynInterpolatedStringPart.FillExpr _ :: _
+ | _, [] ->
+ // This should never happen, there will always be as many typed fill expressions
+ // as there are FillExprs in the interpolated string parts
+ error(InternalError("Mismatch in interpolation expression count", m))
+ | _, SynInterpolatedStringPart.String (WithTrailingStringSpecifierRemoved "", _) :: parts ->
+ // If the string is empty (after trimming %s of the end), we skip it
+ concatenable acc fillExprs parts
+
+ | _, SynInterpolatedStringPart.String (WithTrailingStringSpecifierRemoved HasFormatSpecifier, _) :: _
+ | _, SynInterpolatedStringPart.FillExpr (_, Some _) :: _
+ | _, SynInterpolatedStringPart.FillExpr (SynExpr.Tuple (isStruct = false; exprs = [_; SynExpr.Const (SynConst.Int32 _, _)]), _) :: _ ->
+ // There was a format specifier like %20s{..} or {..,20} or {x:hh}, which means we cannot simply concat
+ []
- let argsExpr = mkArray (g.obj_ty, fillExprsBoxed, m)
- let percentATysExpr =
- if percentATys.Length = 0 then
- mkNull m (mkArrayType g g.system_Type_ty)
- else
- let tyExprs = percentATys |> Array.map (mkCallTypeOf g m) |> Array.toList
- mkArray (g.system_Type_ty, tyExprs, m)
+ | _, SynInterpolatedStringPart.String (s & WithTrailingStringSpecifierRemoved trimmed, m) :: parts ->
+ let finalStr = trimmed.Replace("%%", "%")
+ concatenable (mkString g (shiftEnd 0 (finalStr.Length - s.Length) m) finalStr :: acc) fillExprs parts
- let fmtExpr = MakeMethInfoCall cenv.amap m newFormatMethod [] [mkString g m printfFormatString; argsExpr; percentATysExpr] None
+ | fillExpr :: fillExprs, SynInterpolatedStringPart.FillExpr _ :: parts ->
+ concatenable (fillExpr :: acc) fillExprs parts
- if isString then
- TcPropagatingExprLeafThenConvert cenv overallTy g.string_ty env (* true *) m (fun () ->
- // Make the call to sprintf
- mkCall_sprintf g m printerTy fmtExpr [], tpenv
- )
- else
- fmtExpr, tpenv
+ let canLower =
+ g.langVersion.SupportsFeature LanguageFeature.LowerInterpolatedStringToConcat
+ && isString
+ && argTys |> List.forall (isStringTy g)
+
+ let concatenableExprs = if canLower then concatenable [] fillExprs parts else []
+
+ match concatenableExprs with
+ | [p1; p2; p3; p4] -> TcPropagatingExprLeafThenConvert cenv overallTy g.string_ty env m (fun () -> mkStaticCall_String_Concat4 g m p1 p2 p3 p4, tpenv)
+ | [p1; p2; p3] -> TcPropagatingExprLeafThenConvert cenv overallTy g.string_ty env m (fun () -> mkStaticCall_String_Concat3 g m p1 p2 p3, tpenv)
+ | [p1; p2] -> TcPropagatingExprLeafThenConvert cenv overallTy g.string_ty env m (fun () -> mkStaticCall_String_Concat2 g m p1 p2, tpenv)
+ | [p1] -> p1, tpenv
+ | _ ->
+
+ let fillExprsBoxed = (argTys, fillExprs) ||> List.map2 (mkCallBox g m)
+
+ let argsExpr = mkArray (g.obj_ty_withNulls, fillExprsBoxed, m)
+ let percentATysExpr =
+ if percentATys.Length = 0 then
+ mkNull m (mkArrayType g g.system_Type_ty)
+ else
+ let tyExprs = percentATys |> Array.map (mkCallTypeOf g m) |> Array.toList
+ mkArray (g.system_Type_ty, tyExprs, m)
+
+ let fmtExpr = MakeMethInfoCall cenv.amap m newFormatMethod [] [mkString g m printfFormatString; argsExpr; percentATysExpr] None
+
+ if isString then
+ TcPropagatingExprLeafThenConvert cenv overallTy g.string_ty env (* true *) m (fun () ->
+ // Make the call to sprintf
+ mkCall_sprintf g m printerTy fmtExpr [], tpenv
+ )
+ else
+ fmtExpr, tpenv
// The case for $"..." used as type FormattableString or IFormattable
| Choice2Of2 createFormattableStringMethod ->
@@ -7349,7 +7609,7 @@ and TcInterpolatedStringExpr cenv (overallTy: OverallTy) env m tpenv (parts: Syn
let fillExprsBoxed = (argTys, fillExprs) ||> List.map2 (mkCallBox g m)
let dotnetFormatStringExpr = mkString g m dotnetFormatString
- let argsExpr = mkArray (g.obj_ty, fillExprsBoxed, m)
+ let argsExpr = mkArray (g.obj_ty_withNulls, fillExprsBoxed, m)
// FormattableString are *always* turned into FormattableStringFactory.Create calls, boxing each argument
let createExpr, _ = BuildPossiblyConditionalMethodCall cenv env NeverMutates m false createFormattableStringMethod NormalValUse [] [dotnetFormatStringExpr; argsExpr] [] None
@@ -7473,7 +7733,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
let _, fldId = fld
match TryFindAnonRecdFieldOfType g overallTy fldId.idText with
| Some item ->
- CallNameResolutionSink cenv.tcSink (fldId.idRange, env.eNameResEnv, item, emptyTyparInst, ItemOccurence.UseInType, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (fldId.idRange, env.eNameResEnv, item, emptyTyparInst, ItemOccurrence.UseInType, env.eAccessRights)
| None -> ()
let firstPartRange = withStartEnd mWholeExpr.Start (mkPos mWholeExpr.StartLine (mWholeExpr.StartColumn + 1)) mWholeExpr
// Use the left { in the expression
@@ -7491,7 +7751,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
| None -> []
| Some(tinst, tcref, _, fldsList) ->
- let gtyp = mkAppTy tcref tinst
+ let gtyp = mkWoNullAppTy tcref tinst
UnifyTypes cenv env mWholeExpr overallTy gtyp
[ for n, v in fldsList do
@@ -7552,10 +7812,10 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
| None -> expr
expr, tpenv
-and CheckAnonRecdExprDuplicateFields (elems: Ident array) =
- elems |> Array.iteri (fun i (uc1: Ident) ->
- elems |> Array.iteri (fun j (uc2: Ident) ->
- if j > i && uc1.idText = uc2.idText then
+and CheckAnonRecdExprDuplicateFields (elems: Ident array) =
+ elems |> Array.iteri (fun i (uc1: Ident) ->
+ elems |> Array.iteri (fun j (uc2: Ident) ->
+ if j > i && uc1.idText = uc2.idText then
errorR(Error (FSComp.SR.tcAnonRecdDuplicateFieldId(uc1.idText), uc1.idRange))))
// Check '{| .... |}'
@@ -7565,7 +7825,7 @@ and TcAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, optOrigSynExpr,
TcNewAnonRecdExpr cenv overallTy env tpenv (isStruct, unsortedFieldIdsAndSynExprsGiven, mWholeExpr)
| Some orig ->
- // Ideally we should also check for duplicate field IDs in the TcCopyAndUpdateAnonRecdExpr case, but currently the logic is too complex to garante a proper error reporting
+ // Ideally we should also check for duplicate field IDs in the TcCopyAndUpdateAnonRecdExpr case, but currently the logic is too complex to guarantee a proper error reporting
// So here we error instead errorR to avoid cascading internal errors
unsortedFieldIdsAndSynExprsGiven
|> List.countBy (fun (fId, _, _) -> textOfLid fId.LongIdent)
@@ -7597,7 +7857,7 @@ and TcNewAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, unsortedField
sortedFieldExprs |> List.iteri (fun j (synLongIdent, _, _) ->
let m = rangeOfLid synLongIdent.LongIdent
let item = Item.AnonRecdField(anonInfo, sortedFieldTys, j, m)
- CallNameResolutionSink cenv.tcSink (m, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights))
+ CallNameResolutionSink cenv.tcSink (m, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights))
let unsortedFieldTys =
sortedFieldTys
@@ -7691,7 +7951,7 @@ and TcCopyAndUpdateAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, (or
match expr with
| Choice1Of2 _ ->
let item = Item.AnonRecdField(anonInfo, sortedFieldTysAll, j, fieldId.idRange)
- CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
| Choice2Of2 _ -> ())
let unsortedFieldTysAll =
@@ -7836,7 +8096,7 @@ and TcForEachExpr cenv overallTy env tpenv (seqExprOnly, isFromSource, synPat, s
let pat, _, vspecs, envinner, tpenv =
let env = { env with eIsControlFlow = false }
- TcMatchPattern cenv enumElemTy env tpenv synPat None
+ TcMatchPattern cenv enumElemTy env tpenv synPat None TcTrueMatchClause.No
let elemVar, pat =
// nice: don't introduce awful temporary for r.h.s. in the 99% case where we know what we're binding it to
@@ -7857,7 +8117,7 @@ and TcForEachExpr cenv overallTy env tpenv (seqExprOnly, isFromSource, synPat, s
let valsDefinedByMatching = ListSet.remove valEq elemVar vspecs
CompilePatternForMatch
cenv env synEnumExpr.Range pat.Range false IgnoreWithWarning (elemVar, [], None)
- [MatchClause(pat, None, TTarget(valsDefinedByMatching, bodyExpr, None), mIn)]
+ [MatchClause(pat, None, TTarget(valsDefinedByMatching, bodyExpr, None), mIn)]
enumElemTy
overallTy.Commit
@@ -7889,7 +8149,7 @@ and TcForEachExpr cenv overallTy env tpenv (seqExprOnly, isFromSource, synPat, s
WhileLoopForCompiledForEachExprMarker, guardExpr,
mkInvisibleLet mIn elemVar currentExpr bodyExpr,
mFor),
- BuildDisposableCleanup cenv env mWholeExpr enumeratorVar,
+ BuildDisposableCleanup cenv env mWholeExpr enumeratorVar,
mFor, g.unit_ty, DebugPointAtTry.No, DebugPointAtFinally.No)))
let overallExpr = overallExprFixup overallExpr
@@ -7920,7 +8180,7 @@ and TcQuotationExpr cenv overallTy env tpenv (_oper, raw, ast, isFromQueryExpres
// We serialize the quoted expression to bytes in IlxGen after type inference etc. is complete.
expr, tpenv
-/// When checking sequence of function applications,
+/// When checking sequence of function applications,
/// type applications and dot-notation projections, first extract known
/// type information from the applications.
///
@@ -7985,6 +8245,10 @@ and Propagate (cenv: cenv) (overallTy: OverallTy) (env: TcEnv) tpenv (expr: Appl
// seq { ... }
| SynExpr.ComputationExpr _ -> ()
+ // async { }
+ // seq { }
+ | SynExpr.Record (None, None, [], _) when g.langVersion.SupportsFeature LanguageFeature.EmptyBodiedComputationExpressions -> ()
+
// expr[idx]
// expr[idx1, idx2]
// expr[idx1..]
@@ -7997,7 +8261,7 @@ and Propagate (cenv: cenv) (overallTy: OverallTy) (env: TcEnv) tpenv (expr: Appl
()
else
// This is the error path. The error we give depends on what's enabled.
- //
+ //
// First, 'delayed' is about to be dropped on the floor, do rudimentary checking to get name resolutions in its body
RecordNameAndTypeResolutionsDelayed cenv env tpenv delayed
let vName =
@@ -8009,15 +8273,15 @@ and Propagate (cenv: cenv) (overallTy: OverallTy) (env: TcEnv) tpenv (expr: Appl
if g.langVersion.IsExplicitlySpecifiedAs50OrBefore() then
error (NotAFunctionButIndexer(denv, overallTy.Commit, vName, mExpr, mArg, false))
match vName with
- | Some nm ->
+ | Some nm ->
error(Error(FSComp.SR.tcNotAFunctionButIndexerNamedIndexingNotYetEnabled(nm, nm), mExprAndArg))
- | _ ->
+ | _ ->
error(Error(FSComp.SR.tcNotAFunctionButIndexerIndexingNotYetEnabled(), mExprAndArg))
else
match vName with
- | Some nm ->
+ | Some nm ->
error(Error(FSComp.SR.tcNotAnIndexerNamedIndexingNotYetEnabled(nm), mExprAndArg))
- | _ ->
+ | _ ->
error(Error(FSComp.SR.tcNotAnIndexerIndexingNotYetEnabled(), mExprAndArg))
else
if IsIndexerType g cenv.amap expr.Type then
@@ -8129,7 +8393,7 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) =
// Nameof resolution resolves to a symbol and in general we make that the same symbol as
// would resolve if the long ident was used as an expression at the given location.
//
- // So we first check if the first identifier resolves as an expression, if so commit and and resolve.
+ // So we first check if the first identifier resolves as an expression, if so commit and resolve.
//
// However we don't commit for a type names - nameof allows 'naked' type names and thus all type name
// resolutions are checked separately in the next step.
@@ -8141,8 +8405,11 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) =
when
(match item with
| Item.DelegateCtor _
- | Item.CtorGroup _
- | Item.FakeInterfaceCtor _ -> false
+ | Item.CtorGroup _ -> false
+ | Item.Types _ when delayed.IsEmpty ->
+ match delayed with
+ | [] | [DelayedTypeApp _] -> false
+ | _ -> true
| _ -> true) ->
let overallTy = match overallTyOpt with None -> MustEqual (NewInferenceType g) | Some t -> t
let _, _ = TcItemThen cenv overallTy env tpenv res None delayed
@@ -8155,11 +8422,11 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) =
let resolvedToTypeName =
if (match delayed with [DelayedTypeApp _] | [] -> true | _ -> false) then
let (TypeNameResolutionInfo(_, staticArgsInfo)) = GetLongIdentTypeNameInfo delayed
- match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInAttribute OpenQualified env.eNameResEnv ad longId staticArgsInfo PermitDirectReferenceToGeneratedType.No with
- | Result (tinstEnclosing, tcref) when IsEntityAccessible cenv.amap m ad tcref ->
+ match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.UseInAttribute OpenQualified env.eNameResEnv ad longId staticArgsInfo PermitDirectReferenceToGeneratedType.No with
+ | Result (tinstEnclosing, tcref, inst) when IsEntityAccessible cenv.amap m ad tcref ->
match delayed with
| [DelayedTypeApp (tyargs, _, mExprAndTypeArgs)] ->
- TcTypeApp cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv mExprAndTypeArgs tcref tinstEnclosing tyargs |> ignore
+ TcTypeApp cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType env tpenv mExprAndTypeArgs tcref tinstEnclosing tyargs inst |> ignore
| _ -> ()
true // resolved to a type name, done with checks
| _ ->
@@ -8182,7 +8449,7 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) =
if resolvedToModuleOrNamespaceName then result else
ForceRaise nameResolutionResult |> ignore
- // If that didn't give aan exception then raise a generic error
+ // If that didn't give an exception then raise a generic error
error (Error(FSComp.SR.expressionHasNoName(), m))
// expr allowed, even with qualifications
@@ -8200,7 +8467,7 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) =
// expr : type" allowed with no subsequent qualifications
| SynExpr.Typed (synBodyExpr, synType, _) when delayed.IsEmpty && overallTyOpt.IsNone ->
- let tgtTy, _tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv synType
+ let tgtTy, _tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv synType
check (Some (MustEqual tgtTy)) resultOpt synBodyExpr delayed
| _ ->
@@ -8218,7 +8485,7 @@ and TcNameOfExprResult (cenv: cenv) (lastIdent: Ident) m =
// TcApplicationThen: Typecheck "expr x" + projections
//-------------------------------------------------------------------------
-// leftExpr[idx] gives a warning
+// leftExpr[idx] gives a warning
and isAdjacentListExpr isSugar atomicFlag (synLeftExprOpt: SynExpr option) (synArg: SynExpr) =
not isSugar &&
if atomicFlag = ExprAtomicFlag.Atomic then
@@ -8228,11 +8495,11 @@ and isAdjacentListExpr isSugar atomicFlag (synLeftExprOpt: SynExpr option) (synA
| _ -> false
else
match synLeftExprOpt with
- | Some synLeftExpr ->
+ | Some synLeftExpr ->
match synArg with
| SynExpr.ArrayOrList (false, _, _)
| SynExpr.ArrayOrListComputed (false, _, _) ->
- synLeftExpr.Range.IsAdjacentTo synArg.Range
+ synLeftExpr.Range.IsAdjacentTo synArg.Range
| _ -> false
| _ -> false
@@ -8246,12 +8513,22 @@ and TcApplicationThen (cenv: cenv) (overallTy: OverallTy) env tpenv mExprAndArg
let mArg = synArg.Range
let mLeftExpr = leftExpr.Range
+ /// Treat an application of a value to an empty record expression
+ /// as a computation expression with a single unit expression.
+ /// Insert a (), i.e., such that builder { } ≡ builder { () }.
+ /// This transformation is only valid for language
+ /// versions that support this feature.
+ let (|EmptyFieldListAsUnit|_|) recordFields =
+ match recordFields with
+ | [] when g.langVersion.SupportsFeature LanguageFeature.EmptyBodiedComputationExpressions -> Some (EmptyFieldListAsUnit (SynExpr.Const (SynConst.Unit, range0)))
+ | _ -> None
+
// If the type of 'synArg' unifies as a function type, then this is a function application, otherwise
// it is an error or a computation expression or indexer or delegate invoke
match UnifyFunctionTypeUndoIfFailed cenv denv mLeftExpr exprTy with
| ValueSome (domainTy, resultTy) ->
- // atomicLeftExpr[idx] unifying as application gives a warning
+ // atomicLeftExpr[idx] unifying as application gives a warning
if not isSugar then
checkHighPrecedenceFunctionApplicationToList g [synArg] atomicFlag mExprAndArg
@@ -8267,53 +8544,67 @@ and TcApplicationThen (cenv: cenv) (overallTy: OverallTy) env tpenv mExprAndArg
// though users don't realise that.
let synArg =
match synArg with
- | SynExpr.ComputationExpr (false, comp, m) when
+ // seq { comp }
+ // seq { }
+ | SynExpr.ComputationExpr (false, comp, m)
+ | SynExpr.Record (None, None, EmptyFieldListAsUnit comp, m) when
(match leftExpr with
| ApplicableExpr(expr=Expr.Op(TOp.Coerce, _, [SeqExpr g], _)) -> true
| _ -> false) ->
SynExpr.ComputationExpr (true, comp, m)
+
| _ -> synArg
- let arg, tpenv =
+ let (arg, tpenv), cenv =
// treat left and right of '||' and '&&' as control flow, so for example
// f expr1 && g expr2
// will have debug points on "f expr1" and "g expr2"
- let env =
+ let env,cenv =
match leftExpr with
| ApplicableExpr(expr=Expr.Val (vref, _, _))
| ApplicableExpr(expr=Expr.App (Expr.Val (vref, _, _), _, _, [_], _))
when valRefEq g vref g.and_vref
- || valRefEq g vref g.and2_vref
+ || valRefEq g vref g.and2_vref
|| valRefEq g vref g.or_vref
|| valRefEq g vref g.or2_vref ->
- { env with eIsControlFlow = true }
- | _ -> env
-
- TcExprFlex2 cenv domainTy env false tpenv synArg
+ { env with eIsControlFlow = true },cenv
+ | ApplicableExpr(expr=Expr.Val (valRef=vref))
+ | ApplicableExpr(expr=Expr.App (funcExpr=Expr.Val (valRef=vref))) ->
+ match TryFindLocalizedFSharpStringAttribute g g.attrib_WarnOnWithoutNullArgumentAttribute vref.Attribs with
+ | Some _ as msg -> env,{ cenv with css.WarnWhenUsingWithoutNullOnAWithNullTarget = msg}
+ | None when cenv.css.WarnWhenUsingWithoutNullOnAWithNullTarget <> None ->
+ env, { cenv with css.WarnWhenUsingWithoutNullOnAWithNullTarget = None}
+ | None -> env,cenv
+ | _ -> env,cenv
+
+ TcExprFlex2 cenv domainTy env false tpenv synArg, cenv
let exprAndArg, resultTy = buildApp cenv leftExpr resultTy arg mExprAndArg
TcDelayed cenv overallTy env tpenv mExprAndArg exprAndArg resultTy atomicFlag delayed
| ValueNone ->
- // Type-directed invokables
+ // Type-directed invocables
match synArg with
// leftExpr[idx]
// leftExpr[idx] <- expr2
- | SynExpr.ArrayOrListComputed(false, IndexerArgs indexArgs, m)
- when
- isAdjacentListExpr isSugar atomicFlag synLeftExprOpt synArg &&
+ | SynExpr.ArrayOrListComputed(false, IndexerArgs indexArgs, m)
+ when
+ isAdjacentListExpr isSugar atomicFlag synLeftExprOpt synArg &&
g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot ->
let expandedIndexArgs = ExpandIndexArgs cenv synLeftExprOpt indexArgs
- let setInfo, delayed =
- match delayed with
+ let setInfo, delayed =
+ match delayed with
| DelayedSet(expr3, _) :: rest -> Some (expr3, unionRanges leftExpr.Range synArg.Range), rest
| _ -> None, delayed
TcIndexingThen cenv env overallTy mExprAndArg m tpenv setInfo synLeftExprOpt leftExpr.Expr exprTy expandedIndexArgs indexArgs delayed
- // Perhaps 'leftExpr' is a computation expression builder, and 'arg' is '{ ... }'
- | SynExpr.ComputationExpr (false, comp, _m) ->
+ // Perhaps 'leftExpr' is a computation expression builder, and 'arg' is '{ ... }' or '{ }':
+ // leftExpr { comp }
+ // leftExpr { }
+ | SynExpr.ComputationExpr (false, comp, _m)
+ | SynExpr.Record (None, None, EmptyFieldListAsUnit comp, _m) ->
let bodyOfCompExpr, tpenv = cenv.TcComputationExpression cenv env overallTy tpenv (mLeftExpr, leftExpr.Expr, exprTy, comp)
TcDelayed cenv overallTy env tpenv mExprAndArg (MakeApplicableExprNoFlex cenv bodyOfCompExpr) (tyOfExpr g bodyOfCompExpr) ExprAtomicFlag.NonAtomic delayed
@@ -8374,9 +8665,6 @@ and TcItemThen (cenv: cenv) (overallTy: OverallTy) env tpenv (tinstEnclosing, it
| Item.CtorGroup(nm, minfos) ->
TcCtorItemThen cenv overallTy env item nm minfos tinstEnclosing tpenv mItem afterResolution delayed
- | Item.FakeInterfaceCtor _ ->
- error(Error(FSComp.SR.tcInvalidUseOfInterfaceType(), mItem))
-
| Item.ImplicitOp(id, sln) ->
TcImplicitOpItemThen cenv overallTy env id sln tpenv mItem delayed
@@ -8430,14 +8718,14 @@ and TcUnionCaseOrExnCaseOrActivePatternResultItemThen (cenv: cenv) overallTy env
let ucaseAppTy = NewInferenceType g
let mkConstrApp, argTys, argNames =
match item with
- | Item.ActivePatternResult(apinfo, _apOverallTy, n, _) ->
+ | Item.ActivePatternResult(apinfo, _apOverallTy, n, m) ->
let aparity = apinfo.ActiveTags.Length
match aparity with
| 0 | 1 ->
let mkConstrApp _mArgs = function [arg] -> arg | _ -> error(InternalError("ApplyUnionCaseOrExn", mItem))
mkConstrApp, [ucaseAppTy], [ for s, m in apinfo.ActiveTagsWithRanges -> mkSynId m s ]
| _ ->
- let ucref = mkChoiceCaseRef g mItem aparity n
+ let ucref = mkChoiceCaseRef g m aparity n
let _, _, tinst, _ = FreshenTyconRef2 g mItem ucref.TyconRef
let ucinfo = UnionCaseInfo (tinst, ucref)
ApplyUnionCaseOrExnTypes mItem cenv env ucaseAppTy (Item.UnionCase(ucinfo, false))
@@ -8502,7 +8790,7 @@ and TcUnionCaseOrExnCaseOrActivePatternResultItemThen (cenv: cenv) overallTy env
| Item.UnionCase (uci, _) -> Item.UnionCaseField (uci, i)
| Item.ExnCase tref -> Item.RecdField (RecdFieldInfo ([], RecdFieldRef (tref, id.idText)))
| _ -> failwithf "Expecting union case or exception item, got: %O" item
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, argItem, emptyTyparInst, ItemOccurence.Use, ad)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, argItem, emptyTyparInst, ItemOccurrence.Use, ad)
else error(Error(FSComp.SR.tcUnionCaseFieldCannotBeUsedMoreThanOnce(id.idText), id.idRange))
currentIndex <- SEEN_NAMED_ARGUMENT
| None ->
@@ -8575,7 +8863,7 @@ and TcUnionCaseOrExnCaseOrActivePatternResultItemThen (cenv: cenv) overallTy env
let argName = argNamesIfFeatureEnabled |> List.tryItem i |> Option.map (fun x -> x.idText) |> Option.defaultWith (fun () -> "arg" + string i)
mkCompGenLocal mItem argName ty)
|> List.unzip
-
+
let constrApp = mkConstrApp mItem args
let lam = mkMultiLambda mItem vs (constrApp, tyOfExpr g constrApp)
lam)
@@ -8592,20 +8880,20 @@ and TcTypeItemThen (cenv: cenv) overallTy env nm ty tpenv mItem tinstEnclosing d
// If Item.Types is returned then the ty will be of the form TType_app(tcref, genericTyargs) where tyargs
// is a fresh instantiation for tcref. TcNestedTypeApplication will chop off precisely #genericTyargs args
// and replace them by 'tyargs'
- let ty, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs ty tinstEnclosing tyargs
+ let ty, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs ty tinstEnclosing tyargs
// Report information about the whole expression including type arguments to VS
let item = Item.Types(nm, [ty])
- CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
let typeNameResInfo = GetLongIdentTypeNameInfo otherDelayed
let item, mItem, rest, afterResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver (unionRanges mExprAndTypeArgs mLongId) ad env.eNameResEnv ty longId typeNameResInfo IgnoreOverrides true None
TcItemThen cenv overallTy env tpenv ((argsOfAppTy g ty), item, mItem, rest, afterResolution) None otherDelayed
| DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs) :: _delayed' ->
// A case where we have an incomplete name e.g. 'Foo.' - we still want to report it to VS!
- let ty, _ = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs ty tinstEnclosing tyargs
+ let ty, _ = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs ty tinstEnclosing tyargs
let item = Item.Types(nm, [ty])
- CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
// Same error as in the following case
error(Error(FSComp.SR.tcInvalidUseOfTypeName(), mItem))
@@ -8614,7 +8902,10 @@ and TcTypeItemThen (cenv: cenv) overallTy env nm ty tpenv mItem tinstEnclosing d
// In this case the type is not generic, and indeed we should never have returned Item.Types.
// That's because ResolveTypeNamesToCtors should have been set at the original
// call to ResolveLongIdentAsExprAndComputeRange
- error(Error(FSComp.SR.tcInvalidUseOfTypeName(), mItem))
+ if isInterfaceTy g ty then
+ error(Error(FSComp.SR.tcInvalidUseOfInterfaceType(), mItem))
+ else
+ error(Error(FSComp.SR.tcInvalidUseOfTypeName(), mItem))
and TcMethodItemThen (cenv: cenv) overallTy env item methodName minfos tpenv mItem afterResolution staticTyOpt delayed =
let ad = env.eAccessRights
@@ -8632,7 +8923,7 @@ and TcMethodItemThen (cenv: cenv) overallTy env item methodName minfos tpenv mIt
// Replace the resolution including the static parameters, plus the extra information about the original method info
let item = Item.MethodGroup(methodName, [minfoAfterStaticArguments], Some minfos[0])
- CallNameResolutionSinkReplacing cenv.tcSink (mItem, env.NameEnv, item, [], ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSinkReplacing cenv.tcSink (mItem, env.NameEnv, item, [], ItemOccurrence.Use, env.eAccessRights)
match otherDelayed with
| DelayedApp(atomicFlag, _, _, arg, mExprAndArg) :: otherDelayed ->
@@ -8643,12 +8934,12 @@ and TcMethodItemThen (cenv: cenv) overallTy env item methodName minfos tpenv mIt
| None ->
#endif
- let tyargs, tpenv = TcTypesOrMeasures None cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tys mTypeArgs
+ let tyargs, tpenv = TcTypesOrMeasures None cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType env tpenv tys mTypeArgs
// FUTURE: can we do better than emptyTyparInst here, in order to display instantiations
// of type variables in the quick info provided in the IDE? But note we haven't yet even checked if the
// number of type arguments is correct...
- CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
match otherDelayed with
| DelayedApp(atomicFlag, _, _, arg, mExprAndArg) :: otherDelayed ->
@@ -8680,7 +8971,7 @@ and TcCtorItemThen (cenv: cenv) overallTy env item nm minfos tinstEnclosing tpen
| DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs) :: DelayedApp(_, _, _, arg, mExprAndArg) :: otherDelayed ->
- let objTyAfterTyArgs, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs objTy tinstEnclosing tyargs
+ let objTyAfterTyArgs, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs objTy tinstEnclosing tyargs
CallExprHasTypeSink cenv.tcSink (mExprAndArg, env.NameEnv, objTyAfterTyArgs, env.eAccessRights)
let itemAfterTyArgs, minfosAfterTyArgs =
#if !NO_TYPEPROVIDERS
@@ -8701,11 +8992,11 @@ and TcCtorItemThen (cenv: cenv) overallTy env item nm minfos tinstEnclosing tpen
| DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs) :: otherDelayed ->
- let objTy, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs objTy tinstEnclosing tyargs
+ let objTy, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv mExprAndTypeArgs objTy tinstEnclosing tyargs
// A case where we have an incomplete name e.g. 'Foo.' - we still want to report it to VS!
let resolvedItem = Item.Types(nm, [objTy])
- CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, resolvedItem, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, resolvedItem, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
minfos |> List.iter (fun minfo -> UnifyTypes cenv env mExprAndTypeArgs minfo.ApparentEnclosingType objTy)
TcCtorCall true cenv env tpenv overallTy objTy (Some mExprAndTypeArgs) item false [] mExprAndTypeArgs otherDelayed (Some afterResolution)
@@ -8759,7 +9050,7 @@ and TcTraitItemThen (cenv: cenv) overallTy env objOpt traitInfo tpenv mItem dela
applicableExpr, exprTy
| _ ->
let vs, ves = argTys |> List.mapi (fun i ty -> mkCompGenLocal mItem ("arg" + string i) ty) |> List.unzip
- // Account for a unit mismtach in logical v. compiled arguments
+ // Account for a unit mismatch in logical v. compiled arguments
let compiledArgExprs =
match argTys, traitInfo.GetCompiledArgumentTypes() with
| [_], [] -> []
@@ -8778,7 +9069,7 @@ and TcTraitItemThen (cenv: cenv) overallTy env objOpt traitInfo tpenv mItem dela
// Check and apply the arguments
let resExpr, tpenv = TcDelayed cenv overallTy env tpenv mItem applicableExpr exprTy ExprAtomicFlag.NonAtomic delayed
- // Aply the wrapper to pre-evaluate the object if any
+ // Apply the wrapper to pre-evaluate the object if any
wrapper resExpr, tpenv
and TcImplicitOpItemThen (cenv: cenv) overallTy env id sln tpenv mItem delayed =
@@ -8807,7 +9098,7 @@ and TcImplicitOpItemThen (cenv: cenv) overallTy env id sln tpenv mItem delayed =
let memberFlags = StaticMemberFlags SynMemberKind.Member
let logicalCompiledName = ComputeLogicalName id memberFlags
- let traitInfo = TTrait(argTys, logicalCompiledName, memberFlags, argTys, Some retTy, sln)
+ let traitInfo = TTrait(argTys, logicalCompiledName, memberFlags, argTys, Some retTy, ref None, sln)
let expr = Expr.Op (TOp.TraitCall traitInfo, [], ves, mItem)
let expr = mkLambdas g mItem [] vs (expr, retTy)
@@ -8912,11 +9203,11 @@ and TcDelegateCtorItemThen cenv overallTy env ty tinstEnclosing tpenv mItem dela
| DelayedApp (atomicFlag, _, _, arg, mItemAndArg) :: otherDelayed ->
TcNewDelegateThen cenv overallTy env tpenv mItem mItemAndArg ty arg atomicFlag otherDelayed
| DelayedTypeApp(tyargs, _mTypeArgs, mItemAndTypeArgs) :: DelayedApp (atomicFlag, _, _, arg, mItemAndArg) :: otherDelayed ->
- let ty, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv mItemAndTypeArgs ty tinstEnclosing tyargs
+ let ty, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv mItemAndTypeArgs ty tinstEnclosing tyargs
// Report information about the whole expression including type arguments to VS
let item = Item.DelegateCtor ty
- CallNameResolutionSink cenv.tcSink (mItemAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (mItemAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, env.eAccessRights)
TcNewDelegateThen cenv overallTy env tpenv mItem mItemAndArg ty arg atomicFlag otherDelayed
| _ ->
error(Error(FSComp.SR.tcInvalidUseOfDelegate(), mItem))
@@ -8970,7 +9261,7 @@ and TcValueItemThen cenv overallTy env vref tpenv mItem afterResolution delayed
| _ ->
error (Error(FSComp.SR.expressionHasNoName(), mExprAndTypeArgs))
| _ ->
- let checkTys tpenv kinds = TcTypesOrMeasures (Some kinds) cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tys mItem
+ let checkTys tpenv kinds = TcTypesOrMeasures (Some kinds) cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType env tpenv tys mItem
let _, vExpr, isSpecial, _, _, tpenv = TcVal true cenv env tpenv vref (Some (NormalValUse, checkTys)) (Some afterResolution) mItem
let vexpFlex = (if isSpecial then MakeApplicableExprNoFlex cenv vExpr else MakeApplicableExprWithFlex cenv env vExpr)
@@ -8994,7 +9285,7 @@ and TcValueItemThen cenv overallTy env vref tpenv mItem afterResolution delayed
and TcPropertyItemThen cenv overallTy env nm pinfos tpenv mItem afterResolution staticTyOpt delayed =
let g = cenv.g
let ad = env.eAccessRights
-
+
if isNil pinfos then
error (InternalError ("Unexpected error: empty property list", mItem))
@@ -9007,7 +9298,7 @@ and TcPropertyItemThen cenv overallTy env nm pinfos tpenv mItem afterResolution
GetMemberApplicationArgs delayed cenv env tpenv
else
ExprAtomicFlag.Atomic, None, [mkSynUnit mItem], delayed, tpenv
-
+
if not pinfo.IsStatic then
error (Error (FSComp.SR.tcPropertyIsNotStatic nm, mItem))
@@ -9140,7 +9431,7 @@ and TcMemberTyArgsOpt cenv env tpenv tyArgsOpt =
match tyArgsOpt with
| None -> None, tpenv
| Some (tyargs, mTypeArgs) ->
- let tyargsChecked, tpenv = TcTypesOrMeasures None cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tyargs mTypeArgs
+ let tyargsChecked, tpenv = TcTypesOrMeasures None cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType env tpenv tyargs mTypeArgs
Some tyargsChecked, tpenv
and GetMemberApplicationArgs delayed cenv env tpenv =
@@ -9154,15 +9445,18 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
let objArgs = [objExpr]
- // 'base' calls use a different resolution strategy when finding methods.
let findFlag =
- let baseCall = IsBaseCall objArgs
- (if baseCall then PreferOverrides else IgnoreOverrides)
+ // 'base' calls use a different resolution strategy when finding methods
+ // nullness checks need the overrides, since those can change nullable semantics (e.g. ToString from BCL)
+ if (g.checkNullness && g.langFeatureNullness) || IsBaseCall objArgs then
+ PreferOverrides
+ else
+ IgnoreOverrides
// Canonicalize inference problem prior to '.' lookup on variable types
if isTyparTy g objExprTy then
CanonicalizePartialInferenceProblem cenv.css env.DisplayEnv mExprAndLongId (freeInTypeLeftToRight g false objExprTy)
-
+
let maybeAppliedArgExpr = DelayedItem.maybeAppliedArgForPreferExtensionOverProperty delayed
let item, mItem, rest, afterResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver mExprAndLongId ad env.NameEnv objExprTy longId TypeNameResolutionInfo.Default findFlag false maybeAppliedArgExpr
TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed item mItem rest afterResolution
@@ -9191,7 +9485,7 @@ and TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed
| Some minfoAfterStaticArguments ->
// Replace the resolution including the static parameters, plus the extra information about the original method info
let item = Item.MethodGroup(methodName, [minfoAfterStaticArguments], Some minfos[0])
- CallNameResolutionSinkReplacing cenv.tcSink (mExprAndItem, env.NameEnv, item, [], ItemOccurence.Use, env.eAccessRights)
+ CallNameResolutionSinkReplacing cenv.tcSink (mExprAndItem, env.NameEnv, item, [], ItemOccurrence.Use, env.eAccessRights)
TcMethodApplicationThen cenv env overallTy None tpenv None objArgs mExprAndItem mItem methodName ad mutates false [(minfoAfterStaticArguments, None)] afterResolution NormalValUse args atomicFlag None delayed
| None ->
@@ -9305,8 +9599,17 @@ and TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed
| Item.Trait traitInfo ->
TcTraitItemThen cenv overallTy env (Some objExpr) traitInfo tpenv mItem delayed
- | Item.FakeInterfaceCtor _ | Item.DelegateCtor _ -> error (Error (FSComp.SR.tcConstructorsCannotBeFirstClassValues(), mItem))
+ | Item.DelegateCtor _ -> error (Error (FSComp.SR.tcConstructorsCannotBeFirstClassValues(), mItem))
+ | Item.UnionCase(info, _) ->
+ let clashingNames = info.Tycon.MembersOfFSharpTyconSorted |> List.tryFind(fun mem -> mem.DisplayNameCore = info.DisplayNameCore)
+ match clashingNames with
+ | None -> ()
+ | Some value ->
+ let kind = if value.IsMember then "member" else "value"
+ errorR (NameClash(info.DisplayNameCore, kind, info.DisplayNameCore, value.Range, FSComp.SR.typeInfoUnionCase(), info.DisplayNameCore, value.Range))
+
+ error (Error (FSComp.SR.tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields(), mItem))
// These items are not expected here - they can't be the result of a instance member dot-lookup "expr.Ident"
| Item.ActivePatternResult _
| Item.CustomOperation _
@@ -9316,7 +9619,6 @@ and TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed
| Item.ModuleOrNamespaces _
| Item.TypeVar _
| Item.Types _
- | Item.UnionCase _
| Item.UnionCaseField _
| Item.UnqualifiedType _
| Item.Value _
@@ -9340,13 +9642,14 @@ and TcEventItemThen (cenv: cenv) overallTy env tpenv mItem mExprAndItem objDetai
| None, false -> error (Error (FSComp.SR.tcEventIsNotStatic nm, mItem))
| _ -> ()
- let delTy = einfo.GetDelegateType(cenv.amap, mItem)
+ // The F# wrappers around events are null safe (impl is in FSharp.Core). Therefore, from an F# perspective, the type of the delegate can be considered Not Null.
+ let delTy = einfo.GetDelegateType(cenv.amap, mItem) |> replaceNullnessOfTy KnownWithoutNull
let (SigOfFunctionForDelegate(delInvokeMeth, delArgTys, _, _)) = GetSigOfFunctionForDelegate cenv.infoReader delTy mItem ad
let objArgs = Option.toList (Option.map fst objDetails)
MethInfoChecks g cenv.amap true None objArgs env.eAccessRights mItem delInvokeMeth
-
+
CheckILEventAttributes g einfo.DeclaringTyconRef (einfo.GetCustomAttrs()) mItem |> CommitOperationResult
-
+
// This checks for and drops the 'object' sender
let argsTy = ArgsTypeOfEventInfo cenv.infoReader mItem ad einfo
if not (slotSigHasVoidReturnTy (delInvokeMeth.GetSlotSig(cenv.amap, mItem))) then errorR (nonStandardEventError einfo.EventName mItem)
@@ -9369,7 +9672,7 @@ and TcEventItemThen (cenv: cenv) overallTy env tpenv mItem mExprAndItem objDetai
(let dv, de = mkCompGenLocal mItem "eventDelegate" delTy
let callExpr, _ = BuildPossiblyConditionalMethodCall cenv env PossiblyMutates mItem false einfo.RemoveMethod NormalValUse [] objVars [de] None
mkLambda mItem dv (callExpr, g.unit_ty))
- (let fvty = mkFunTy g g.obj_ty (mkFunTy g argsTy g.unit_ty)
+ (let fvty = mkFunTy g g.obj_ty_withNulls (mkFunTy g argsTy g.unit_ty)
let fv, fe = mkCompGenLocal mItem "callback" fvty
let createExpr = BuildNewDelegateExpr (Some einfo, g, cenv.amap, delTy, delInvokeMeth, delArgTys, fe, fvty, mItem)
mkLambda mItem fv (createExpr, delTy)))
@@ -9436,22 +9739,36 @@ and TcMethodApplicationThen
PropagateThenTcDelayed cenv overallTy env tpenv mWholeExpr (MakeApplicableExprNoFlex cenv expr) exprTy atomicFlag delayed
/// Infer initial type information at the callsite from the syntax of an argument, prior to overload resolution.
-and GetNewInferenceTypeForMethodArg (cenv: cenv) env tpenv x =
+and GetNewInferenceTypeForMethodArg (cenv: cenv) x =
let g = cenv.g
- match x with
- | SynExprParen(a, _, _, _) ->
- GetNewInferenceTypeForMethodArg cenv env tpenv a
- | SynExpr.AddressOf (true, a, _, m) ->
- mkByrefTyWithInference g (GetNewInferenceTypeForMethodArg cenv env tpenv a) (NewByRefKindInferenceType g m)
- | SynExpr.Lambda (body = a)
- | SynExpr.DotLambda (expr = a) ->
- mkFunTy g (NewInferenceType g) (GetNewInferenceTypeForMethodArg cenv env tpenv a)
- | SynExpr.Quote (_, raw, a, _, _) ->
- if raw then mkRawQuotedExprTy g
- else mkQuotedExprTy g (GetNewInferenceTypeForMethodArg cenv env tpenv a)
- | _ -> NewInferenceType g
+ let rec loopExpr expr cont : struct (_ * _) =
+ match expr with
+ | SynExprParen (a, _, _, _) ->
+ loopExpr a cont
+ | SynExpr.AddressOf (true, a, _, m) ->
+ loopExpr a (cont << fun struct (depth, ty) -> depth + 1, mkByrefTyWithInference g ty (NewByRefKindInferenceType g m))
+ | SynExpr.Lambda (body = a)
+ | SynExpr.DotLambda (expr = a) ->
+ loopExpr a (cont << fun struct (depth, ty) -> depth + 1, mkFunTy g (NewInferenceType g) ty)
+ | SynExpr.MatchLambda (matchClauses = SynMatchClause (resultExpr = a) :: clauses) ->
+ let loopClause a = loopExpr a (cont << fun struct (depth, ty) -> depth + 1, mkFunTy g (NewInferenceType g) ty)
+
+ // Look at all branches, keeping the one
+ // that gives us the most syntactic information.
+ (loopClause a, clauses)
+ ||> List.fold (fun ((maxClauseDepth, _) as acc) (SynMatchClause (resultExpr = a)) ->
+ match loopClause a with
+ | clauseDepth, ty when clauseDepth > maxClauseDepth -> clauseDepth, ty
+ | _ -> acc)
+ | SynExpr.Quote (_, raw, a, _, _) ->
+ if raw then cont (0, mkRawQuotedExprTy g)
+ else loopExpr a (cont << fun struct (depth, ty) -> depth + 1, mkQuotedExprTy g ty)
+ | _ -> cont (0, NewInferenceType g)
+
+ let struct (_depth, ty) = loopExpr x id
+ ty
and CalledMethHasSingleArgumentGroupOfThisLength n (calledMeth: MethInfo) =
match calledMeth.NumArgs with
@@ -9487,7 +9804,7 @@ and UnifyMatchingSimpleArgumentTypes (cenv: cenv) (env: TcEnv) exprTy (calledMet
and TcMethodApplication_SplitSynArguments
(cenv: cenv)
(env: TcEnv)
- tpenv
+ _tpenv
isProp
(candidates: MethInfo list)
(exprTy: OverallTy)
@@ -9515,7 +9832,7 @@ and TcMethodApplication_SplitSynArguments
else
unnamedCurriedCallerArgs, namedCurriedCallerArgs
- let MakeUnnamedCallerArgInfo x = (x, GetNewInferenceTypeForMethodArg cenv env tpenv x, x.Range)
+ let MakeUnnamedCallerArgInfo x = (x, GetNewInferenceTypeForMethodArg cenv x, x.Range)
let singleMethodCurriedArgs =
match candidates with
@@ -9554,7 +9871,7 @@ and TcMethodApplication_SplitSynArguments
| _ ->
let unnamedCurriedCallerArgs = unnamedCurriedCallerArgs |> List.mapSquared MakeUnnamedCallerArgInfo
let namedCurriedCallerArgs = namedCurriedCallerArgs |> List.mapSquared (fun (isOpt, nm, x) ->
- let ty = GetNewInferenceTypeForMethodArg cenv env tpenv x
+ let ty = GetNewInferenceTypeForMethodArg cenv x
// #435263: compiler crash with .net optional parameters and F# optional syntax
// named optional arguments should always have option type
// STRUCT OPTIONS: if we allow struct options as optional arguments then we should relax this and rely
@@ -9609,7 +9926,7 @@ and TcMethodApplication_UniqueOverloadInference
// "type directed" rule for first-class uses of ambiguous methods.
// By context we know a type for the input argument. If it's a tuple
- // this gives us the a potential number of arguments expected. Indeed even if it's a variable
+ // this gives us the potential number of arguments expected. Indeed even if it's a variable
// type we assume the number of arguments is just "1".
| None, _ ->
@@ -9666,7 +9983,7 @@ and TcMethodApplication_CheckArguments
callerObjArgTys
ad
mMethExpr
- mItem
+ mItem
tpenv =
let g = cenv.g
@@ -9707,7 +10024,7 @@ and TcMethodApplication_CheckArguments
|> List.mapiSquared (fun i j ty ->
let argName = curriedArgNamesIfFeatureEnabled |> List.tryItem i |> Option.bind (List.tryItem j) |> Option.flatten |> Option.defaultWith (fun () -> "arg" + string i + string j)
mkCompGenLocal mMethExpr argName ty)
-
+
let unnamedCurriedCallerArgs = lambdaVarsAndExprs |> List.mapSquared (fun (_, e) -> CallerArg(tyOfExpr g e, e.Range, false, e))
let namedCurriedCallerArgs = lambdaVarsAndExprs |> List.map (fun _ -> [])
let lambdaVars = List.mapSquared fst lambdaVarsAndExprs
@@ -9726,7 +10043,7 @@ and TcMethodApplication_CheckArguments
match ExamineMethodForLambdaPropagation g mMethExpr meth ad with
| Some (unnamedInfo, namedInfo) ->
let calledObjArgTys = meth.CalledObjArgTys mMethExpr
- if (calledObjArgTys, callerObjArgTys) ||> Seq.forall2 (fun calledTy callerTy ->
+ if (calledObjArgTys, callerObjArgTys) ||> Seq.forall2 (fun calledTy callerTy ->
let noEagerConstraintApplication = MethInfoHasAttribute g mMethExpr g.attrib_NoEagerConstraintApplicationAttribute meth.Method
// The logic associated with NoEagerConstraintApplicationAttribute is part of the
@@ -9756,7 +10073,7 @@ and TcAdhocChecksOnLibraryMethods (cenv: cenv) (env: TcEnv) isInstance (finalCal
if (isInstance &&
finalCalledMethInfo.IsInstance &&
- typeEquiv g finalCalledMethInfo.ApparentEnclosingType g.obj_ty &&
+ typeEquiv g finalCalledMethInfo.ApparentEnclosingType g.obj_ty_ambivalent &&
(finalCalledMethInfo.LogicalName = "GetHashCode" || finalCalledMethInfo.LogicalName = "Equals")) then
for objArg in objArgs do
@@ -9881,7 +10198,7 @@ and TcMethodApplication
let overriding =
match unrefinedItem with
- | Item.MethodGroup(_, overridenMeths, _) -> overridenMeths |> List.map (fun minfo -> minfo, None)
+ | Item.MethodGroup(_, overriddenMeths, _) -> overriddenMeths |> List.map (fun minfo -> minfo, None)
| Item.Property(info = pinfos) ->
if result.Method.LogicalName.StartsWithOrdinal("set_") then
SettersOfPropInfos pinfos
@@ -9952,7 +10269,7 @@ and TcMethodApplication
| None -> id.idRange
let container = ArgumentContainer.Method finalCalledMethInfo
let item = Item.OtherName (idOpt, assignedArg.CalledArg.CalledArgumentType, None, Some container, m)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, ad))
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ad))
/// STEP 6. Build the call expression, then adjust for byref-returns, out-parameters-as-tuples, post-hoc property assignments, methods-as-first-class-value,
@@ -9986,7 +10303,6 @@ and TcMethodApplication
// Handle post-hoc property assignments
let setterExprPrebinders, callExpr2b =
let expr = callExpr2
-
CheckRequiredProperties g env cenv finalCalledMethInfo finalAssignedItemSetters mMethExpr
if isCheckingAttributeCall then
@@ -10061,6 +10377,8 @@ and TcSetterArgExpr (cenv: cenv) env denv objExpr ad assignedSetter calledFromCo
match setter with
| AssignedPropSetter (propStaticTyOpt, pinfo, pminfo, pminst) ->
+ CheckPropInfoAttributes pinfo id.idRange |> CommitOperationResult
+
if g.langVersion.SupportsFeature(LanguageFeature.RequiredPropertiesSupport) && pinfo.IsSetterInitOnly && not calledFromConstructor then
errorR (Error (FSComp.SR.tcInitOnlyPropertyCannotBeSet1 pinfo.PropertyName, m))
@@ -10092,7 +10410,7 @@ and TcSetterArgExpr (cenv: cenv) env denv objExpr ad assignedSetter calledFromCo
// Record the resolution for the Language Service
let item = Item.SetterArg (id, defnItem)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, ad)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Use, ad)
argExprPrebinder, action, m
@@ -10174,9 +10492,9 @@ and TcMethodArg cenv env (lambdaPropagationInfo, tpenv) (lambdaPropagationInfoFo
yield info
| CalledArgMatchesType (adjustedCalledArgTy, noEagerConstraintApplication) ->
// If matching, we can solve 'tp1 --> tp2' but we can't transfer extra
- // constraints from tp1 to tp2.
+ // constraints from tp1 to tp2.
//
- // The 'task' feature requires this fix to SRTP resolution.
+ // The 'task' feature requires this fix to SRTP resolution.
let extraRigidTps = if noEagerConstraintApplication then Zset.ofList typarOrder (freeInTypeLeftToRight g true callerArgTy) else emptyFreeTypars
if AddCxTypeMustSubsumeTypeMatchingOnlyUndoIfFailed env.DisplayEnv cenv.css mArg extraRigidTps adjustedCalledArgTy callerArgTy then
yield info |]
@@ -10236,7 +10554,7 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr synExpr cont =
let g = cenv.g
match synExpr with
- | SynExpr.Sequential (sp, true, expr1, expr2, m) when not isCompExpr ->
+ | SynExpr.Sequential (sp, true, expr1, expr2, m, _) when not isCompExpr ->
let expr1R, _ =
let env1 = { env with eIsControlFlow = (match sp with | DebugPointAtSequential.SuppressNeither | DebugPointAtSequential.SuppressExpr -> true | _ -> false) }
TcStmtThatCantBeCtorBody cenv env1 tpenv expr1
@@ -10309,10 +10627,15 @@ and TcAndPatternCompileMatchClauses mExpr mMatch actionOnFailure cenv inputExprO
let matchVal, expr = CompilePatternForMatchClauses cenv env mExpr mMatch true actionOnFailure inputExprOpt inputTy resultTy.Commit clauses
matchVal, expr, tpenv
-and TcMatchPattern cenv inputTy env tpenv (synPat: SynPat) (synWhenExprOpt: SynExpr option) =
+and TcMatchPattern (cenv: cenv) inputTy env tpenv (synPat: SynPat) (synWhenExprOpt: SynExpr option) (tcTrueMatchClause: TcTrueMatchClause) =
let g = cenv.g
let m = synPat.Range
- let patf', (TcPatLinearEnv (tpenv, names, _)) = cenv.TcPat WarnOnUpperCase cenv env None (TcPatValFlags (ValInline.Optional, permitInferTypars, noArgOrRetAttribs, false, None, false)) (TcPatLinearEnv (tpenv, Map.empty, Set.empty)) inputTy synPat
+ let warnOnUpperFlag =
+ match tcTrueMatchClause with
+ | TcTrueMatchClause.Yes -> WarnOnUpperUnionCaseLabel
+ | TcTrueMatchClause.No -> WarnOnUpperVariablePatterns
+
+ let patf', (TcPatLinearEnv (tpenv, names, _)) = cenv.TcPat warnOnUpperFlag cenv env None (TcPatValFlags (ValInline.Optional, permitInferTypars, noArgOrRetAttribs, false, None, false)) (TcPatLinearEnv (tpenv, Map.empty, Set.empty)) inputTy synPat
let envinner, values, vspecMap = MakeAndPublishSimpleValsForMergedScope cenv env m names
let whenExprOpt, tpenv =
@@ -10328,11 +10651,20 @@ and TcMatchPattern cenv inputTy env tpenv (synPat: SynPat) (synWhenExprOpt: SynE
and TcMatchClauses cenv inputTy (resultTy: OverallTy) env tpenv clauses =
let mutable first = true
let isFirst() = if first then first <- false; true else false
- List.mapFold (fun clause -> TcMatchClause cenv inputTy resultTy env (isFirst()) clause) tpenv clauses
+ let resultList,(tpEnv,_input) =
+ List.mapFold (fun (unscopedTyParEnv,inputTy) -> TcMatchClause cenv inputTy resultTy env (isFirst()) unscopedTyParEnv) (tpenv,inputTy) clauses
+ resultList,tpEnv
and TcMatchClause cenv inputTy (resultTy: OverallTy) env isFirst tpenv synMatchClause =
- let (SynMatchClause(synPat, synWhenExprOpt, synResultExpr, patm, spTgt, _)) = synMatchClause
- let pat, whenExprOpt, vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv synPat synWhenExprOpt
+ let (SynMatchClause(synPat, synWhenExprOpt, synResultExpr, patm, spTgt, trivia)) = synMatchClause
+
+ let isTrueMatchClause =
+ if synMatchClause.IsTrueMatchClause then
+ TcTrueMatchClause.Yes
+ else
+ TcTrueMatchClause.No
+
+ let pat, whenExprOpt, vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv synPat synWhenExprOpt isTrueMatchClause
let resultEnv =
if isFirst then envinner
@@ -10346,8 +10678,37 @@ and TcMatchClause cenv inputTy (resultTy: OverallTy) env isFirst tpenv synMatchC
let resultExpr, tpenv = TcExprThatCanBeCtorBody cenv resultTy resultEnv tpenv synResultExpr
let target = TTarget(vspecs, resultExpr, None)
-
- MatchClause(pat, whenExprOpt, target, patm), tpenv
+
+ let inputTypeForNextPatterns=
+ let removeNull t =
+ let stripped = stripTyEqns cenv.g t
+ replaceNullnessOfTy KnownWithoutNull stripped
+ let rec isWild (p:Pattern) =
+ match p with
+ | TPat_wild _ -> true
+ | TPat_as (p,_,_) -> isWild p
+ | TPat_disjs(patterns,_) -> patterns |> List.exists isWild
+ | TPat_conjs(patterns,_) -> patterns |> List.forall isWild
+ | TPat_tuple (_,pats,_,_) -> pats |> List.forall isWild
+ | _ -> false
+
+ let rec eliminateNull (ty:TType) (p:Pattern) =
+ match p with
+ | TPat_null _ -> removeNull ty
+ | TPat_as (p,_,_) -> eliminateNull ty p
+ | TPat_disjs(patterns,_) -> (ty,patterns) ||> List.fold eliminateNull
+ | TPat_tuple (_,pats,_,_) ->
+ match stripTyparEqns ty with
+ // In a tuple of size N, if 1 elem is matched for null and N-1 are wild => subsequent clauses can strip nullness
+ | TType_tuple(ti,tys) when tys.Length = pats.Length && (pats |> List.count (isWild >> not)) = 1 ->
+ TType_tuple(ti, List.map2 eliminateNull tys pats)
+ | _ -> ty
+ | _ -> ty
+ match whenExprOpt with
+ | None -> eliminateNull inputTy pat
+ | _ -> inputTy
+
+ MatchClause(pat, whenExprOpt, target, patm), (tpenv,inputTypeForNextPatterns)
and TcStaticOptimizationConstraint cenv env tpenv c =
let g = cenv.g
@@ -10356,7 +10717,7 @@ and TcStaticOptimizationConstraint cenv env tpenv c =
| SynStaticOptimizationConstraint.WhenTyparTyconEqualsTycon(tp, ty, m) ->
if not g.compilingFSharpCore then
errorR(Error(FSComp.SR.tcStaticOptimizationConditionalsOnlyForFSharpLibrary(), m))
- let tyR, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv ty
+ let tyR, tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv ty
let tpR, tpenv = TcTypar cenv env NewTyparsOK tpenv tp
TTyconEqualsTycon(mkTyparTy tpR, tyR), tpenv
| SynStaticOptimizationConstraint.WhenTyparIsStruct(tp, m) ->
@@ -10384,22 +10745,22 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy
| [[]], retTy when isByrefTy g retTy && mInfo.IsInstance -> true
| _ -> false
)
-
+
match getPinnableReferenceMInfo with
| Some mInfo ->
checkLanguageFeatureAndRecover g.langVersion LanguageFeature.ExtendedFixedBindings mBinding
-
+
let mInst = FreshenMethInfo mBinding mInfo
let pinnableReference, actualRetTy = BuildPossiblyConditionalMethodCall cenv env NeverMutates mBinding false mInfo NormalValUse mInst [ fixedExpr ] [] None
-
+
let elemTy = destByrefTy g actualRetTy
UnifyTypes cenv env mBinding (mkNativePtrTy g elemTy) overallPatTy
-
+
// For value types:
// let ptr: nativeptr =
// let pinned x = &(expr: 'a).GetPinnableReference()
// (nativeint) x
-
+
// For reference types:
// let ptr: nativeptr =
// if isNull expr then
@@ -10407,12 +10768,12 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy
// else
// let pinned x = &(expr: 'a).GetPinnableReference()
// (nativeint) x
-
+
let pinnedBinding =
mkCompGenLetIn mBinding "pinnedByref" actualRetTy pinnableReference (fun (v, ve) ->
v.SetIsFixed()
mkConvToNativeInt g ve mBinding)
-
+
if isStructTy g overallExprTy then
Some pinnedBinding
else
@@ -10437,7 +10798,7 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy
| TOp.RefAddrGet _, _, _ -> true
| _ -> false
| _ -> false
-
+
if not okByRef then
errorR (languageFeatureError g.langVersion LanguageFeature.ExtendedFixedBindings mBinding)
@@ -10453,7 +10814,7 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy
tryBuildGetPinnableReferenceCall ()
else
None
-
+
match getPinnableRefCall with
| Some expr -> expr
| None ->
@@ -10517,8 +10878,14 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
let envinner = AddDeclaredTypars NoCheckForDuplicateTypars (enclosingDeclaredTypars@declaredTypars) env
match bind with
- | NormalizedBinding(vis, kind, isInline, isMutable, attrs, xmlDoc, _, valSynData, pat, NormalizedBindingRhs(spatsL, rtyOpt, rhsExpr), mBinding, debugPoint) ->
+ | NormalizedBinding(vis, kind, isInline, isMutable, attrs, xmlDoc, _, valSynData, pat, NormalizedBindingRhs(spatsL, rtyOpt, rhsExpr), _, debugPoint) ->
let (SynValData(memberFlags = memberFlagsOpt)) = valSynData
+ let mBinding = pat.Range
+
+ let isClassLetBinding =
+ match declKind, kind with
+ | ClassLetBinding _, SynBindingKind.Normal -> true
+ | _ -> false
let callerName =
match declKind, kind, pat with
@@ -10537,13 +10904,20 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
| ModuleOrMemberBinding, SynBindingKind.StandaloneExpression, _ -> Some(".cctor")
| _, _, _ -> envinner.eCallerMemberName
- let envinner = {envinner with eCallerMemberName = callerName }
-
+ let envinner = { envinner with eCallerMemberName = callerName }
let attrTgt = declKind.AllowedAttribTargets memberFlagsOpt
let isFixed, rhsExpr, overallPatTy, overallExprTy =
match rhsExpr with
| SynExpr.Fixed (e, _) -> true, e, NewInferenceType g, overallTy
+ // { new Foo() } is parsed as a SynExpr.ComputationExpr.(See pars.fsy `objExpr` rule).
+ // If a SynExpr.ComputationExpr body consists of a single SynExpr.New, and it's not the argument of a computation expression builder type.
+ // Then we should treat it as a SynExpr.ObjExpr and make it consistent with the other object expressions. e.g.
+ // { new Foo } -> SynExpr.ObjExpr
+ // { new Foo() } -> SynExpr.ObjExpr
+ // { New Foo with ... } -> SynExpr.ObjExpr
+ | SynExpr.ComputationExpr(false, SynExpr.New(_, targetType, expr, m), _) ->
+ false, SynExpr.ObjExpr(targetType, Some(expr, None), None, [], [], [], m, rhsExpr.Range), overallTy, overallTy
| e -> false, e, overallTy, overallTy
// Check the attributes of the binding, parameters or return value
@@ -10551,9 +10925,11 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
// For all but attributes positioned at the return value, disallow implicitly
// targeting the return value.
let tgtEx = if isRet then enum 0 else AttributeTargets.ReturnValue
- let attrs, _ = TcAttributesMaybeFailEx false cenv envinner tgt tgtEx attrs
+ let attrs, _ = TcAttributesMaybeFailEx TcCanFail.ReportAllErrors cenv envinner tgt tgtEx attrs
+ let attrs: Attrib list = attrs
if attrTgt = enum 0 && not (isNil attrs) then
- errorR(Error(FSComp.SR.tcAttributesAreNotPermittedOnLetBindings(), mBinding))
+ for attr in attrs do
+ errorR(Error(FSComp.SR.tcAttributesAreNotPermittedOnLetBindings(), attr.Range))
attrs
// Rotate [] from binding to return value
@@ -10580,10 +10956,10 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
SynValData(valMf, SynValInfo(args, SynArgInfo({Attributes=rotRetSynAttrs; Range=mHead} :: attrs, opt, retId)), valId)
retAttribs, valAttribs, valSynData
- let isVolatile = HasFSharpAttribute g g.attrib_VolatileFieldAttribute valAttribs
+ let isVolatile = HasFSharpAttribute g g.attrib_VolatileFieldAttribute valAttribs
let inlineFlag = ComputeInlineFlag memberFlagsOpt isInline isMutable g valAttribs mBinding
- let argAttribs =
+ let argAttribs =
spatsL |> List.map (SynInfo.InferSynArgInfoFromSimplePats >> List.map (SynInfo.AttribsOfArgData >> TcAttrs AttributeTargets.Parameter false))
// Assert the return type of an active pattern. A [] attribute may be used on a partial active pattern.
@@ -10595,16 +10971,16 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
// always be used for empty branches of if/then/else and others
let isZeroMethod =
match declKind, pat with
- | ModuleOrMemberBinding, SynPat.Named(SynIdent(id,_), _, _, _) when id.idText = "Zero" ->
+ | ModuleOrMemberBinding, SynPat.Named(SynIdent(id,_), _, _, _) when id.idText = "Zero" ->
match memberFlagsOpt with
| Some memberFlags ->
match memberFlags.MemberKind with
| SynMemberKind.Member -> true
| _ -> false
- | _ -> false
+ | _ -> false
| _ -> false
- if HasFSharpAttribute g g.attrib_DefaultValueAttribute valAttribs && not isZeroMethod then
+ if HasFSharpAttribute g g.attrib_DefaultValueAttribute valAttribs && not isZeroMethod then
errorR(Error(FSComp.SR.tcDefaultValueAttributeRequiresVal(), mBinding))
let isThreadStatic = isThreadOrContextStatic g valAttribs
@@ -10673,12 +11049,16 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
let envinner =
match apinfoOpt with
| Some (apinfo, apOverallTy, m) ->
- if Option.isSome memberFlagsOpt || (not apinfo.IsTotal && apinfo.ActiveTags.Length > 1) then
- error(Error(FSComp.SR.tcInvalidActivePatternName(), mBinding))
+ let isMultiCasePartialAP = memberFlagsOpt.IsNone && not apinfo.IsTotal && apinfo.ActiveTags.Length > 1
+ if isMultiCasePartialAP then
+ errorR(Error(FSComp.SR.tcPartialActivePattern(), m))
+
+ if Option.isSome memberFlagsOpt && not spatsL.IsEmpty then
+ errorR(Error(FSComp.SR.tcInvalidActivePatternName(apinfo.LogicalName), m))
apinfo.ActiveTagsWithRanges |> List.iteri (fun i (_tag, tagRange) ->
let item = Item.ActivePatternResult(apinfo, apOverallTy, i, tagRange)
- CallNameResolutionSink cenv.tcSink (tagRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights))
+ CallNameResolutionSink cenv.tcSink (tagRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights))
{ envinner with eNameResEnv = AddActivePatternResultTagsToNameEnv apinfo envinner.eNameResEnv apOverallTy m }
| None ->
@@ -10704,7 +11084,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
// The right-hand-side is control flow (has an implicit debug point) in any situation where we
// haven't extended the debug point to include the 'let', that is, there is a debug point noted
- // at the binding.
+ // at the binding.
//
// This includes
// let _ = expr
@@ -10712,7 +11092,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
// which are transformed to sequential expressions in TcLetBinding
//
let rhsIsControlFlow =
- match pat with
+ match pat with
| SynPat.Wild _
| SynPat.Const (SynConst.Unit, _)
| SynPat.Paren (SynPat.Const (SynConst.Unit, _), _) -> true
@@ -10720,7 +11100,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
match debugPoint with
| DebugPointAtBinding.Yes _ -> false
| _ -> true
-
+
let envinner = { envinner with eLambdaArgInfos = argInfos; eIsControlFlow = rhsIsControlFlow }
if isCtor then TcExprThatIsCtorBody (safeThisValOpt, safeInitInfo) cenv (MustEqual overallExprTy) envinner tpenv rhsExpr
@@ -10735,17 +11115,28 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
else rhsExprChecked
match apinfoOpt with
- | Some (apinfo, apOverallTy, _) ->
+ | Some (apinfo, apOverallTy, m) ->
let activePatResTys = NewInferenceTypes g apinfo.ActiveTags
let _, apReturnTy = stripFunTy g apOverallTy
-
- if isStructRetTy && apinfo.IsTotal then
- errorR(Error(FSComp.SR.tcInvalidStructReturn(), mBinding))
-
- if isStructRetTy then
+ let apRetTy =
+ if apinfo.IsTotal then
+ if isStructRetTy then errorR(Error(FSComp.SR.tcInvalidStructReturn(), mBinding))
+ ActivePatternReturnKind.RefTypeWrapper
+ else
+ if isStructRetTy || isValueOptionTy cenv.g apReturnTy then ActivePatternReturnKind.StructTypeWrapper
+ elif isBoolTy cenv.g apReturnTy then ActivePatternReturnKind.Boolean
+ else ActivePatternReturnKind.RefTypeWrapper
+
+ match apRetTy with
+ | ActivePatternReturnKind.Boolean ->
+ checkLanguageFeatureError g.langVersion LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern mBinding
+ | ActivePatternReturnKind.StructTypeWrapper when not isStructRetTy ->
+ checkLanguageFeatureError g.langVersion LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern mBinding
+ | ActivePatternReturnKind.StructTypeWrapper ->
checkLanguageFeatureError g.langVersion LanguageFeature.StructActivePattern mBinding
+ | ActivePatternReturnKind.RefTypeWrapper -> ()
- UnifyTypes cenv env mBinding (apinfo.ResultType g rhsExpr.Range activePatResTys isStructRetTy) apReturnTy
+ UnifyTypes cenv env mBinding (apinfo.ResultType g m activePatResTys apRetTy) apReturnTy
| None ->
if isStructRetTy then
@@ -10764,8 +11155,40 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
if not (isNil declaredTypars) then
errorR(Error(FSComp.SR.tcLiteralCannotHaveGenericParameters(), mBinding))
+ let supportEnforceAttributeTargets =
+ (g.langVersion.SupportsFeature(LanguageFeature.EnforceAttributeTargets) && memberFlagsOpt.IsNone && not attrs.IsEmpty)
+ && not isVolatile // // VolatileFieldAttribute has a special treatment(specific error FS823)
+
+ if supportEnforceAttributeTargets then
+ TcAttributeTargetsOnLetBindings { cenv with tcSink = TcResultsSink.NoSink } env attrs overallPatTy overallExprTy (not declaredTypars.IsEmpty) isClassLetBinding
+
CheckedBindingInfo(inlineFlag, valAttribs, xmlDoc, tcPatPhase2, explicitTyparInfo, nameToPrelimValSchemeMap, rhsExprChecked, argAndRetAttribs, overallPatTy, mBinding, debugPoint, isCompGen, literalValue, isFixed), tpenv
+// Note:
+// - Let bound values can only have attributes that uses AttributeTargets.Field ||| AttributeTargets.Property ||| AttributeTargets.ReturnValue
+// - Let function bindings can only have attributes that uses AttributeTargets.Method ||| AttributeTargets.ReturnValue
+and TcAttributeTargetsOnLetBindings (cenv: cenv) env attrs overallPatTy overallExprTy areTyparsDeclared isClassLetBinding =
+ let attrTgt =
+ if
+ // It's a type function:
+ // let x<'a> = …
+ areTyparsDeclared
+ // It's a regular function-valued binding:
+ // let f x = …
+ // let f = fun x -> …
+ || isFunTy cenv.g overallPatTy
+ || isFunTy cenv.g overallExprTy
+ then
+ // Class let bindings are a special case, they can have attributes that target fields and properties, since they might be lifted to those and contain lambdas/functions.
+ if isClassLetBinding then
+ AttributeTargets.ReturnValue ||| AttributeTargets.Method ||| AttributeTargets.Field ||| AttributeTargets.Property
+ else
+ AttributeTargets.ReturnValue ||| AttributeTargets.Method
+ else
+ AttributeTargets.ReturnValue ||| AttributeTargets.Field ||| AttributeTargets.Property
+
+ TcAttributesWithPossibleTargets TcCanFail.ReportAllErrors cenv env attrTgt attrs |> ignore
+
and TcLiteral (cenv: cenv) overallTy env tpenv (attrs, synLiteralValExpr) =
let g = cenv.g
@@ -10790,7 +11213,7 @@ and TcLiteral (cenv: cenv) overallTy env tpenv (attrs, synLiteralValExpr) =
and TcBindingTyparDecls alwaysRigid cenv env tpenv (ValTyparDecls(synTypars, synTyparConstraints, infer)) =
let declaredTypars = TcTyparDecls cenv env synTypars
let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTypars env
- let tpenv = TcTyparConstraints cenv NoNewTypars CheckCxs ItemOccurence.UseInType envinner tpenv synTyparConstraints
+ let tpenv = TcTyparConstraints cenv NoNewTypars CheckCxs ItemOccurrence.UseInType envinner tpenv synTyparConstraints
let rigidCopyOfDeclaredTypars =
if alwaysRigid then
@@ -10849,10 +11272,10 @@ and TcAttributeEx canFail (cenv: cenv) (env: TcEnv) attrTgt attrEx (synAttr: Syn
let try1 n =
let tyid = mkSynId tyid.idRange n
let tycon = (typath @ [tyid])
-
- match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInAttribute OpenQualified env.eNameResEnv ad tycon TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No with
+
+ match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurrence.UseInAttribute OpenQualified env.eNameResEnv ad tycon TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No with
| Exception err -> raze err
- | Result(tinstEnclosing, tcref) -> success(TcTypeApp cenv NoNewTypars CheckCxs ItemOccurence.UseInAttribute env tpenv mAttr tcref tinstEnclosing [])
+ | Result(tinstEnclosing, tcref, inst) -> success(TcTypeApp cenv NoNewTypars CheckCxs ItemOccurrence.UseInAttribute env tpenv mAttr tcref tinstEnclosing [] inst)
ForceRaise ((try1 (tyid.idText + "Attribute")) |> otherwise (fun () -> (try1 tyid.idText)))
@@ -10924,7 +11347,7 @@ and TcAttributeEx canFail (cenv: cenv) (env: TcEnv) attrTgt attrEx (synAttr: Syn
error(Error(FSComp.SR.tcAttributeIsNotValidForLanguageElement(), mAttr))
match ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mAttr ad ty with
- | Exception _ when canFail -> [ ], true
+ | Exception _ when canFail = TcCanFail.IgnoreAllErrors || canFail = TcCanFail.IgnoreMemberResoutionError -> [ ], true
| res ->
let item = ForceRaise res
@@ -10971,7 +11394,7 @@ and TcAttributeEx canFail (cenv: cenv) (env: TcEnv) attrTgt attrEx (synAttr: Syn
errorR(Error(FSComp.SR.tcPropertyOrFieldNotFoundInAttribute(), m))
id.idText, false, g.unit_ty
let propNameItem = Item.SetterArg(id, setterItem)
- CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, propNameItem, emptyTyparInst, ItemOccurence.Use, ad)
+ CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, propNameItem, emptyTyparInst, ItemOccurrence.Use, ad)
AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace argTy callerArgTy
@@ -11029,11 +11452,11 @@ and TcAttributesMaybeFail canFail cenv env attrTgt synAttribs =
TcAttributesMaybeFailEx canFail cenv env attrTgt (enum 0) synAttribs
and TcAttributesCanFail cenv env attrTgt synAttribs =
- let attrs, didFail = TcAttributesMaybeFail true cenv env attrTgt synAttribs
+ let attrs, didFail = TcAttributesMaybeFail TcCanFail.IgnoreAllErrors cenv env attrTgt synAttribs
attrs, (fun () -> if didFail then TcAttributes cenv env attrTgt synAttribs else attrs)
and TcAttributes cenv env attrTgt synAttribs =
- TcAttributesMaybeFail false cenv env attrTgt synAttribs |> fst
+ TcAttributesMaybeFail TcCanFail.ReportAllErrors cenv env attrTgt synAttribs |> fst
//-------------------------------------------------------------------------
// TcLetBinding
@@ -11111,7 +11534,7 @@ and TcLetBinding (cenv: cenv) isUse env containerInfo declKind tpenv (synBinds,
when List.lengthsEqAndForall2 typarRefEq generalizedTypars generalizedTypars' ->
v, pat
- | _ when inlineFlag.MustInline ->
+ | _ when inlineFlag.ShouldInline ->
error(Error(FSComp.SR.tcInvalidInlineSpecification(), m))
| TPat_query _ when HasFSharpAttribute g g.attrib_LiteralAttribute attrs ->
@@ -11224,7 +11647,7 @@ and ApplyTypesFromArgumentPatterns (cenv: cenv, env, optionalArgsOK, ty, m, tpen
match retInfoOpt with
| None -> ()
| Some (SynBindingReturnInfo (typeName = retInfoTy; range = m)) ->
- let retInfoTy, _ = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv retInfoTy
+ let retInfoTy, _ = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes env tpenv retInfoTy
UnifyTypes cenv env m ty retInfoTy
// Property setters always have "unit" return type
match memberFlagsOpt with
@@ -11301,14 +11724,14 @@ and ApplyAbstractSlotInference (cenv: cenv) (envinner: TcEnv) (_: Val option) (a
let details = NicePrint.multiLineStringOfMethInfos cenv.infoReader m envinner.DisplayEnv slots
errorR(Error(FSComp.SR.tcOverrideArityMismatch details, memberId.idRange))
[]
-
+
match slot with
| FSMeth (_, _, valRef, _) ->
match valRef.TauType with
// https://github.com/dotnet/fsharp/issues/15307
// check if abstract method expects tuple, give better error message
| TType_fun(_,TType_fun(TType_tuple _,_,_),_) ->
- if not slot.NumArgs.IsEmpty && slot.NumArgs.Head = 1 then
+ if not slot.NumArgs.IsEmpty && slot.NumArgs.Head = 1 then
errorR(Error(FSComp.SR.tcOverrideUsesMultipleArgumentsInsteadOfTuple(), memberId.idRange))
[]
else raiseGenericArityMismatch()
@@ -11329,6 +11752,10 @@ and ApplyAbstractSlotInference (cenv: cenv) (envinner: TcEnv) (_: Val option) (a
let declaredTypars = (if typarsFromAbsSlotAreRigid then typarsFromAbsSlot else declaredTypars)
+ // Overrides can narrow the retTy from nullable to not-null.
+ // By changing nullness to be variable we do not get in the way of eliminating nullness (=good).
+ let retTyFromAbsSlot = retTyFromAbsSlot |> changeWithNullReqTyToVariable g
+
let absSlotTy = mkMethodTy g argTysFromAbsSlot retTyFromAbsSlot
UnifyTypes cenv envinner m argsAndRetTy absSlotTy
@@ -11663,7 +12090,7 @@ and AnalyzeRecursiveDecl
match pat with
| SynPat.FromParseError(innerPat, _) -> analyzeRecursiveDeclPat tpenv innerPat
| SynPat.Typed(innerPat, tgtTy, _) ->
- let tgtTyR, tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes envinner tpenv tgtTy
+ let tgtTyR, tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurrence.UseInType WarnOnIWSAM.Yes envinner tpenv tgtTy
UnifyTypes cenv envinner mBinding ty tgtTyR
analyzeRecursiveDeclPat tpenv innerPat
| SynPat.Attrib(_innerPat, _attribs, m) ->
@@ -11730,7 +12157,7 @@ and AnalyzeAndMakeAndPublishRecursiveValue
let bindingAttribs = TcAttributes cenv env attrTgt bindingSynAttribs
// Allocate the type inference variable for the inferred type
- let ty = NewInferenceType g
+ let ty = NewInferenceType g
let inlineFlag = ComputeInlineFlag memberFlagsOpt isInline isMutable g bindingAttribs mBinding
@@ -11784,7 +12211,7 @@ and AnalyzeAndMakeAndPublishRecursiveValue
match toolIdOpt with
| Some tid when not tid.idRange.IsSynthetic && not (equals tid.idRange bindingId.idRange) ->
let item = Item.Value (mkLocalValRef vspec)
- CallNameResolutionSink cenv.tcSink (tid.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.RelatedText, env.eAccessRights)
+ CallNameResolutionSink cenv.tcSink (tid.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.RelatedText, env.eAccessRights)
| _ -> ()
let mangledId = ident(vspec.LogicalName, vspec.Range)
@@ -11885,7 +12312,7 @@ and TcLetrecBinding
| None ->
let reqdThisValTy = if isByrefTy g reqdThisValTy then destByrefTy g reqdThisValTy else reqdThisValTy
let enclosingTyconRef = tcrefOfAppTy g reqdThisValTy
- reqdThisValTy, (mkAppTy enclosingTyconRef (List.map mkTyparTy enclosingDeclaredTypars)), vspec.Range
+ reqdThisValTy, (mkWoNullAppTy enclosingTyconRef (List.map mkTyparTy enclosingDeclaredTypars)), vspec.Range
| Some thisVal ->
reqdThisValTy, thisVal.Type, thisVal.Range
if not (AddCxTypeEqualsTypeUndoIfFailed envRec.DisplayEnv cenv.css rangeForCheck actualThisValTy reqdThisValTy) then
@@ -12034,7 +12461,7 @@ and TcIncrementalLetRecGeneralization cenv scopem
// Some of the bindings may now have been marked as 'generalizable' (which means they now transition
// from PreGeneralization --> PostGeneralization, since we won't get any more information on
// these bindings by processing later bindings). But this doesn't mean we
- // actually generalize all the individual type variables occuring in these bindings - for example, some
+ // actually generalize all the individual type variables occurring in these bindings - for example, some
// type variables may be free in the environment, and some definitions
// may be value definitions which can't be generalized, e.g.
// let rec f x = g x
@@ -12242,11 +12669,7 @@ and FixupLetrecBind (cenv: cenv) denv generalizedTyparsForRecursiveBlock (bind:
// Check coherence of generalization of variables for memberInfo members in generic classes
match vspec.MemberInfo with
-#if EXTENDED_EXTENSION_MEMBERS // indicates if extension members can add additional constraints to type parameters
- | Some _ when not vspec.IsExtensionMember ->
-#else
| Some _ ->
-#endif
match PartitionValTyparsForApparentEnclosingType g vspec with
| Some(parentTypars, memberParentTypars, _, _, _) ->
ignore(SignatureConformance.Checker(g, cenv.amap, denv, SignatureRepackageInfo.Empty, false).CheckTypars vspec.Range TypeEquivEnv.Empty memberParentTypars parentTypars)
@@ -12353,7 +12776,7 @@ let private PublishArguments (cenv: cenv) (env: TcEnv) vspec (synValSig: SynValS
for (argTy, argReprInfo), ident in argData do
let item = Item.OtherName (Some ident, argTy, Some argReprInfo, None, ident.idRange)
- CallNameResolutionSink cenv.tcSink (ident.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, env.AccessRights)
+ CallNameResolutionSink cenv.tcSink (ident.idRange, env.NameEnv, item, emptyTyparInst, ItemOccurrence.Binding, env.AccessRights)
let TcAndPublishValSpec (cenv: cenv, env, containerInfo: ContainerInfo, declKind : DeclKind, memFlagsOpt, tpenv, synValSig) =
@@ -12361,8 +12784,9 @@ let TcAndPublishValSpec (cenv: cenv, env, containerInfo: ContainerInfo, declKind
let (SynValSig (attributes=Attributes synAttrs; explicitTypeParams=explicitTypeParams; isInline=isInline; isMutable=mutableFlag; xmlDoc=xmlDoc; accessibility=vis; synExpr=literalExprOpt; range=m)) = synValSig
let (ValTyparDecls (synTypars, _, synCanInferTypars)) = explicitTypeParams
+ let declaredTypars = TcTyparDecls cenv env synTypars
- GeneralizationHelpers.CheckDeclaredTyparsPermitted(memFlagsOpt, synTypars, m)
+ GeneralizationHelpers.CheckDeclaredTyparsPermitted(memFlagsOpt, declaredTypars, m)
let canInferTypars = GeneralizationHelpers.ComputeCanInferExtraGeneralizableTypars (containerInfo.ParentRef, synCanInferTypars, memFlagsOpt)
@@ -12373,8 +12797,22 @@ let TcAndPublishValSpec (cenv: cenv, env, containerInfo: ContainerInfo, declKind
let valinfos, tpenv = TcValSpec cenv env declKind newOk containerInfo memFlagsOpt None tpenv synValSig attrs
let denv = env.DisplayEnv
+ let viss =
+ match memFlagsOpt with
+ | Some ({MemberKind = SynMemberKind.PropertyGetSet as propKind}) ->
+ let getterAccess, setterAccess = getGetterSetterAccess vis propKind g.langVersion
+ List.init valinfos.Length (fun i -> if i = 0 then getterAccess else setterAccess)
+ | Some ({MemberKind = SynMemberKind.PropertyGet as propKind}) ->
+ let getterAccess, _ = getGetterSetterAccess vis propKind g.langVersion
+ List.init valinfos.Length (fun _ -> getterAccess)
+ | Some ({MemberKind = SynMemberKind.PropertySet as propKind}) ->
+ let _, setterAccess = getGetterSetterAccess vis propKind g.langVersion
+ List.init valinfos.Length (fun _ -> setterAccess)
+ | _ ->
+ List.init valinfos.Length (fun _ -> vis.SingleAccess())
+ let valinfos = List.zip valinfos viss
- (tpenv, valinfos) ||> List.mapFold (fun tpenv valSpecResult ->
+ (tpenv, valinfos) ||> List.mapFold (fun tpenv (valSpecResult, vis) ->
let (ValSpecResult (altActualParent, memberInfoOpt, id, enclosingDeclaredTypars, declaredTypars, ty, prelimValReprInfo, declKind)) = valSpecResult
@@ -12418,7 +12856,7 @@ let TcAndPublishValSpec (cenv: cenv, env, containerInfo: ContainerInfo, declKind
| None -> None
| Some valReprInfo -> Some valReprInfo.ArgNames
- let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs
+ let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs
let xmlDoc = xmlDoc.ToXmlDoc(checkXmlDocs, paramNames)
let vspec = MakeAndPublishVal cenv env (altActualParent, true, declKind, ValNotInRecScope, valscheme, attrs, xmlDoc, literalValue, false)
@@ -12426,4 +12864,4 @@ let TcAndPublishValSpec (cenv: cenv, env, containerInfo: ContainerInfo, declKind
assert(vspec.InlineInfo = inlineFlag)
- vspec, tpenv)
+ vspec, tpenv)
\ No newline at end of file
diff --git a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressions.fsi
similarity index 95%
rename from src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi
rename to src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressions.fsi
index 16a759c2e3..0e4e17a8f8 100644
--- a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressions.fsi
@@ -75,7 +75,7 @@ exception UnionPatternsBindDifferentNames of range
exception VarBoundTwice of Ident
-exception ValueRestriction of DisplayEnv * InfoReader * bool * Val * Typar * range
+exception ValueRestriction of DisplayEnv * InfoReader * Val * Typar * range
exception ValNotMutable of DisplayEnv * ValRef * range
@@ -123,9 +123,6 @@ exception InvalidInternalsVisibleToAssemblyName of badName: string * fileName: s
val TcFieldInit: range -> ILFieldInit -> Const
-val LightweightTcValForUsingInBuildMethodCall:
- g: TcGlobals -> vref: ValRef -> vrefFlags: ValUseFlag -> vrefTypeInst: TTypes -> m: range -> Expr * TType
-
/// Indicates whether a syntactic type is allowed to include new type variables
/// not declared anywhere, e.g. `let f (x: 'T option) = x.Value`
type ImplicitlyBoundTyparsAllowed =
@@ -256,7 +253,7 @@ type NormalizedBinding =
| NormalizedBinding of
visibility: SynAccess option *
kind: SynBindingKind *
- mustInline: bool *
+ shouldInline: bool *
isMutable: bool *
attribs: SynAttribute list *
xmlDoc: XmlDoc *
@@ -348,6 +345,19 @@ type PostSpecialValsRecursiveBinding =
{ ValScheme: ValScheme
Binding: Binding }
+[]
+type TcCanFail =
+ | IgnoreMemberResoutionError
+ | IgnoreAllErrors
+ | ReportAllErrors
+
+/// Represents a pattern that is used in a true match clause e.g. | pat -> expr
+[]
+[]
+type TcTrueMatchClause =
+ | Yes
+ | No
+
/// Represents a recursive binding after it has been both checked and generalized, but
/// before initialization recursion has been rewritten
type PreInitializationGraphEliminationBinding =
@@ -413,7 +423,7 @@ val CheckSuperType: cenv: TcFileState -> ty: TType -> m: range -> unit
val ChooseCanonicalDeclaredTyparsAfterInference:
g: TcGlobals -> denv: DisplayEnv -> declaredTypars: Typar list -> m: range -> Typar list
-/// After inference, view a ValSchem in a canonical way.
+/// After inference, view a ValScheme in a canonical way.
val ChooseCanonicalValSchemeAfterInference:
g: TcGlobals -> denv: DisplayEnv -> vscheme: ValScheme -> m: range -> ValScheme
@@ -428,8 +438,9 @@ val ComputeAccessRights:
eFamilyType: TyconRef option ->
AccessorDomain
-/// Compute the available access rights and module/entity compilation path for a paricular location in code
+/// Compute the available access rights and module/entity compilation path for a particular location in code
val ComputeAccessAndCompPath:
+ g: TcGlobals ->
env: TcEnv ->
declKindOpt: DeclKind option ->
m: range ->
@@ -441,20 +452,6 @@ val ComputeAccessAndCompPath:
/// Get the expression resulting from turning an expression into an enumerable value, e.g. at 'for' loops
val ConvertArbitraryExprToEnumerable: cenv: TcFileState -> ty: TType -> env: TcEnv -> expr: Expr -> Expr * TType
-/// Invoke pattern match compilation
-val CompilePatternForMatchClauses:
- cenv: TcFileState ->
- env: TcEnv ->
- mExpr: range ->
- mMatch: range ->
- warnOnUnused: bool ->
- actionOnFailure: ActionOnFailure ->
- inputExprOpt: Expr option ->
- inputTy: TType ->
- resultTy: TType ->
- tclauses: MatchClause list ->
- Val * Expr
-
/// Process recursive bindings so that initialization is through laziness and is checked.
/// The bindings may be either plain 'let rec' bindings or mutually recursive nestings of modules and types.
/// The functions must iterate the actual bindings and process them to the overall result.
@@ -556,7 +553,7 @@ val MakeInnerEnv:
TcEnv * ModuleOrNamespaceType ref
/// Return a new environment suitable for processing declarations in the interior of a module definition
-/// given that the accumulator for the module type already exisits.
+/// given that the accumulator for the module type already exists.
val MakeInnerEnvWithAcc:
addOpenToNameEnv: bool ->
env: TcEnv ->
@@ -566,7 +563,7 @@ val MakeInnerEnvWithAcc:
TcEnv
/// Produce a post-generalization type scheme for a simple type where no type inference generalization
-/// is appplied.
+/// is applied.
val NonGenericTypeScheme: ty: TType -> GeneralizedType
/// Publish a module definition to the module/namespace type accumulator.
@@ -614,7 +611,7 @@ val TcAttributesCanFail:
/// Check a set of attributes which can only target specific elements
val TcAttributesWithPossibleTargets:
- canFail: bool ->
+ canFail: TcCanFail ->
cenv: TcFileState ->
env: TcEnv ->
attrTgt: AttributeTargets ->
@@ -639,9 +636,8 @@ val TcExpr:
val CheckTupleIsCorrectLength:
g: TcGlobals -> env: TcEnv -> m: range -> tupleTy: TType -> args: 'a list -> tcArgs: (TType list -> unit) -> unit
-/// Converts 'a..b' to a call to the '(..)' operator in FSharp.Core
-/// Converts 'a..b..c' to a call to the '(.. ..)' operator in FSharp.Core
-val RewriteRangeExpr: synExpr: SynExpr -> SynExpr option
+/// Check record names and types for cases like cases like `query { for ... join(for x in f(). }`
+val RecordNameAndTypeResolutions: cenv: TcFileState -> env: TcEnv -> tpenv: UnscopedTyparEnv -> expr: SynExpr -> unit
/// Check a syntactic expression and convert it to a typed tree expression
val TcExprOfUnknownType:
@@ -700,7 +696,11 @@ val TcLinearExprs:
/// Try to check a syntactic statement and indicate if it's type is not unit without emitting a warning
val TryTcStmt:
- cenv: TcFileState -> env: TcEnv -> tpenv: UnscopedTyparEnv -> synExpr: SynExpr -> bool * Expr * UnscopedTyparEnv
+ cenv: TcFileState ->
+ env: TcEnv ->
+ tpenv: UnscopedTyparEnv ->
+ synExpr: SynExpr ->
+ bool * TType * Expr * UnscopedTyparEnv
/// Check a pattern being used as a pattern match
val TcMatchPattern:
@@ -710,9 +710,11 @@ val TcMatchPattern:
tpenv: UnscopedTyparEnv ->
synPat: SynPat ->
synWhenExprOpt: SynExpr option ->
+ tcTrueMatchClause: TcTrueMatchClause ->
Pattern * Expr option * Val list * TcEnv * UnscopedTyparEnv
-val (|BinOpExpr|_|): SynExpr -> (Ident * SynExpr * SynExpr) option
+[]
+val (|BinOpExpr|_|): SynExpr -> (Ident * SynExpr * SynExpr) voption
/// Check a set of let bindings in a class or module
val TcLetBindings:
@@ -743,7 +745,7 @@ val TcLetrecBinding:
UnscopedTyparEnv *
Map
-/// Get the binding for the implicit safe initialziation check value if it is being used
+/// Get the binding for the implicit safe initialization check value if it is being used
val TcLetrecComputeCtorSafeThisValBind: cenv: TcFileState -> safeThisValOpt: Val option -> Binding option
/// Check a collection of `let rec` bindings
@@ -792,7 +794,7 @@ val TcTyparConstraints:
cenv: TcFileState ->
newOk: ImplicitlyBoundTyparsAllowed ->
checkConstraints: CheckConstraints ->
- occ: ItemOccurence ->
+ occ: ItemOccurrence ->
env: TcEnv ->
tpenv: UnscopedTyparEnv ->
synConstraints: SynTypeConstraint list ->
@@ -806,7 +808,7 @@ val TcType:
cenv: TcFileState ->
newOk: ImplicitlyBoundTyparsAllowed ->
checkConstraints: CheckConstraints ->
- occ: ItemOccurence ->
+ occ: ItemOccurrence ->
iwsam: WarnOnIWSAM ->
env: TcEnv ->
tpenv: UnscopedTyparEnv ->
@@ -819,7 +821,7 @@ val TcTypeOrMeasureAndRecover:
cenv: TcFileState ->
newOk: ImplicitlyBoundTyparsAllowed ->
checkConstraints: CheckConstraints ->
- occ: ItemOccurence ->
+ occ: ItemOccurrence ->
iwsam: WarnOnIWSAM ->
env: TcEnv ->
tpenv: UnscopedTyparEnv ->
@@ -831,7 +833,7 @@ val TcTypeAndRecover:
cenv: TcFileState ->
newOk: ImplicitlyBoundTyparsAllowed ->
checkConstraints: CheckConstraints ->
- occ: ItemOccurence ->
+ occ: ItemOccurrence ->
iwsam: WarnOnIWSAM ->
env: TcEnv ->
tpenv: UnscopedTyparEnv ->
@@ -866,9 +868,6 @@ val TranslateSynValInfo:
/// once type parameters have been fully inferred via generalization.
val TranslatePartialValReprInfo: tps: Typar list -> PrelimValReprInfo -> ValReprInfo
-/// Constrain two types to be equal within this type checking context
-val UnifyTypes: cenv: TcFileState -> env: TcEnv -> m: range -> expectedTy: TType -> actualTy: TType -> unit
-
val TcRuntimeTypeTest:
isCast: bool ->
isOperator: bool ->
@@ -933,12 +932,12 @@ val TcVal:
module GeneralizationHelpers =
/// Given an environment, compute the set of inference type variables which may not be
- /// generalised, because they appear somewhere in the types of the constructs availabe
+ /// generalised, because they appear somewhere in the types of the constructs available
/// in the environment.
val ComputeUngeneralizableTypars: env: TcEnv -> Zset
/// Given an environment, compute the set of trait solutions which must appear before
- /// the current location, not after (to prevent use-before definitiosn and
+ /// the current location, not after (to prevent use-before definitions and
/// forward calls via type inference filling in trait solutions).
val ComputeUnabstractableTraitSolutions: env: TcEnv -> FreeLocals
diff --git a/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressionsOps.fs b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressionsOps.fs
new file mode 100644
index 0000000000..17572c86e4
--- /dev/null
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckExpressionsOps.fs
@@ -0,0 +1,381 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+module internal FSharp.Compiler.CheckExpressionsOps
+
+open Internal.Utilities.Library
+open Internal.Utilities.Library.Extras
+open FSharp.Compiler.CheckBasics
+open FSharp.Compiler.ConstraintSolver
+open FSharp.Compiler.DiagnosticsLogger
+open FSharp.Compiler.Features
+open FSharp.Compiler.NameResolution
+open FSharp.Compiler.PatternMatchCompilation
+open FSharp.Compiler.Text
+open FSharp.Compiler.Text.Range
+open FSharp.Compiler.Syntax
+open FSharp.Compiler.TypedTree
+open FSharp.Compiler.TypedTreeBasics
+open FSharp.Compiler.TypedTreeOps
+open FSharp.Compiler.SyntaxTreeOps
+
+let CopyAndFixupTypars g m rigid tpsorig =
+ FreshenAndFixupTypars g m rigid [] [] tpsorig
+
+let FreshenPossibleForallTy g m rigid ty =
+ let origTypars, tau = tryDestForallTy g ty
+
+ if isNil origTypars then
+ [], [], [], tau
+ else
+ // tps may be have been equated to other tps in equi-recursive type inference and units-of-measure type inference. Normalize them here
+ let origTypars = NormalizeDeclaredTyparsForEquiRecursiveInference g origTypars
+ let tps, renaming, tinst = CopyAndFixupTypars g m rigid origTypars
+ origTypars, tps, tinst, instType renaming tau
+
+/// simplified version of TcVal used in calls to BuildMethodCall (typrelns.fs)
+/// this function is used on typechecking step for making calls to provided methods and on optimization step (for the same purpose).
+let LightweightTcValForUsingInBuildMethodCall g (vref: ValRef) vrefFlags (vrefTypeInst: TTypes) m =
+ let v = vref.Deref
+ let vTy = vref.Type
+ // byref-typed values get dereferenced
+ if isByrefTy g vTy then
+ mkAddrGet m vref, destByrefTy g vTy
+ else
+ match v.LiteralValue with
+ | Some literalConst ->
+ let _, _, _, tau = FreshenPossibleForallTy g m TyparRigidity.Flexible vTy
+ Expr.Const(literalConst, m, tau), tau
+
+ | None ->
+ // Instantiate the value
+ let tau =
+ // If we have got an explicit instantiation then use that
+ let _, tps, tpTys, tau = FreshenPossibleForallTy g m TyparRigidity.Flexible vTy
+
+ if tpTys.Length <> vrefTypeInst.Length then
+ error (Error(FSComp.SR.tcTypeParameterArityMismatch (tps.Length, vrefTypeInst.Length), m))
+
+ instType (mkTyparInst tps vrefTypeInst) tau
+
+ let exprForVal = Expr.Val(vref, vrefFlags, m)
+ let exprForVal = mkTyAppExpr m (exprForVal, vTy) vrefTypeInst
+ exprForVal, tau
+
+//-------------------------------------------------------------------------
+// Helpers dealing with pattern match compilation
+//-------------------------------------------------------------------------
+
+let CompilePatternForMatch
+ (cenv: TcFileState)
+ (env: TcEnv)
+ mExpr
+ mMatch
+ warnOnUnused
+ actionOnFailure
+ (inputVal, generalizedTypars, inputExprOpt)
+ clauses
+ inputTy
+ resultTy
+ =
+ let g = cenv.g
+
+ let dtree, targets =
+ CompilePattern
+ g
+ env.DisplayEnv
+ cenv.amap
+ (LightweightTcValForUsingInBuildMethodCall g)
+ cenv.infoReader
+ mExpr
+ mMatch
+ warnOnUnused
+ actionOnFailure
+ (inputVal, generalizedTypars, inputExprOpt)
+ clauses
+ inputTy
+ resultTy
+
+ mkAndSimplifyMatch DebugPointAtBinding.NoneAtInvisible mExpr mMatch resultTy dtree targets
+
+/// Invoke pattern match compilation
+let CompilePatternForMatchClauses (cenv: TcFileState) env mExpr mMatch warnOnUnused actionOnFailure inputExprOpt inputTy resultTy tclauses =
+ // Avoid creating a dummy in the common cases where we are about to bind a name for the expression
+ // CLEANUP: avoid code duplication with code further below, i.e.all callers should call CompilePatternForMatch
+ match tclauses with
+ | [ MatchClause(TPat_as(pat1, PatternValBinding(asVal, GeneralizedType(generalizedTypars, _)), _), None, TTarget(vs, targetExpr, _), m2) ] ->
+ let vs2 = ListSet.remove valEq asVal vs
+
+ let expr =
+ CompilePatternForMatch
+ cenv
+ env
+ mExpr
+ mMatch
+ warnOnUnused
+ actionOnFailure
+ (asVal, generalizedTypars, None)
+ [ MatchClause(pat1, None, TTarget(vs2, targetExpr, None), m2) ]
+ inputTy
+ resultTy
+
+ asVal, expr
+ | _ ->
+ let matchValueTmp, _ = mkCompGenLocal mExpr "matchValue" inputTy
+
+ let expr =
+ CompilePatternForMatch
+ cenv
+ env
+ mExpr
+ mMatch
+ warnOnUnused
+ actionOnFailure
+ (matchValueTmp, [], inputExprOpt)
+ tclauses
+ inputTy
+ resultTy
+
+ matchValueTmp, expr
+
+/// Constrain two types to be equal within this type checking context
+let inline UnifyTypes (cenv: TcFileState) (env: TcEnv) m expectedTy actualTy =
+
+ AddCxTypeEqualsType
+ env.eContextInfo
+ env.DisplayEnv
+ cenv.css
+ m
+ (tryNormalizeMeasureInType cenv.g expectedTy)
+ (tryNormalizeMeasureInType cenv.g actualTy)
+
+// Converts 'a..b' to a call to the '(..)' operator in FSharp.Core
+// Converts 'a..b..c' to a call to the '(.. ..)' operator in FSharp.Core
+//
+// NOTE: we could eliminate these more efficiently in LowerComputedCollections.fs, since
+// [| 1..4 |]
+// becomes [| for i in (..) 1 4 do yield i |]
+// instead of generating the array directly from the ranges
+let RewriteRangeExpr synExpr =
+ match synExpr with
+ // a..b..c (parsed as (a..b)..c )
+ | SynExpr.IndexRange(Some(SynExpr.IndexRange(Some synExpr1, _, Some synStepExpr, _, _, _)), _, Some synExpr2, _m1, _m2, mWhole) ->
+ let mWhole = mWhole.MakeSynthetic()
+ Some(mkSynTrifix mWhole ".. .." synExpr1 synStepExpr synExpr2)
+ // a..b
+ | SynExpr.IndexRange(Some synExpr1, mOperator, Some synExpr2, _m1, _m2, mWhole) ->
+ let otherExpr =
+ let mWhole = mWhole.MakeSynthetic()
+
+ match mkSynInfix mOperator synExpr1 ".." synExpr2 with
+ | SynExpr.App(a, b, c, d, _) -> SynExpr.App(a, b, c, d, mWhole)
+ | _ -> failwith "impossible"
+
+ Some otherExpr
+ | _ -> None
+
+/// Check if a computation or sequence expression is syntactically free of 'yield' (though not yield!)
+let YieldFree (cenv: TcFileState) expr =
+ if cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield then
+
+ // Implement yield free logic for F# Language including the LanguageFeature.ImplicitYield
+ let rec YieldFree expr =
+ match expr with
+ | SynExpr.Sequential(expr1 = expr1; expr2 = expr2) -> YieldFree expr1 && YieldFree expr2
+
+ | SynExpr.IfThenElse(thenExpr = thenExpr; elseExpr = elseExprOpt) -> YieldFree thenExpr && Option.forall YieldFree elseExprOpt
+
+ | SynExpr.TryWith(tryExpr = body; withCases = clauses) ->
+ YieldFree body
+ && clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
+
+ | SynExpr.Match(clauses = clauses)
+ | SynExpr.MatchBang(clauses = clauses) -> clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
+
+ | SynExpr.For(doBody = body)
+ | SynExpr.TryFinally(tryExpr = body)
+ | SynExpr.LetOrUse(body = body)
+ | SynExpr.While(doExpr = body)
+ | SynExpr.WhileBang(doExpr = body)
+ | SynExpr.ForEach(bodyExpr = body) -> YieldFree body
+
+ | SynExpr.LetOrUseBang(body = body) -> YieldFree body
+
+ | SynExpr.YieldOrReturn(flags = (true, _)) -> false
+
+ | _ -> true
+
+ YieldFree expr
+ else
+ // Implement yield free logic for F# Language without the LanguageFeature.ImplicitYield
+ let rec YieldFree expr =
+ match expr with
+ | SynExpr.Sequential(expr1 = expr1; expr2 = expr2) -> YieldFree expr1 && YieldFree expr2
+
+ | SynExpr.IfThenElse(thenExpr = thenExpr; elseExpr = elseExprOpt) -> YieldFree thenExpr && Option.forall YieldFree elseExprOpt
+
+ | SynExpr.TryWith(tryExpr = e1; withCases = clauses) ->
+ YieldFree e1
+ && clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
+
+ | SynExpr.Match(clauses = clauses)
+ | SynExpr.MatchBang(clauses = clauses) -> clauses |> List.forall (fun (SynMatchClause(resultExpr = res)) -> YieldFree res)
+
+ | SynExpr.For(doBody = body)
+ | SynExpr.TryFinally(tryExpr = body)
+ | SynExpr.LetOrUse(body = body)
+ | SynExpr.While(doExpr = body)
+ | SynExpr.WhileBang(doExpr = body)
+ | SynExpr.ForEach(bodyExpr = body) -> YieldFree body
+
+ | SynExpr.LetOrUseBang _
+ | SynExpr.YieldOrReturnFrom _
+ | SynExpr.YieldOrReturn _
+ | SynExpr.ImplicitZero _
+ | SynExpr.Do _ -> false
+
+ | _ -> true
+
+ YieldFree expr
+
+let inline IsSimpleSemicolonSequenceElement expr cenv acceptDeprecated =
+ match expr with
+ | SynExpr.IfThenElse _ when acceptDeprecated && YieldFree cenv expr -> true
+ | SynExpr.IfThenElse _
+ | SynExpr.TryWith _
+ | SynExpr.Match _
+ | SynExpr.For _
+ | SynExpr.ForEach _
+ | SynExpr.TryFinally _
+ | SynExpr.YieldOrReturnFrom _
+ | SynExpr.YieldOrReturn _
+ | SynExpr.LetOrUse _
+ | SynExpr.Do _
+ | SynExpr.MatchBang _
+ | SynExpr.LetOrUseBang _
+ | SynExpr.While _
+ | SynExpr.WhileBang _ -> false
+ | _ -> true
+
+[]
+let rec TryGetSimpleSemicolonSequenceOfComprehension expr acc cenv acceptDeprecated =
+ match expr with
+ | SynExpr.Sequential(isTrueSeq = true; expr1 = e1; expr2 = e2) ->
+ if IsSimpleSemicolonSequenceElement e1 cenv acceptDeprecated then
+ TryGetSimpleSemicolonSequenceOfComprehension e2 (e1 :: acc) cenv acceptDeprecated
+ else
+ ValueNone
+ | _ ->
+ if IsSimpleSemicolonSequenceElement expr cenv acceptDeprecated then
+ ValueSome(List.rev (expr :: acc))
+ else
+ ValueNone
+
+/// Determine if a syntactic expression inside 'seq { ... }' or '[...]' counts as a "simple sequence
+/// of semicolon separated values". For example [1;2;3].
+/// 'acceptDeprecated' is true for the '[ ... ]' case, where we allow the syntax '[ if g then t else e ]' but ask it to be parenthesized
+[]
+let (|SimpleSemicolonSequence|_|) cenv acceptDeprecated cexpr =
+ TryGetSimpleSemicolonSequenceOfComprehension cexpr [] cenv acceptDeprecated
+
+let elimFastIntegerForLoop (spFor, spTo, id, start: SynExpr, dir, finish: SynExpr, innerExpr, m: range) =
+ let mOp = (unionRanges start.Range finish.Range).MakeSynthetic()
+
+ let pseudoEnumExpr =
+ if dir then
+ mkSynInfix mOp start ".." finish
+ else
+ mkSynTrifix mOp ".. .." start (SynExpr.Const(SynConst.Int32 -1, mOp)) finish
+
+ SynExpr.ForEach(spFor, spTo, SeqExprOnly false, true, mkSynPatVar None id, pseudoEnumExpr, innerExpr, m)
+
+let mkSeqEmpty (cenv: TcFileState) env m genTy =
+ // We must discover the 'zero' of the monadic algebra being generated in order to compile failing matches.
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy g genResultTy)
+ mkCallSeqEmpty g m genResultTy
+
+let mkSeqUsing (cenv: TcFileState) (env: TcEnv) m resourceTy genTy resourceExpr lam =
+ let g = cenv.g
+ AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace g.system_IDisposable_ty resourceTy
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+ mkCallSeqUsing cenv.g m resourceTy genResultTy resourceExpr lam
+
+let mkSeqAppend (cenv: TcFileState) env m genTy e1 e2 =
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+
+ let e1 =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e1) e1
+
+ let e2 =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e2) e2
+
+ mkCallSeqAppend cenv.g m genResultTy e1 e2
+
+let mkSeqDelay (cenv: TcFileState) env m genTy lam =
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+ mkCallSeqDelay cenv.g m genResultTy (mkUnitDelayLambda cenv.g m lam)
+
+let mkSeqCollect (cenv: TcFileState) env m enumElemTy genTy lam enumExpr =
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+
+ let enumExpr =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g enumElemTy) (tyOfExpr cenv.g enumExpr) enumExpr
+
+ mkCallSeqCollect cenv.g m enumElemTy genResultTy lam enumExpr
+
+let mkSeqFromFunctions (cenv: TcFileState) env m genTy e1 e2 =
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+
+ let e2 =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e2) e2
+
+ mkCallSeqGenerated cenv.g m genResultTy e1 e2
+
+let mkSeqFinally (cenv: TcFileState) env m genTy e1 e2 =
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+
+ let e1 =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e1) e1
+
+ mkCallSeqFinally cenv.g m genResultTy e1 e2
+
+let mkSeqTryWith (cenv: TcFileState) env m genTy origSeq exnFilter exnHandler =
+ let g = cenv.g
+ let genResultTy = NewInferenceType g
+ UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy)
+
+ let origSeq =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g origSeq) origSeq
+
+ mkCallSeqTryWith cenv.g m genResultTy origSeq exnFilter exnHandler
+
+let inline mkSeqExprMatchClauses (pat, vspecs) innerExpr =
+ [ MatchClause(pat, None, TTarget(vspecs, innerExpr, None), pat.Range) ]
+
+let compileSeqExprMatchClauses (cenv: TcFileState) env inputExprMark (pat: Pattern, vspecs) innerExpr inputExprOpt bindPatTy genInnerTy =
+ let patMark = pat.Range
+ let tclauses = mkSeqExprMatchClauses (pat, vspecs) innerExpr
+
+ CompilePatternForMatchClauses
+ cenv
+ env
+ inputExprMark
+ patMark
+ false
+ ThrowIncompleteMatchException
+ inputExprOpt
+ bindPatTy
+ genInnerTy
+ tclauses
diff --git a/src/fcs-fable/src/Compiler/Checking/Expressions/CheckSequenceExpressions.fs b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckSequenceExpressions.fs
new file mode 100644
index 0000000000..3c5f136d28
--- /dev/null
+++ b/src/fcs-fable/src/Compiler/Checking/Expressions/CheckSequenceExpressions.fs
@@ -0,0 +1,469 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+/// Sequence expressions checking
+module internal FSharp.Compiler.CheckSequenceExpressions
+
+open Internal.Utilities.Library
+open FSharp.Compiler.CheckBasics
+open FSharp.Compiler.CheckExpressions
+open FSharp.Compiler.CheckExpressionsOps
+open FSharp.Compiler.ConstraintSolver
+open FSharp.Compiler.Features
+open FSharp.Compiler.NameResolution
+open FSharp.Compiler.PatternMatchCompilation
+open FSharp.Compiler.Syntax
+open FSharp.Compiler.Text
+open FSharp.Compiler.TypedTree
+open FSharp.Compiler.TypedTreeOps
+open FSharp.Compiler.DiagnosticsLogger
+open FSharp.Compiler.SyntaxTreeOps
+
+/// This case is used for computation expressions which are sequence expressions. Technically the code path is different because it
+/// typechecks rather than doing a shallow syntactic translation, and generates calls into the Seq.* library
+/// and helpers rather than to the builder methods (there is actually no builder for 'seq' in the library).
+/// These are later detected by state machine compilation.
+///
+/// Also "ienumerable extraction" is performed on arguments to "for".
+let TcSequenceExpression (cenv: TcFileState) env tpenv comp (overallTy: OverallTy) m =
+
+ let g = cenv.g
+ let genEnumElemTy = NewInferenceType g
+ UnifyTypes cenv env m overallTy.Commit (mkSeqTy cenv.g genEnumElemTy)
+
+ // Allow subsumption at 'yield' if the element type is nominal prior to the analysis of the body of the sequence expression
+ let flex = not (isTyparTy cenv.g genEnumElemTy)
+
+ // If there are no 'yield' in the computation expression then allow the type-directed rule
+ // interpreting non-unit-typed expressions in statement positions as 'yield'. 'yield!' may be
+ // present in the computation expression.
+ let enableImplicitYield =
+ cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
+ && (YieldFree cenv comp)
+
+ let mkSeqDelayedExpr m (coreExpr: Expr) =
+ let overallTy = tyOfExpr cenv.g coreExpr
+ mkSeqDelay cenv env m overallTy coreExpr
+
+ let rec tryTcSequenceExprBody env genOuterTy tpenv comp =
+ match comp with
+ | SynExpr.ForEach(spFor, spIn, SeqExprOnly _seqExprOnly, _isFromSource, pat, pseudoEnumExpr, innerComp, _m) ->
+ let pseudoEnumExpr =
+ match RewriteRangeExpr pseudoEnumExpr with
+ | Some e -> e
+ | None -> pseudoEnumExpr
+ // This expression is not checked with the knowledge it is an IEnumerable, since we permit other enumerable types with GetEnumerator/MoveNext methods, as does C#
+ let pseudoEnumExpr, arbitraryTy, tpenv =
+ TcExprOfUnknownType cenv env tpenv pseudoEnumExpr
+
+ let enumExpr, enumElemTy =
+ ConvertArbitraryExprToEnumerable cenv arbitraryTy env pseudoEnumExpr
+
+ let patR, _, vspecs, envinner, tpenv =
+ TcMatchPattern cenv enumElemTy env tpenv pat None TcTrueMatchClause.No
+
+ let innerExpr, tpenv =
+ let envinner = { envinner with eIsControlFlow = true }
+ tcSequenceExprBody envinner genOuterTy tpenv innerComp
+
+ let enumExprRange = enumExpr.Range
+
+ // We attach the debug point to the lambda expression so we can fetch it out again in LowerComputedListOrArraySeqExpr
+ let mFor =
+ match spFor with
+ | DebugPointAtFor.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.For)
+ | _ -> enumExprRange
+
+ // We attach the debug point to the lambda expression so we can fetch it out again in LowerComputedListOrArraySeqExpr
+ let mIn =
+ match spIn with
+ | DebugPointAtInOrTo.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.InOrTo)
+ | _ -> pat.Range
+
+ match patR, vspecs, innerExpr with
+ // Legacy peephole optimization:
+ // "seq { .. for x in e1 -> e2 .. }" == "e1 |> Seq.map (fun x -> e2)"
+ // "seq { .. for x in e1 do yield e2 .. }" == "e1 |> Seq.map (fun x -> e2)"
+ //
+ // This transformation is visible in quotations and thus needs to remain.
+ | (TPat_as(TPat_wild _, PatternValBinding(v, _), _),
+ [ _ ],
+ DebugPoints(Expr.App(Expr.Val(vref, _, _), _, [ genEnumElemTy ], [ yieldExpr ], _mYield), recreate)) when
+ valRefEq cenv.g vref cenv.g.seq_singleton_vref
+ ->
+
+ // The debug point mFor is attached to the 'map'
+ // The debug point mIn is attached to the lambda
+ // Note: the 'yield' part of the debug point for 'yield expr' is currently lost in debug points.
+ let lam = mkLambda mIn v (recreate yieldExpr, genEnumElemTy)
+
+ let enumExpr =
+ mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g enumElemTy) (tyOfExpr cenv.g enumExpr) enumExpr
+
+ Some(mkCallSeqMap cenv.g mFor enumElemTy genEnumElemTy lam enumExpr, tpenv)
+
+ | _ ->
+ // The debug point mFor is attached to the 'collect'
+ // The debug point mIn is attached to the lambda
+ let matchv, matchExpr =
+ compileSeqExprMatchClauses cenv env enumExprRange (patR, vspecs) innerExpr None enumElemTy genOuterTy
+
+ let lam = mkLambda mIn matchv (matchExpr, tyOfExpr cenv.g matchExpr)
+ Some(mkSeqCollect cenv env mFor enumElemTy genOuterTy lam enumExpr, tpenv)
+
+ | SynExpr.For(
+ forDebugPoint = spFor
+ toDebugPoint = spTo
+ ident = id
+ identBody = start
+ direction = dir
+ toBody = finish
+ doBody = innerComp
+ range = m) ->
+ Some(tcSequenceExprBody env genOuterTy tpenv (elimFastIntegerForLoop (spFor, spTo, id, start, dir, finish, innerComp, m)))
+
+ | SynExpr.While(spWhile, guardExpr, innerComp, _m) ->
+ let guardExpr, tpenv =
+ let env = { env with eIsControlFlow = false }
+ TcExpr cenv (MustEqual cenv.g.bool_ty) env tpenv guardExpr
+
+ let innerExpr, tpenv =
+ let env = { env with eIsControlFlow = true }
+ tcSequenceExprBody env genOuterTy tpenv innerComp
+
+ let guardExprMark = guardExpr.Range
+ let guardLambdaExpr = mkUnitDelayLambda cenv.g guardExprMark guardExpr
+
+ // We attach the debug point to the lambda expression so we can fetch it out again in LowerComputedListOrArraySeqExpr
+ let mWhile =
+ match spWhile with
+ | DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While)
+ | _ -> guardExprMark
+
+ let innerDelayedExpr = mkSeqDelayedExpr mWhile innerExpr
+ Some(mkSeqFromFunctions cenv env guardExprMark genOuterTy guardLambdaExpr innerDelayedExpr, tpenv)
+
+ | SynExpr.TryFinally(innerComp, unwindExpr, mTryToLast, spTry, spFinally, trivia) ->
+ let env = { env with eIsControlFlow = true }
+ let innerExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv innerComp
+ let unwindExpr, tpenv = TcExpr cenv (MustEqual cenv.g.unit_ty) env tpenv unwindExpr
+
+ // We attach the debug points to the lambda expressions so we can fetch it out again in LowerComputedListOrArraySeqExpr
+ let mTry =
+ match spTry with
+ | DebugPointAtTry.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Try)
+ | _ -> trivia.TryKeyword
+
+ let mFinally =
+ match spFinally with
+ | DebugPointAtFinally.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Finally)
+ | _ -> trivia.FinallyKeyword
+
+ let innerExpr = mkSeqDelayedExpr mTry innerExpr
+ let unwindExpr = mkUnitDelayLambda cenv.g mFinally unwindExpr
+
+ Some(mkSeqFinally cenv env mTryToLast genOuterTy innerExpr unwindExpr, tpenv)
+
+ | SynExpr.Paren(range = m) when not (cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield) ->
+ error (Error(FSComp.SR.tcConstructIsAmbiguousInSequenceExpression (), m))
+
+ | SynExpr.ImplicitZero m -> Some(mkSeqEmpty cenv env m genOuterTy, tpenv)
+
+ | SynExpr.DoBang(trivia = { DoBangKeyword = m }) -> error (Error(FSComp.SR.tcDoBangIllegalInSequenceExpression (), m))
+
+ | SynExpr.Sequential(sp, true, innerComp1, innerComp2, m, _) ->
+ let env1 =
+ { env with
+ eIsControlFlow =
+ (match sp with
+ | DebugPointAtSequential.SuppressNeither
+ | DebugPointAtSequential.SuppressExpr -> true
+ | _ -> false)
+ }
+
+ let res, tpenv =
+ tcSequenceExprBodyAsSequenceOrStatement env1 genOuterTy tpenv innerComp1
+
+ let env2 =
+ { env with
+ eIsControlFlow =
+ (match sp with
+ | DebugPointAtSequential.SuppressNeither
+ | DebugPointAtSequential.SuppressStmt -> true
+ | _ -> false)
+ }
+
+ // "expr; cexpr" is treated as sequential execution
+ // "cexpr; cexpr" is treated as append
+ match res with
+ | Choice1Of2 innerExpr1 ->
+ let innerExpr2, tpenv = tcSequenceExprBody env2 genOuterTy tpenv innerComp2
+ let innerExpr2 = mkSeqDelayedExpr innerExpr2.Range innerExpr2
+ Some(mkSeqAppend cenv env innerComp1.Range genOuterTy innerExpr1 innerExpr2, tpenv)
+ | Choice2Of2 stmt1 ->
+ let innerExpr2, tpenv = tcSequenceExprBody env2 genOuterTy tpenv innerComp2
+ Some(Expr.Sequential(stmt1, innerExpr2, NormalSeq, m), tpenv)
+
+ | SynExpr.IfThenElse(guardExpr, thenComp, elseCompOpt, spIfToThen, _isRecovery, mIfToEndOfElseBranch, trivia) ->
+ let guardExpr', tpenv = TcExpr cenv (MustEqual cenv.g.bool_ty) env tpenv guardExpr
+ let env = { env with eIsControlFlow = true }
+ let thenExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv thenComp
+
+ let elseComp =
+ (match elseCompOpt with
+ | Some c -> c
+ | None -> SynExpr.ImplicitZero trivia.IfToThenRange)
+
+ let elseExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv elseComp
+ Some(mkCond spIfToThen mIfToEndOfElseBranch genOuterTy guardExpr' thenExpr elseExpr, tpenv)
+
+ // 'let x = expr in expr'
+ | SynExpr.LetOrUse(isUse = false) ->
+ TcLinearExprs
+ (fun overallTy envinner tpenv e -> tcSequenceExprBody envinner overallTy.Commit tpenv e)
+ cenv
+ env
+ overallTy
+ tpenv
+ true
+ comp
+ id
+ |> Some
+
+ // 'use x = expr in expr'
+ | SynExpr.LetOrUse(
+ isUse = true
+ bindings = [ SynBinding(kind = SynBindingKind.Normal; headPat = pat; expr = rhsExpr) ]
+ body = innerComp
+ range = wholeExprMark
+ trivia = { LetOrUseKeyword = mBind }) ->
+
+ let bindPatTy = NewInferenceType g
+ let inputExprTy = NewInferenceType g
+
+ let pat', _, vspecs, envinner, tpenv =
+ TcMatchPattern cenv bindPatTy env tpenv pat None TcTrueMatchClause.No
+
+ UnifyTypes cenv env m inputExprTy bindPatTy
+
+ let inputExpr, tpenv =
+ let env = { env with eIsControlFlow = true }
+ TcExpr cenv (MustEqual inputExprTy) env tpenv rhsExpr
+
+ let innerExpr, tpenv =
+ let envinner = { envinner with eIsControlFlow = true }
+ tcSequenceExprBody envinner genOuterTy tpenv innerComp
+
+ let inputExprMark = inputExpr.Range
+
+ let matchv, matchExpr =
+ compileSeqExprMatchClauses cenv envinner inputExprMark (pat', vspecs) innerExpr (Some inputExpr) bindPatTy genOuterTy
+
+ let consumeExpr = mkLambda mBind matchv (matchExpr, genOuterTy)
+
+ // The 'mBind' is attached to the lambda
+ Some(mkSeqUsing cenv env wholeExprMark bindPatTy genOuterTy inputExpr consumeExpr, tpenv)
+
+ | SynExpr.LetOrUseBang(range = m) -> error (Error(FSComp.SR.tcUseForInSequenceExpression (), m))
+
+ | SynExpr.Match(spMatch, expr, clauses, _m, _trivia) ->
+ let inputExpr, inputTy, tpenv = TcExprOfUnknownType cenv env tpenv expr
+
+ let tclauses, tpenv =
+ (tpenv, clauses)
+ ||> List.mapFold (fun tpenv (SynMatchClause(pat, cond, innerComp, _, sp, trivia) as clause) ->
+ let isTrueMatchClause =
+ if clause.IsTrueMatchClause then
+ TcTrueMatchClause.Yes
+ else
+ TcTrueMatchClause.No
+
+ let patR, condR, vspecs, envinner, tpenv =
+ TcMatchPattern cenv inputTy env tpenv pat cond isTrueMatchClause
+
+ let envinner =
+ match sp with
+ | DebugPointAtTarget.Yes -> { envinner with eIsControlFlow = true }
+ | DebugPointAtTarget.No -> envinner
+
+ let innerExpr, tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
+ MatchClause(patR, condR, TTarget(vspecs, innerExpr, None), patR.Range), tpenv)
+
+ let inputExprTy = tyOfExpr cenv.g inputExpr
+ let inputExprMark = inputExpr.Range
+
+ let matchv, matchExpr =
+ CompilePatternForMatchClauses
+ cenv
+ env
+ inputExprMark
+ inputExprMark
+ true
+ ThrowIncompleteMatchException
+ (Some inputExpr)
+ inputExprTy
+ genOuterTy
+ tclauses
+
+ Some(mkLet spMatch inputExprMark matchv inputExpr matchExpr, tpenv)
+
+ | SynExpr.TryWith(innerTry, withList, mTryToWith, _spTry, _spWith, trivia) ->
+ if not (g.langVersion.SupportsFeature(LanguageFeature.TryWithInSeqExpression)) then
+ error (Error(FSComp.SR.tcTryIllegalInSequenceExpression (), mTryToWith))
+
+ let env = { env with eIsControlFlow = true }
+
+ let tryExpr, tpenv =
+ let inner, tpenv = tcSequenceExprBody env genOuterTy tpenv innerTry
+ mkSeqDelayedExpr mTryToWith inner, tpenv
+
+ // Compile the pattern twice, once as a filter with all succeeding targets returning "1", and once as a proper catch block.
+ let clauses, tpenv =
+ (tpenv, withList)
+ ||> List.mapFold (fun tpenv (SynMatchClause(pat, cond, innerComp, m, sp, trivia) as clause) ->
+ let isTrueMatchClause =
+ if clause.IsTrueMatchClause then
+ TcTrueMatchClause.Yes
+ else
+ TcTrueMatchClause.No
+
+ let patR, condR, vspecs, envinner, tpenv =
+ TcMatchPattern cenv g.exn_ty env tpenv pat cond isTrueMatchClause
+
+ let envinner =
+ match sp with
+ | DebugPointAtTarget.Yes -> { envinner with eIsControlFlow = true }
+ | DebugPointAtTarget.No -> envinner
+
+ let matchBody, tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
+
+ let handlerClause =
+ MatchClause(patR, condR, TTarget(vspecs, matchBody, None), patR.Range)
+
+ let filterClause =
+ MatchClause(patR, condR, TTarget(vspecs, Expr.Const(Const.Int32 1, m, g.int_ty), None), patR.Range)
+
+ (handlerClause, filterClause), tpenv)
+
+ let handlers, filterClauses = List.unzip clauses
+ let withRange = trivia.WithToEndRange
+
+ let v1, filterExpr =
+ CompilePatternForMatchClauses cenv env withRange withRange true FailFilter None g.exn_ty g.int_ty filterClauses
+
+ let v2, handlerExpr =
+ CompilePatternForMatchClauses cenv env withRange withRange true FailFilter None g.exn_ty genOuterTy handlers
+
+ let filterLambda = mkLambda filterExpr.Range v1 (filterExpr, genOuterTy)
+ let handlerLambda = mkLambda handlerExpr.Range v2 (handlerExpr, genOuterTy)
+
+ let combinatorExpr =
+ mkSeqTryWith cenv env mTryToWith genOuterTy tryExpr filterLambda handlerLambda
+
+ Some(combinatorExpr, tpenv)
+
+ | SynExpr.YieldOrReturnFrom(flags = (isYield, _); expr = synYieldExpr; trivia = { YieldOrReturnFromKeyword = m }) ->
+ let env = { env with eIsControlFlow = false }
+ let resultExpr, genExprTy, tpenv = TcExprOfUnknownType cenv env tpenv synYieldExpr
+
+ if not isYield then
+ errorR (Error(FSComp.SR.tcUseYieldBangForMultipleResults (), m))
+
+ AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css synYieldExpr.Range NoTrace genOuterTy genExprTy
+
+ let resultExpr =
+ mkCoerceExpr (resultExpr, genOuterTy, synYieldExpr.Range, genExprTy)
+
+ let resultExpr =
+ if IsControlFlowExpression synYieldExpr then
+ resultExpr
+ else
+ mkDebugPoint resultExpr.Range resultExpr
+
+ Some(resultExpr, tpenv)
+
+ | SynExpr.YieldOrReturn(flags = (isYield, _); expr = synYieldExpr; trivia = { YieldOrReturnKeyword = m }) ->
+ let env = { env with eIsControlFlow = false }
+ let genResultTy = NewInferenceType g
+
+ if not isYield then
+ errorR (Error(FSComp.SR.tcSeqResultsUseYield (), m))
+
+ UnifyTypes cenv env synYieldExpr.Range genOuterTy (mkSeqTy cenv.g genResultTy)
+
+ let resultExpr, tpenv = TcExprFlex cenv flex true genResultTy env tpenv synYieldExpr
+
+ let resultExpr = mkCallSeqSingleton cenv.g synYieldExpr.Range genResultTy resultExpr
+
+ let resultExpr =
+ if IsControlFlowExpression synYieldExpr then
+ resultExpr
+ else
+ mkDebugPoint synYieldExpr.Range resultExpr
+
+ Some(resultExpr, tpenv)
+
+ | _ -> None
+
+ and tcSequenceExprBody env (genOuterTy: TType) tpenv comp =
+ let res, tpenv = tcSequenceExprBodyAsSequenceOrStatement env genOuterTy tpenv comp
+
+ match res with
+ | Choice1Of2 expr -> expr, tpenv
+ | Choice2Of2 stmt ->
+ let m = comp.Range
+ let resExpr = Expr.Sequential(stmt, mkSeqEmpty cenv env m genOuterTy, NormalSeq, m)
+ resExpr, tpenv
+
+ and tcSequenceExprBodyAsSequenceOrStatement env genOuterTy tpenv comp =
+ match tryTcSequenceExprBody env genOuterTy tpenv comp with
+ | Some(expr, tpenv) -> Choice1Of2 expr, tpenv
+ | None ->
+
+ let env =
+ { env with
+ eContextInfo = ContextInfo.SequenceExpression genOuterTy
+ }
+
+ if enableImplicitYield then
+ let hasTypeUnit, _ty, expr, tpenv = TryTcStmt cenv env tpenv comp
+
+ if hasTypeUnit then
+ Choice2Of2 expr, tpenv
+ else
+ let genResultTy = NewInferenceType g
+ let mExpr = expr.Range
+ UnifyTypes cenv env mExpr genOuterTy (mkSeqTy cenv.g genResultTy)
+ let expr, tpenv = TcExprFlex cenv flex true genResultTy env tpenv comp
+ let exprTy = tyOfExpr cenv.g expr
+ AddCxTypeMustSubsumeType env.eContextInfo env.DisplayEnv cenv.css mExpr NoTrace genResultTy exprTy
+
+ let resExpr =
+ mkCallSeqSingleton cenv.g mExpr genResultTy (mkCoerceExpr (expr, genResultTy, mExpr, exprTy))
+
+ Choice1Of2 resExpr, tpenv
+ else
+ let stmt, tpenv = TcStmtThatCantBeCtorBody cenv env tpenv comp
+ Choice2Of2 stmt, tpenv
+
+ let coreExpr, tpenv = tcSequenceExprBody env overallTy.Commit tpenv comp
+ let delayedExpr = mkSeqDelayedExpr coreExpr.Range coreExpr
+ delayedExpr, tpenv
+
+let TcSequenceExpressionEntry (cenv: TcFileState) env (overallTy: OverallTy) tpenv (hasBuilder, comp) m =
+ match RewriteRangeExpr comp with
+ | Some replacementExpr -> TcExpr cenv overallTy env tpenv replacementExpr
+ | None ->
+ let implicitYieldEnabled =
+ cenv.g.langVersion.SupportsFeature LanguageFeature.ImplicitYield
+
+ let validateObjectSequenceOrRecordExpression = not implicitYieldEnabled
+
+ match comp with
+ | SimpleSemicolonSequence cenv false _ when validateObjectSequenceOrRecordExpression ->
+ errorR (Error(FSComp.SR.tcInvalidObjectSequenceOrRecordExpression (), m))
+ | _ -> ()
+
+ if not hasBuilder && not cenv.g.compilingFSharpCore then
+ error (Error(FSComp.SR.tcInvalidSequenceExpressionSyntaxForm (), m))
+
+ TcSequenceExpression cenv env tpenv comp overallTy m
diff --git a/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs b/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs
index cfc34649ae..10eb7ab672 100644
--- a/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs
+++ b/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs
@@ -167,7 +167,7 @@ and accOp cenv env (op, tyargs, args, m) =
| _ -> ()
/// Walk a trait call, collecting type variables
-and accTraitInfo cenv env (mFallback : range) (TTrait(tys, _nm, _, argTys, retTy, _sln)) =
+and accTraitInfo cenv env (mFallback : range) (TTrait(tys=tys; objAndArgTys=argTys; returnTyOpt=retTy)) =
argTys |> accTypeInst cenv env mFallback
retTy |> Option.iter (accTy cenv env mFallback)
tys |> List.iter (accTy cenv env mFallback)
diff --git a/src/fcs-fable/src/Compiler/Checking/InfoReader.fs b/src/fcs-fable/src/Compiler/Checking/InfoReader.fs
index 86bbb1b83c..77fb623efb 100644
--- a/src/fcs-fable/src/Compiler/Checking/InfoReader.fs
+++ b/src/fcs-fable/src/Compiler/Checking/InfoReader.fs
@@ -4,6 +4,7 @@
/// Select members from a type by name, searching the type hierarchy if needed
module internal FSharp.Compiler.InfoReader
+open System
open System.Collections.Concurrent
open System.Collections.Generic
open Internal.Utilities.Library
@@ -23,9 +24,10 @@ open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypeHierarchy
open FSharp.Compiler.TypeRelations
+open Import
/// Use the given function to select some of the member values from the members of an F# type
-let SelectImmediateMemberVals g optFilter f (tcref: TyconRef) =
+let SelectImmediateMemberVals g optFilter f withExplicitImpl (tcref: TyconRef) =
let chooser (vref: ValRef) =
match vref.MemberInfo with
// The 'when' condition is a workaround for the fact that values providing
@@ -33,7 +35,7 @@ let SelectImmediateMemberVals g optFilter f (tcref: TyconRef) =
// These cannot be selected directly via the "." notation.
// However, it certainly is useful to be able to publish these values, as we can in theory
// optimize code to make direct calls to these methods.
- | Some membInfo when not (ValRefIsExplicitImpl g vref) ->
+ | Some membInfo when withExplicitImpl || not (ValRefIsExplicitImpl g vref) ->
f membInfo vref
| _ ->
None
@@ -52,7 +54,7 @@ let TrySelectMemberVal g optFilter ty pri _membInfo (vref: ValRef) =
else
None
-let rec GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m origTy metadataTy =
+let rec GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m withExplicitImpl origTy metadataTy =
let minfos =
match metadataOfTy g metadataTy with
@@ -76,25 +78,28 @@ let rec GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m origTy
// In this case convert to the .NET Tuple type that carries metadata and try again
if isAnyTupleTy g metadataTy then
let betterMetadataTy = convertToTypeWithMetadataIfPossible g metadataTy
- GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m origTy betterMetadataTy
+ GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m withExplicitImpl origTy betterMetadataTy
// Function types support methods FSharpFunc<_, _>.FromConverter and friends from .NET metadata,
// but not instance methods (you can't write "f.Invoke(x)", you have to write "f x")
elif isFunTy g metadataTy then
let betterMetadataTy = convertToTypeWithMetadataIfPossible g metadataTy
- GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m origTy betterMetadataTy
+ GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m withExplicitImpl origTy betterMetadataTy
|> List.filter (fun minfo -> not minfo.IsInstance)
else
match tryTcrefOfAppTy g metadataTy with
| ValueNone -> []
| ValueSome tcref ->
- SelectImmediateMemberVals g optFilter (TrySelectMemberVal g optFilter origTy None) tcref
+ SelectImmediateMemberVals g optFilter (TrySelectMemberVal g optFilter origTy None) withExplicitImpl tcref
let minfos = minfos |> List.filter (IsMethInfoAccessible amap m ad)
minfos
/// Query the immediate methods of an F# type, not taking into account inherited methods. The optFilter
/// parameter is an optional name to restrict the set of properties returned.
let GetImmediateIntrinsicMethInfosOfType (optFilter, ad) g amap m ty =
- GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m ty ty
+ GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m false ty ty
+
+let GetImmediateIntrinsicMethInfosWithExplicitImplOfType (optFilter, ad) g amap m ty =
+ GetImmediateIntrinsicMethInfosOfTypeAux (optFilter, ad) g amap m true ty ty
/// Query the immediate methods of an F# type, not taking into account inherited methods. The optFilter
/// parameter is an optional name to restrict the set of properties returned.
@@ -184,7 +189,7 @@ type PropertyCollector(g, amap, m, ty, optFilter, ad) =
member _.Close() = [ for KeyValue(_, pinfo) in props -> pinfo ]
-let rec GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m origTy metadataTy =
+let rec GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m withExplicitImpl origTy metadataTy =
let pinfos =
match metadataOfTy g metadataTy with
@@ -215,13 +220,13 @@ let rec GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m origTy
// In this case convert to the .NET Tuple type that carries metadata and try again
if isAnyTupleTy g metadataTy || isFunTy g metadataTy then
let betterMetadataTy = convertToTypeWithMetadataIfPossible g metadataTy
- GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m origTy betterMetadataTy
+ GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m withExplicitImpl origTy betterMetadataTy
else
match tryTcrefOfAppTy g metadataTy with
| ValueNone -> []
| ValueSome tcref ->
let propCollector = PropertyCollector(g, amap, m, origTy, optFilter, ad)
- SelectImmediateMemberVals g None (fun membInfo vref -> propCollector.Collect(membInfo, vref); None) tcref |> ignore
+ SelectImmediateMemberVals g None (fun membInfo vref -> propCollector.Collect(membInfo, vref); None) withExplicitImpl tcref |> ignore
propCollector.Close()
let pinfos = pinfos |> List.filter (IsPropInfoAccessible g amap m ad)
@@ -229,8 +234,11 @@ let rec GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m origTy
/// Query the immediate properties of an F# type, not taking into account inherited properties. The optFilter
/// parameter is an optional name to restrict the set of properties returned.
-let rec GetImmediateIntrinsicPropInfosOfType (optFilter, ad) g amap m ty =
- GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m ty ty
+let GetImmediateIntrinsicPropInfosOfType (optFilter, ad) g amap m ty =
+ GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m false ty ty
+
+let GetImmediateIntrinsicPropInfosWithExplicitImplOfType (optFilter, ad) g amap m ty =
+ GetImmediateIntrinsicPropInfosOfTypeAux (optFilter, ad) g amap m true ty ty
// Checks whether the given type has an indexer property.
let IsIndexerType g amap ty =
@@ -312,7 +320,7 @@ type FindMemberFlag =
/// Get overrides instead of abstract slots when measuring whether a class/interface implements all its required slots.
| PreferOverrides
/// Similar to "IgnoreOverrides", but filters the items bottom-to-top,
- /// and discards all when finds first non-virtual member which hides one above it in hirearchy.
+ /// and discards all when finds first non-virtual member which hides one above it in hierarchy.
| DiscardOnFirstNonOverride
/// The input list is sorted from most-derived to least-derived type, so any System.Object methods
@@ -479,7 +487,7 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
// MethodImpls contains a list of methods that override.
// OverrideBy is the method that does the overriding.
- // Overrides is the method being overriden.
+ // Overrides is the method being overridden.
(acc, mimpls)
||> List.fold (fun acc ilMethImpl ->
let overridesName = ilMethImpl.Overrides.MethodRef.Name
@@ -643,6 +651,11 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
MethInfosEquivByNameAndSig EraseNone true g amap m,
(fun minfo -> minfo.LogicalName))
+ static let PropsGetterSetterEquiv innerEquality (p1:PropInfo) (p2:PropInfo) : bool =
+ p1.HasGetter = p2.HasGetter &&
+ p1.HasSetter = p2.HasSetter &&
+ innerEquality p1 p2
+
/// Filter the overrides of properties, either keeping the overrides or keeping the dispatch slots.
static let FilterOverridesOfPropInfos findFlag g amap m props =
props
@@ -651,9 +664,47 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
(fun pinfo -> pinfo.IsNewSlot),
(fun pinfo -> pinfo.IsDefiniteFSharpOverride),
(fun _ -> false),
- PropInfosEquivByNameAndSig EraseNone g amap m,
+ PropsGetterSetterEquiv (PropInfosEquivByNameAndSig EraseNone g amap m),
(fun pinfo -> pinfo.PropertyName))
+ //type A() =
+ // abstract E: int with get, set
+ // default val E = 0 with get
+ // Will get (A::E with get, A::E with get, set)
+ // -----
+ //type A() =
+ // member val A = 0 with get, set
+ //type B() =
+ // inherit A()
+ // static member val A = 0
+ // Will get (static B::A, None)
+ static let FilterOverridesOfPropInfosWithOverriddenProp findFlag g amap m props =
+ let checkProp prop prop2 =
+ not(obj.ReferenceEquals(prop, prop2)) &&
+ PropInfosEquivByNameAndSig EraseNone g amap m prop prop2 &&
+ if prop.HasGetter && prop.HasSetter then false
+ elif prop.HasGetter then prop2.HasSetter
+ elif prop.HasSetter then prop2.HasGetter
+ else false
+
+ let rec findPropBefore prop hasMetTheProp =
+ function
+ | props :: t when hasMetTheProp ->
+ match props |> List.tryFind (checkProp prop) with
+ | Some p -> ValueSome p
+ | None -> findPropBefore prop true t
+ | props :: t ->
+ if props |> List.exists (fun i -> obj.ReferenceEquals(prop, i)) then
+ match props |> List.tryFind (checkProp prop) with
+ | Some p -> ValueSome p
+ | None -> findPropBefore prop true t
+ else findPropBefore prop false t
+ | _ -> ValueNone
+
+ props
+ |> FilterOverridesOfPropInfos findFlag g amap m
+ |> List.map (List.map (fun prop -> struct(prop, if findFlag = FindMemberFlag.IgnoreOverrides || prop.IsNewSlot then ValueNone else findPropBefore prop false props)))
+
/// Exclude methods from super types which have the same signature as a method in a more specific type.
static let ExcludeHiddenOfMethInfosImpl g amap m (minfos: MethInfo list list) =
minfos
@@ -669,7 +720,7 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
/// Exclude properties from super types which have the same name as a property in a more specific type.
static let ExcludeHiddenOfPropInfosImpl g amap m pinfos =
pinfos
- |> ExcludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes (fun (pinfo: PropInfo) -> pinfo.PropertyName) (PropInfosEquivByNameAndPartialSig EraseNone g amap m)
+ |> ExcludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes (fun (pinfo: PropInfo) -> pinfo.PropertyName) (PropsGetterSetterEquiv (PropInfosEquivByNameAndPartialSig EraseNone g amap m))
|> List.concat
/// Make a cache for function 'f' keyed by type (plus some additional 'flags') that only
@@ -681,25 +732,28 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
// Only cache closed, monomorphic types (closed = all members for the type
// have been processed). Generic type instantiations could be processed if we had
// a decent hash function for these.
+
+ // Nullness of `ty` (TType_app) is not considered here, as the info is used to load members of the type
+ // It would matter for different generic instantiations of the same type, but we don't cache that here - TType_app is always matched for `[]` typars.
canMemoize=(fun (_flags, _: range, ty) ->
match stripTyEqns g ty with
- | TType_app(tcref, [], _) -> tcref.TypeContents.tcaug_closed
+ | TType_app(tcref, [], _) -> tcref.TypeContents.tcaug_closed
| _ -> false),
keyComparer=
{ new IEqualityComparer<_> with
- member _.Equals((flags1, _, ty1), (flags2, _, ty2)) =
- // Ignoring the ranges - that's OK.
- flagsEq.Equals(flags1, flags2) &&
- match stripTyEqns g ty1, stripTyEqns g ty2 with
- | TType_app(tcref1, [], _), TType_app(tcref2, [], _) -> tyconRefEq g tcref1 tcref2
- | _ -> false
member _.GetHashCode((flags, _, ty)) =
// Ignoring the ranges - that's OK.
flagsEq.GetHashCode flags +
(match stripTyEqns g ty with
| TType_app(tcref, [], _) -> hash tcref.LogicalName
- | _ -> 0) })
+ | _ -> 0)
+ member _.Equals((flags1, _, ty1), (flags2, _, ty2)) =
+ // Ignoring the ranges - that's OK.
+ flagsEq.Equals(flags1, flags2) &&
+ match stripTyEqns g ty1, stripTyEqns g ty2 with
+ | TType_app(tcref1, [], _),TType_app(tcref2, [], _) -> tyconRefEq g tcref1 tcref2
+ | _ -> false })
let FindImplicitConversionsUncached (ad, m, ty) =
if isTyparTy g ty then
@@ -741,7 +795,7 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
let hashFlags3 =
{ new IEqualityComparer with
member _.GetHashCode((ad: AccessorDomain)) = AccessorDomain.CustomGetHashCode ad
- member _.Equals((ad1), (ad2)) = AccessorDomain.CustomEquals(g, ad1, ad2) }
+ member _.Equals((ad1), (ad2)) = nullSafeEquality ad1 ad2 (fun ad1 ad2 -> AccessorDomain.CustomEquals(g, ad1, ad2)) }
let hashFlags4 =
{ new IEqualityComparer with
@@ -904,6 +958,12 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this =
member infoReader.GetIntrinsicPropInfosOfType optFilter ad allowMultiIntfInst findFlag m ty =
infoReader.GetIntrinsicPropInfoSetsOfType optFilter ad allowMultiIntfInst findFlag m ty |> List.concat
+ /// Get the flattened list of intrinsic properties in the hierarchy
+ member infoReader.GetIntrinsicPropInfoWithOverriddenPropOfType optFilter ad allowMultiIntfInst findFlag m ty =
+ infoReader.GetRawIntrinsicPropertySetsOfType(optFilter, ad, allowMultiIntfInst, m, ty)
+ |> FilterOverridesOfPropInfosWithOverriddenProp findFlag infoReader.g infoReader.amap m
+ |> List.concat
+
member _.GetTraitInfosInType optFilter ty =
GetImmediateTraitsInfosOfType optFilter g ty
@@ -957,6 +1017,9 @@ let GetIntrinsicMethInfosOfType (infoReader: InfoReader) optFilter ad allowMulti
let GetIntrinsicPropInfosOfType (infoReader: InfoReader) optFilter ad allowMultiIntfInst findFlag m ty =
infoReader.GetIntrinsicPropInfosOfType optFilter ad allowMultiIntfInst findFlag m ty
+let GetIntrinsicPropInfoWithOverriddenPropOfType (infoReader: InfoReader) optFilter ad allowMultiIntfInst findFlag m ty =
+ infoReader.GetIntrinsicPropInfoWithOverriddenPropOfType optFilter ad allowMultiIntfInst findFlag m ty
+
let TryFindIntrinsicNamedItemOfType (infoReader: InfoReader) (nm, ad, includeConstraints) findFlag m ty =
infoReader.TryFindIntrinsicNamedItemOfType (nm, ad, includeConstraints) findFlag m ty
@@ -967,7 +1030,7 @@ let TryFindIntrinsicPropInfo (infoReader: InfoReader) m ad nm ty =
infoReader.TryFindIntrinsicPropInfo m ad nm ty
/// Get a set of most specific override methods.
-let GetIntrinisicMostSpecificOverrideMethInfoSetsOfType (infoReader: InfoReader) m ty =
+let GetIntrinsicMostSpecificOverrideMethInfoSetsOfType (infoReader: InfoReader) m ty =
infoReader.GetIntrinsicMostSpecificOverrideMethodSetsOfType (None, AccessibleFromSomewhere, AllowMultiIntfInstantiations.Yes, m, ty)
//-------------------------------------------------------------------------
@@ -1020,7 +1083,7 @@ let TryDestStandardDelegateType (infoReader: InfoReader) m ad delTy =
let g = infoReader.g
let (SigOfFunctionForDelegate(_, delArgTys, delRetTy, _)) = GetSigOfFunctionForDelegate infoReader delTy m ad
match delArgTys with
- | senderTy :: argTys when (isObjTy g senderTy) && not (List.exists (isByrefTy g) argTys) -> Some(mkRefTupledTy g argTys, delRetTy)
+ | senderTy :: argTys when (isObjTyAnyNullness g senderTy) && not (List.exists (isByrefTy g) argTys) -> Some(mkRefTupledTy g argTys, delRetTy)
| _ -> None
@@ -1071,7 +1134,7 @@ let TryFindMetadataInfoOfExternalEntityRef (infoReader: InfoReader) m eref =
// Generalize to get a formal signature
let formalTypars = eref.Typars m
let formalTypeInst = generalizeTypars formalTypars
- let ty = TType_app(eref, formalTypeInst, 0uy)
+ let ty = TType_app(eref, formalTypeInst, KnownAmbivalentToNull)
if isILAppTy g ty then
let formalTypeInfo = ILTypeInfo.FromType g ty
Some(nlref.Ccu.FileName, formalTypars, formalTypeInfo)
@@ -1097,14 +1160,14 @@ let GetXmlDocSigOfEntityRef infoReader m (eref: EntityRef) =
else
let ccuFileName = libFileOfEntityRef eref
let m = eref.Deref
- if m.XmlDocSig = "" then
+ if String.IsNullOrEmpty(m.XmlDocSig) then
m.XmlDocSig <- XmlDocSigOfEntity eref
Some (ccuFileName, m.XmlDocSig)
let GetXmlDocSigOfScopedValRef g (tcref: TyconRef) (vref: ValRef) =
let ccuFileName = libFileOfEntityRef tcref
let v = vref.Deref
- if v.XmlDocSig = "" && v.HasDeclaringEntity then
+ if String.IsNullOrEmpty(v.XmlDocSig) && v.HasDeclaringEntity then
let ap = buildAccessPath vref.DeclaringEntity.CompilationPathOpt
let path =
if vref.DeclaringEntity.IsModule then
@@ -1118,18 +1181,19 @@ let GetXmlDocSigOfScopedValRef g (tcref: TyconRef) (vref: ValRef) =
let GetXmlDocSigOfRecdFieldRef (rfref: RecdFieldRef) =
let tcref = rfref.TyconRef
let ccuFileName = libFileOfEntityRef tcref
- if rfref.RecdField.XmlDocSig = "" then
+ if String.IsNullOrEmpty(rfref.RecdField.XmlDocSig) then
rfref.RecdField.XmlDocSig <- XmlDocSigOfProperty [tcref.CompiledRepresentationForNamedType.FullName; rfref.RecdField.LogicalName]
Some (ccuFileName, rfref.RecdField.XmlDocSig)
let GetXmlDocSigOfUnionCaseRef (ucref: UnionCaseRef) =
let tcref = ucref.TyconRef
let ccuFileName = libFileOfEntityRef tcref
- if ucref.UnionCase.XmlDocSig = "" then
+ if String.IsNullOrEmpty(ucref.UnionCase.XmlDocSig) then
ucref.UnionCase.XmlDocSig <- XmlDocSigOfUnionCase [tcref.CompiledRepresentationForNamedType.FullName; ucref.CaseName]
Some (ccuFileName, ucref.UnionCase.XmlDocSig)
-let GetXmlDocSigOfMethInfo (infoReader: InfoReader) m (minfo: MethInfo) =
+[]
+let rec GetXmlDocSigOfMethInfo (infoReader: InfoReader) m (minfo: MethInfo) =
let amap = infoReader.amap
match minfo with
| FSMeth (g, _, vref, _) ->
@@ -1142,7 +1206,7 @@ let GetXmlDocSigOfMethInfo (infoReader: InfoReader) m (minfo: MethInfo) =
match TryFindMetadataInfoOfExternalEntityRef infoReader m ilminfo.DeclaringTyconRef with
| None -> None
| Some (ccuFileName, formalTypars, formalTypeInfo) ->
- let filminfo = ILMethInfo(g, formalTypeInfo.ToType, None, ilminfo.RawMetadata, fmtps)
+ let filminfo = ILMethInfo(g, IlType formalTypeInfo, ilminfo.RawMetadata, fmtps)
let args =
if ilminfo.IsILExtensionMethod then
filminfo.GetRawArgTypes(amap, m, minfo.FormalMethodInst)
@@ -1157,6 +1221,7 @@ let GetXmlDocSigOfMethInfo (infoReader: InfoReader) m (minfo: MethInfo) =
Some (ccuFileName, "M:"+actualTypeName+"."+normalizedName+genericArity+XmlDocArgsEnc g (formalTypars, fmtps) args)
+ | MethInfoWithModifiedReturnType(mi,_) -> GetXmlDocSigOfMethInfo infoReader m mi
| DefaultStructCtor(g, ty) ->
match tryTcrefOfAppTy g ty with
| ValueSome tcref ->
@@ -1171,7 +1236,7 @@ let GetXmlDocSigOfValRef g (vref: ValRef) =
if not vref.IsLocalRef then
let ccuFileName = vref.nlr.Ccu.FileName
let v = vref.Deref
- if v.XmlDocSig = "" && v.HasDeclaringEntity then
+ if String.IsNullOrEmpty(v.XmlDocSig) && v.HasDeclaringEntity then
v.XmlDocSig <- XmlDocSigOfVal g false vref.DeclaringEntity.CompiledRepresentationForNamedType.Name v
Some (ccuFileName, v.XmlDocSig)
else
diff --git a/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi b/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi
index 3e8ceb927c..f96c1757ad 100644
--- a/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi
@@ -34,6 +34,16 @@ val GetImmediateIntrinsicMethInfosOfType:
ty: TType ->
MethInfo list
+/// Query the immediate methods of an F# type, not taking into account inherited methods. The optFilter
+/// parameter is an optional name to restrict the set of properties returned.
+val GetImmediateIntrinsicMethInfosWithExplicitImplOfType:
+ optFilter: string option * ad: AccessorDomain ->
+ g: TcGlobals ->
+ amap: ImportMap ->
+ m: range ->
+ ty: TType ->
+ MethInfo list
+
/// A helper type to help collect properties.
///
/// Join up getters and setters which are not associated in the F# data structure
@@ -55,6 +65,16 @@ val GetImmediateIntrinsicPropInfosOfType:
ty: TType ->
PropInfo list
+/// Query the immediate properties of an F# type, not taking into account inherited properties. The optFilter
+/// parameter is an optional name to restrict the set of properties returned.
+val GetImmediateIntrinsicPropInfosWithExplicitImplOfType:
+ optFilter: string option * ad: AccessorDomain ->
+ g: TcGlobals ->
+ amap: ImportMap ->
+ m: range ->
+ ty: TType ->
+ PropInfo list
+
/// Checks whether the given type has an indexer property.
val IsIndexerType: g: TcGlobals -> amap: ImportMap -> ty: TType -> bool
@@ -91,7 +111,7 @@ type FindMemberFlag =
| PreferOverrides
/// Similar to "IgnoreOverrides", but filters the items bottom-to-top,
- /// and discards all when finds first non-virtual member which hides one above it in hirearchy.
+ /// and discards all when finds first non-virtual member which hides one above it in hierarchy.
| DiscardOnFirstNonOverride
/// An InfoReader is an object to help us read and cache infos.
@@ -261,6 +281,17 @@ val GetIntrinsicPropInfosOfType:
ty: TType ->
PropInfo list
+/// Get the flattened list of intrinsic properties in the hierarchy. If the PropInfo is get-only or set-only, try to find its setter or getter from the hierarchy.
+val GetIntrinsicPropInfoWithOverriddenPropOfType:
+ infoReader: InfoReader ->
+ optFilter: string option ->
+ ad: AccessorDomain ->
+ allowMultiIntfInst: AllowMultiIntfInstantiations ->
+ findFlag: FindMemberFlag ->
+ m: range ->
+ ty: TType ->
+ struct (PropInfo * PropInfo voption) list
+
/// Perform type-directed name resolution of a particular named member in an F# type
val TryFindIntrinsicNamedItemOfType:
infoReader: InfoReader ->
@@ -280,7 +311,7 @@ val TryFindIntrinsicPropInfo:
infoReader: InfoReader -> m: range -> ad: AccessorDomain -> nm: string -> ty: TType -> PropInfo list
/// Get a set of most specific override methods.
-val GetIntrinisicMostSpecificOverrideMethInfoSetsOfType:
+val GetIntrinsicMostSpecificOverrideMethInfoSetsOfType:
infoReader: InfoReader -> m: range -> ty: TType -> NameMultiMap
/// Represents information about the delegate - the Invoke MethInfo, the delegate argument types, the delegate return type
diff --git a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs
index 03f3177d2e..773a6e9a69 100644
--- a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs
+++ b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs
@@ -155,8 +155,8 @@ let AdjustDelegateTy (infoReader: InfoReader) actualTy reqdTy m =
// NOTE:
// no generic method op_Implicit as yet
//
-// Search for an adhoc conversion based on op_Implicit, optionally returing a new equational type constraint to
-// eliminate articifical constrained type variables.
+// Search for an adhoc conversion based on op_Implicit, optionally returning a new equational type constraint to
+// eliminate artificial constrained type variables.
//
// Allow adhoc for X --> Y where there is an op_Implicit from X to Y, and there is
// no feasible subtype relationship between X and Y.
@@ -308,8 +308,8 @@ let rec AdjustRequiredTypeForTypeDirectedConversions (infoReader: InfoReader) ad
else
reqdTy, TypeDirectedConversionUsed.No, None
- // Adhoc based on op_Implicit, perhaps returing a new equational type constraint to
- // eliminate articifical constrained type variables.
+ // Adhoc based on op_Implicit, perhaps returning a new equational type constraint to
+ // eliminate artificial constrained type variables.
elif g.langVersion.SupportsFeature LanguageFeature.AdditionalTypeDirectedConversions then
match TryFindRelevantImplicitConversion infoReader ad reqdTy actualTy m with
| Some (minfo, _staticTy, eqn) -> actualTy, TypeDirectedConversionUsed.Yes(warn (TypeDirectedConversion.Implicit minfo), false, false), Some eqn
@@ -430,14 +430,7 @@ let AdjustCalledArgType (infoReader: InfoReader) ad isConstraint enforceNullable
// If the called method argument is an inref type, then the caller may provide a byref or value
if isInByrefTy g calledArgTy then
-#if IMPLICIT_ADDRESS_OF
- if isByrefTy g callerArgTy then
- calledArgTy
- else
- destByrefTy g calledArgTy
-#else
calledArgTy, TypeDirectedConversionUsed.No, None
-#endif
// If the called method argument is a (non inref) byref type, then the caller may provide a byref or ref.
elif isByrefTy g calledArgTy then
@@ -487,7 +480,7 @@ let MakeCalledArgs amap m (minfo: MethInfo) minst =
IsOutArg=isOutArg
ReflArgInfo=reflArgInfo
NameOpt=nmOpt
- CalledArgumentType=calledArgTy })
+ CalledArgumentType= changeWithNullReqTyToVariable amap.g calledArgTy})
///
/// Represents the syntactic matching between a caller of a method and the called method.
@@ -530,6 +523,19 @@ type CalledMeth<'T>
staticTyOpt: TType option)
=
let g = infoReader.g
+
+ let minfo =
+ match callerObjArgTys,minfo with
+ | objTy :: [], ILMeth _ when
+ g.checkNullness
+ && minfo.DisplayName = "ToString"
+ && minfo.IsNullary
+ && (isAnonRecdTy g objTy || isRecdTy g objTy || isUnionTy g objTy)
+ && ( typeEquiv g g.obj_ty_noNulls minfo.ApparentEnclosingAppType
+ || typeEquiv g g.system_Value_ty minfo.ApparentEnclosingAppType) ->
+ MethInfoWithModifiedReturnType(minfo, g.string_ty)
+ | _ -> minfo
+
let methodRetTy = if minfo.IsConstructor then minfo.ApparentEnclosingType else minfo.GetFSharpReturnType(infoReader.amap, m, calledTyArgs)
let fullCurriedCalledArgs = MakeCalledArgs infoReader.amap m minfo calledTyArgs
@@ -538,7 +544,7 @@ type CalledMeth<'T>
// Detect the special case where an indexer setter using param aray takes 'value' argument after ParamArray arguments
let isIndexerSetter =
match pinfoOpt with
- | Some pinfo when pinfo.HasSetter && minfo.LogicalName.StartsWith "set_" && (List.concat fullCurriedCalledArgs).Length >= 2 -> true
+ | Some pinfo when pinfo.HasSetter && minfo.LogicalName.StartsWithOrdinal("set_") && (List.concat fullCurriedCalledArgs).Length >= 2 -> true
| _ -> false
let argSetInfos =
@@ -556,6 +562,12 @@ type CalledMeth<'T>
let nUnnamedCalledArgs = unnamedCalledArgs.Length
if allowOutAndOptArgs && nUnnamedCallerArgs < nUnnamedCalledArgs then
let unnamedCalledArgsTrimmed, unnamedCalledOptOrOutArgs = List.splitAt nUnnamedCallerArgs unnamedCalledArgs
+
+ // take the last ParamArray arg out, make it not break the optional/out params check
+ let unnamedCalledArgsTrimmed, unnamedCalledOptOrOutArgs =
+ match List.rev unnamedCalledOptOrOutArgs with
+ | h :: t when h.IsParamArray -> unnamedCalledArgsTrimmed @ [h], List.rev t
+ | _ -> unnamedCalledArgsTrimmed, unnamedCalledOptOrOutArgs
let isOpt x = x.OptArgInfo.IsOptional
let isOut x = x.IsOutArg && isByrefTy g x.CalledArgumentType
@@ -900,8 +912,8 @@ let IsBaseCall objArgs =
/// For example, when calling an interface method on a struct, or a method on a constrained
/// variable type.
let ComputeConstrainedCallInfo g amap m staticTyOpt args (minfo: MethInfo) =
- match args, staticTyOpt with
- | _, Some staticTy when not minfo.IsExtensionMember && not minfo.IsInstance && minfo.IsAbstract -> Some staticTy
+ match args, staticTyOpt with
+ | _, Some staticTy when not minfo.IsExtensionMember && not minfo.IsInstance && (minfo.IsAbstract || minfo.IsVirtual) -> Some staticTy
| (objArgExpr :: _), _ when minfo.IsInstance && not minfo.IsExtensionMember ->
let methObjTy = minfo.ApparentEnclosingType
@@ -1040,7 +1052,7 @@ let BuildFSharpMethodCall g m (ty, vref: ValRef) valUseFlags minst args =
/// Make a call to a method info. Used by the optimizer and code generator to build
/// calls to the type-directed solutions to member constraints.
-let MakeMethInfoCall (amap: ImportMap) m (minfo: MethInfo) minst args staticTyOpt =
+let rec MakeMethInfoCall (amap: ImportMap) m (minfo: MethInfo) minst args staticTyOpt =
let g = amap.g
let ccallInfo = ComputeConstrainedCallInfo g amap m staticTyOpt args minfo
let valUseFlags =
@@ -1060,6 +1072,8 @@ let MakeMethInfoCall (amap: ImportMap) m (minfo: MethInfo) minst args staticTyOp
| FSMeth(g, ty, vref, _) ->
BuildFSharpMethodCall g m (ty, vref) valUseFlags minst args |> fst
+ | MethInfoWithModifiedReturnType(mi,_) -> MakeMethInfoCall amap m mi minst args staticTyOpt
+
| DefaultStructCtor(_, ty) ->
mkDefault (m, ty)
@@ -1109,7 +1123,7 @@ let TryImportProvidedMethodBaseAsLibraryIntrinsic (amap: Import.ImportMap, m: ra
// minst: the instantiation to apply for a generic method
// objArgs: the 'this' argument, if any
// args: the arguments, if any
-let BuildMethodCall tcVal g amap isMutable m isProp minfo valUseFlags minst objArgs args staticTyOpt =
+let rec BuildMethodCall tcVal g amap isMutable m isProp minfo valUseFlags minst objArgs args staticTyOpt =
let direct = IsBaseCall objArgs
TakeObjAddrForMethodCall g amap minfo isMutable m staticTyOpt objArgs (fun ccallInfo objArgs ->
@@ -1182,10 +1196,24 @@ let BuildMethodCall tcVal g amap isMutable m isProp minfo valUseFlags minst objA
let vExpr, vExprTy = tcVal vref valUseFlags (minfo.DeclaringTypeInst @ minst) m
BuildFSharpMethodApp g m vref vExpr vExprTy allArgs
+ | MethInfoWithModifiedReturnType(mi,retTy) ->
+ let expr, exprTy = BuildMethodCall tcVal g amap isMutable m isProp mi valUseFlags minst objArgs args staticTyOpt
+ let expr = mkCoerceExpr(expr, retTy, m, exprTy)
+ expr, retTy
+
// Build a 'call' to a struct default constructor
| DefaultStructCtor (g, ty) ->
- if not (TypeHasDefaultValue g m ty) then
- errorR(Error(FSComp.SR.tcDefaultStructConstructorCall(), m))
+ if g.langFeatureNullness && g.checkNullness then
+ if not (TypeHasDefaultValueNew g m ty) then
+ // If the condition is detected because of a variation in logic introduced because
+ // of nullness checking, then only a warning is emitted.
+ if not (TypeHasDefaultValue g m ty) then
+ errorR(Error(FSComp.SR.tcDefaultStructConstructorCall(), m))
+ else
+ warning(Error(FSComp.SR.tcDefaultStructConstructorCall(), m))
+ else
+ if not (TypeHasDefaultValue g m ty) then
+ errorR(Error(FSComp.SR.tcDefaultStructConstructorCall(), m))
mkDefault (m, ty), ty)
let ILFieldStaticChecks g amap infoReader ad m (finfo : ILFieldInfo) =
@@ -1229,7 +1257,7 @@ let MethInfoChecks g amap isInstance tyargsOpt objArgs ad m (minfo: MethInfo) =
AccessibleFrom(paths, None)
| _ -> ad
- if not (IsTypeAndMethInfoAccessible amap m adOriginal ad minfo) then
+ if not (minfo.IsProtectedAccessibility && minfo.LogicalName.StartsWithOrdinal("set_")) && not(IsTypeAndMethInfoAccessible amap m adOriginal ad minfo) then
error (Error (FSComp.SR.tcMethodNotAccessible(minfo.LogicalName), m))
if isAnyTupleTy g minfo.ApparentEnclosingType && not minfo.IsExtensionMember &&
@@ -1245,7 +1273,7 @@ let MethInfoChecks g amap isInstance tyargsOpt objArgs ad m (minfo: MethInfo) =
/// Build a call to the System.Object constructor taking no arguments,
let BuildObjCtorCall (g: TcGlobals) m =
let ilMethRef = (mkILCtorMethSpecForTy(g.ilg.typ_Object, [])).MethodRef
- Expr.Op (TOp.ILCall (false, false, false, false, CtorValUsedAsSuperInit, false, true, ilMethRef, [], [], [g.obj_ty]), [], [], m)
+ Expr.Op (TOp.ILCall (false, false, false, false, CtorValUsedAsSuperInit, false, true, ilMethRef, [], [], [g.obj_ty_noNulls]), [], [], m)
/// Implements the elaborated form of adhoc conversions from functions to delegates at member callsites
let BuildNewDelegateExpr (eventInfoOpt: EventInfo option, g, amap, delegateTy, delInvokeMeth: MethInfo, delArgTys, delFuncExpr, delFuncTy, m) =
@@ -1291,7 +1319,7 @@ let BuildNewDelegateExpr (eventInfoOpt: EventInfo option, g, amap, delegateTy, d
| Some einfo ->
match delArgVals with
| [] -> error(nonStandardEventError einfo.EventName m)
- | h :: _ when not (isObjTy g h.Type) -> error(nonStandardEventError einfo.EventName m)
+ | h :: _ when not (isObjTyAnyNullness g h.Type) -> error(nonStandardEventError einfo.EventName m)
| h :: t -> [exprForVal m h; mkRefTupledVars g m t]
| None ->
if isNil delArgTys then [mkUnit g m] else List.map (exprForVal m) delArgVals
@@ -1365,12 +1393,6 @@ let AdjustCallerArgExpr tcVal (g: TcGlobals) amap infoReader ad isOutArg calledA
if isByrefTy g calledArgTy && isRefCellTy g callerArgTy then
None, Expr.Op (TOp.RefAddrGet false, [destRefCellTy g callerArgTy], [callerArgExpr], m)
-#if IMPLICIT_ADDRESS_OF
- elif isInByrefTy g calledArgTy && not (isByrefTy g callerArgTy) then
- let wrap, callerArgExprAddress, _readonly, _writeonly = mkExprAddrOfExpr g true false NeverMutates callerArgExpr None m
- Some wrap, callerArgExprAddress
-#endif
-
// auto conversions to quotations (to match auto conversions to LINQ expressions)
elif reflArgInfo.AutoQuote && isQuotedExprTy g calledArgTy && not (isQuotedExprTy g callerArgTy) then
match reflArgInfo with
@@ -1432,7 +1454,7 @@ let rec GetDefaultExpressionForCallerSideOptionalArg tcFieldInit g (calledArg: C
| Some tref ->
let ty = mkILNonGenericBoxedTy tref
let mref = mkILCtorMethSpecForTy(ty, [g.ilg.typ_Object]).MethodRef
- let expr = Expr.Op (TOp.ILCall (false, false, false, true, NormalValUse, false, false, mref, [], [], [g.obj_ty]), [], [mkDefault(mMethExpr, currCalledArgTy)], mMethExpr)
+ let expr = Expr.Op (TOp.ILCall (false, false, false, true, NormalValUse, false, false, mref, [], [], [g.obj_ty_noNulls]), [], [mkDefault(mMethExpr, currCalledArgTy)], mMethExpr)
emptyPreBinder, expr
| WrapperForIUnknown ->
@@ -1441,7 +1463,7 @@ let rec GetDefaultExpressionForCallerSideOptionalArg tcFieldInit g (calledArg: C
| Some tref ->
let ty = mkILNonGenericBoxedTy tref
let mref = mkILCtorMethSpecForTy(ty, [g.ilg.typ_Object]).MethodRef
- let expr = Expr.Op (TOp.ILCall (false, false, false, true, NormalValUse, false, false, mref, [], [], [g.obj_ty]), [], [mkDefault(mMethExpr, currCalledArgTy)], mMethExpr)
+ let expr = Expr.Op (TOp.ILCall (false, false, false, true, NormalValUse, false, false, mref, [], [], [g.obj_ty_noNulls]), [], [mkDefault(mMethExpr, currCalledArgTy)], mMethExpr)
emptyPreBinder, expr
| PassByRef (ty, dfltVal2) ->
@@ -1681,7 +1703,7 @@ let AdjustCallerArgs tcVal tcFieldInit eCallerMemberName (infoReader: InfoReader
AdjustOutCallerArgs g calledMeth mMethExpr
let adjustedNormalUnnamedArgs, setterValueArgs =
- // IsIndexParamArraySetter onlye occurs for
+ // IsIndexParamArraySetter only occurs for
// expr.[indexes] <- value
// where the 'value' arg to the setter is always the last unnamed argument (there is no syntax to use a named argument for it)
// Indeed in this case there will be no named/optional/out arguments.
@@ -1725,7 +1747,7 @@ let AdjustCallerArgs tcVal tcFieldInit eCallerMemberName (infoReader: InfoReader
// This file is not a great place for this functionality to sit, it's here because of BuildMethodCall
module ProvidedMethodCalls =
- let private convertConstExpr g amap m (constant : Tainted) =
+ let private convertConstExpr g amap m (constant : Tainted) =
let obj, objTy = constant.PApply2(id, m)
let ty = Import.ImportProvidedType amap m objTy
let normTy = normalizeEnumTy g ty
@@ -1749,7 +1771,7 @@ module ProvidedMethodCalls =
| _ when typeEquiv g normTy g.float32_ty -> Const.Single(v :?> float32)
| _ when typeEquiv g normTy g.float_ty -> Const.Double(v :?> float)
| _ when typeEquiv g normTy g.char_ty -> Const.Char(v :?> char)
- | _ when typeEquiv g normTy g.string_ty -> Const.String(v :?> string)
+ | _ when typeEquiv g normTy g.string_ty -> Const.String(!!v :?> string)
| _ when typeEquiv g normTy g.decimal_ty -> Const.Decimal(v :?> decimal)
| _ when typeEquiv g normTy g.unit_ty -> Const.Unit
| _ -> fail()
@@ -1937,13 +1959,6 @@ module ProvidedMethodCalls =
let infoReader = InfoReader(g, amap)
let exprR = CoerceFromFSharpFuncToDelegate g amap infoReader AccessorDomain.AccessibleFromSomewhere lambdaExprTy m lambdaExpr delegateTyR
None, (exprR, tyOfExpr g exprR)
-#if PROVIDED_ADDRESS_OF
- | ProvidedAddressOfExpr e ->
- let eR = exprToExpr (exprType.PApply((fun _ -> e), m))
- let wrap,exprR, _readonly, _writeonly = mkExprAddrOfExpr g true false DefinitelyMutates eR None m
- let exprR = wrap exprR
- None, (exprR, tyOfExpr g exprR)
-#endif
| ProvidedDefaultExpr pty ->
let ty = Import.ImportProvidedType amap m (exprType.PApply((fun _ -> pty), m))
let exprR = mkDefault (m, ty)
@@ -2232,12 +2247,12 @@ let GenWitnessExpr amap g m (traitInfo: TraitConstraintInfo) argExprs =
match traitInfo.Solution with
| None -> None // the trait has been generalized
| Some _->
- // For these operators, the witness is just a call to the coresponding FSharp.Core operator
+ // For these operators, the witness is just a call to the corresponding FSharp.Core operator
match g.TryMakeOperatorAsBuiltInWitnessInfo isStringTy isArrayTy traitInfo argExprs with
| Some (info, tyargs, actualArgExprs) ->
tryMkCallCoreFunctionAsBuiltInWitness g info tyargs actualArgExprs m
| None ->
- // For all other built-in operators, the witness is a call to the coresponding BuiltInWitnesses operator
+ // For all other built-in operators, the witness is a call to the corresponding BuiltInWitnesses operator
// These are called as F# methods not F# functions
tryMkCallBuiltInWitness g traitInfo argExprs m
diff --git a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fsi b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fsi
index e5f377cadb..9ddc593e4a 100644
--- a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fsi
@@ -481,7 +481,7 @@ exception FieldNotMutable of TypedTreeOps.DisplayEnv * RecdFieldRef * range
val CheckRecdFieldMutation: m: range -> denv: TypedTreeOps.DisplayEnv -> rfinfo: RecdFieldInfo -> unit
-/// Generate a witness for the given (solved) constraint. Five possiblilities are taken
+/// Generate a witness for the given (solved) constraint. Five possibilities are taken
/// into account.
/// 1. The constraint is solved by a .NET-declared method or an F#-declared method
/// 2. The constraint is solved by an F# record field
diff --git a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs
index 5abf08578f..18b3f23190 100644
--- a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs
+++ b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs
@@ -107,6 +107,7 @@ exception TypeIsImplicitlyAbstract of range
exception OverrideDoesntOverride of DisplayEnv * OverrideInfo * MethInfo option * TcGlobals * Import.ImportMap * range
module DispatchSlotChecking =
+ open Import
/// Print the signature of an override to a buffer as part of an error message
let PrintOverrideToBuffer denv os (Override(_, _, id, methTypars, memberToParentInst, argTys, retTy, _, _, _)) =
@@ -148,6 +149,12 @@ module DispatchSlotChecking =
let _, _, argInfos, retTy, _ = GetTypeOfMemberInMemberForm g overrideBy
let nm = overrideBy.LogicalName
+ if g.checkNullness && nm = "ToString" && (argInfos |> List.sumBy _.Length) = 0 && retTy.IsSome then
+ let returnsString = typeEquiv g retTy.Value g.string_ty
+ let retTyNullness = (nullnessOfTy g retTy.Value).TryEvaluate()
+ if returnsString && retTyNullness = ValueSome(NullnessInfo.WithNull) then
+ warning(Error(FSComp.SR.tcNullableToStringOverride(), overrideBy.Range))
+
let argTys = argInfos |> List.mapSquared fst
let memberMethodTypars, memberToParentInst, argTys, retTy =
@@ -324,7 +331,7 @@ module DispatchSlotChecking =
let CheckDispatchSlotsAreImplemented (denv, infoReader: InfoReader, m,
nenv, sink: TcResultsSink,
isOverallTyAbstract,
- isObjExpr: bool,
+ isObjExpr,
reqdTy,
dispatchSlots: RequiredSlot list,
availPriorOverrides: OverrideInfo list,
@@ -333,7 +340,7 @@ module DispatchSlotChecking =
let amap = infoReader.amap
let isReqdTyInterface = isInterfaceTy g reqdTy
- let showMissingMethodsAndRaiseErrors = (isReqdTyInterface || not isOverallTyAbstract)
+ let showMissingMethodsAndRaiseErrors = (isReqdTyInterface || not isOverallTyAbstract) || (isOverallTyAbstract && isObjExpr)
let mutable res = true
let fail exn =
@@ -345,7 +352,7 @@ module DispatchSlotChecking =
let availPriorOverridesKeyed = availPriorOverrides |> NameMultiMap.initBy (fun ov -> ov.LogicalName)
let overridesKeyed = overrides |> NameMultiMap.initBy (fun ov -> ov.LogicalName)
- // we accumulate those to compose a more complete error message, see noimpl() bellow.
+ // we accumulate those to compose a more complete error message, see noimpl() below.
let missingOverloadImplementation = ResizeArray()
for reqdSlot in dispatchSlots do
@@ -363,7 +370,7 @@ module DispatchSlotChecking =
| [ovd] ->
if not ovd.IsCompilerGenerated then
let item = Item.MethodGroup(ovd.LogicalName, [dispatchSlot],None)
- CallNameResolutionSink sink (ovd.Range, nenv, item, dispatchSlot.FormalMethodTyparInst, ItemOccurence.Implemented, AccessorDomain.AccessibleFromSomewhere)
+ CallNameResolutionSink sink (ovd.Range, nenv, item, dispatchSlot.FormalMethodTyparInst, ItemOccurrence.Implemented, AccessorDomain.AccessibleFromSomewhere)
| [] ->
if not reqdSlot.IsOptional &&
// Check that no available prior override implements this dispatch slot
@@ -380,8 +387,7 @@ module DispatchSlotChecking =
let compiledSig = CompiledSigOfMeth g amap m dispatchSlot
let noimpl() =
- if dispatchSlot.IsInstance then
- missingOverloadImplementation.Add((isReqdTyInterface, lazy NicePrint.stringOfMethInfo infoReader m denv dispatchSlot))
+ missingOverloadImplementation.Add((isReqdTyInterface, lazy NicePrint.stringOfMethInfo infoReader m denv dispatchSlot))
match overrides |> List.filter (IsPartialMatch g dispatchSlot compiledSig) with
| [] ->
@@ -404,10 +410,8 @@ module DispatchSlotChecking =
let (CompiledSig (vargTys, _, fvmethTypars, _)) = compiledSig
- // Object expressions can only implement instance members
- let isObjExprWithInstanceMembers = (isObjExpr && isInstance)
- if isObjExprWithInstanceMembers || isInstance then
- if moreThanOnePossibleDispatchSlot then
+ if isInstance then
+ if moreThanOnePossibleDispatchSlot then
noimpl()
elif (argTys.Length <> vargTys.Length) then
@@ -416,7 +420,7 @@ module DispatchSlotChecking =
fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfTypeParameters(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
elif not (IsTyparKindMatch compiledSig overrideBy) then
fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectKindsOfGenericParameters(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
- else
+ else
fail(Error(FSComp.SR.typrelMemberCannotImplement(FormatOverride denv overrideBy, NicePrint.stringOfMethInfo infoReader m denv dispatchSlot, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
| overrideBy :: _ ->
errorR(Error(FSComp.SR.typrelOverloadNotFound(FormatMethInfoSig g amap m denv dispatchSlot, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
@@ -427,8 +431,8 @@ module DispatchSlotChecking =
else
// Error will be reported below in CheckOverridesAreAllUsedOnce
()
- | _ ->
- fail(Error(FSComp.SR.typrelOverrideWasAmbiguous(FormatMethInfoSig g amap m denv dispatchSlot), m))
+ | ambiguousOverride :: _ ->
+ fail(Error(FSComp.SR.typrelOverrideWasAmbiguous(FormatMethInfoSig g amap ambiguousOverride.Range denv dispatchSlot), ambiguousOverride.Range))
| _ -> fail(Error(FSComp.SR.typrelMoreThenOneOverride(FormatMethInfoSig g amap m denv dispatchSlot), m))
if missingOverloadImplementation.Count > 0 then
@@ -482,7 +486,7 @@ module DispatchSlotChecking =
// Get the most specific method overrides for each interface type.
|> List.choose (fun (ty, m) ->
- let mostSpecificOverrides = GetIntrinisicMostSpecificOverrideMethInfoSetsOfType infoReader m ty
+ let mostSpecificOverrides = GetIntrinsicMostSpecificOverrideMethInfoSetsOfType infoReader m ty
if mostSpecificOverrides.IsEmpty then None
else Some mostSpecificOverrides)
@@ -506,8 +510,8 @@ module DispatchSlotChecking =
let overrideBy = GetInheritedMemberOverrideInfo g amap m OverrideCanImplement.CanImplementAnyInterfaceSlot minfo
let minfoTy = generalizedTyconRef g minfo.ApparentEnclosingTyconRef
NameMultiMap.find minfo.LogicalName mostSpecificOverrides
- |> List.filter (fun (overridenTy, minfo2) ->
- typeEquiv g overridenTy minfoTy &&
+ |> List.filter (fun (overriddenTy, minfo2) ->
+ typeEquiv g overriddenTy minfoTy &&
IsSigExactMatch g amap m minfo2 overrideBy)
/// Get a collection of slots for the given interface type.
@@ -776,7 +780,7 @@ module DispatchSlotChecking =
// Get all the members that are immediately part of this type
// Include the auto-generated members
- let allImmediateMembers = tycon.MembersOfFSharpTyconSorted @ tycon.AllGeneratedValues
+ let allImmediateMembers = tycon.MembersOfFSharpTyconSorted @ tycon.AllGeneratedInterfaceImplsAndOverrides
// Get all the members we have to implement, organized by each type we explicitly implement
let slotImplSets = GetSlotImplSets infoReader denv AccessibleFromSomewhere false allReqdTys
@@ -831,7 +835,7 @@ module DispatchSlotChecking =
let allCorrect = CheckDispatchSlotsAreImplemented (denv, infoReader, m, nenv, sink, tcaug.tcaug_abstract, false, reqdTy, dispatchSlots, availPriorOverrides, overrides)
// Tell the user to mark the thing abstract if it was missing implementations
- if not allCorrect && not tcaug.tcaug_abstract && not (isInterfaceTy g reqdTy) then
+ if not allCorrect && not tcaug.tcaug_abstract && (isClassTy g reqdTy) then
errorR(TypeIsImplicitlyAbstract(m))
let overridesToCheck =
@@ -848,14 +852,14 @@ module DispatchSlotChecking =
allImmediateMembersThatMightImplementDispatchSlots |> List.iter (fun overrideBy ->
let isFakeEventProperty = overrideBy.IsFSharpEventProperty(g)
- let overriden =
+ let overridden =
if isFakeEventProperty then
let slotsigs = overrideBy.MemberInfo.Value.ImplementedSlotSigs
slotsigs |> List.map (ReparentSlotSigToUseMethodTypars g overrideBy.Range overrideBy)
else
[ for (reqdTy, m), SlotImplSet(_dispatchSlots, dispatchSlotsKeyed, _, _) in allImpls do
let overrideByInfo = GetTypeMemberOverrideInfo g reqdTy overrideBy
- let overridenForThisSlotImplSet =
+ let overriddenForThisSlotImplSet =
[ for reqdSlot in NameMultiMap.find overrideByInfo.LogicalName dispatchSlotsKeyed do
let dispatchSlot = reqdSlot.MethodInfo
if OverrideImplementsDispatchSlot g amap m dispatchSlot overrideByInfo then
@@ -876,10 +880,10 @@ module DispatchSlotChecking =
// Record the slotsig via mutation
yield slotsig ]
//if mustOverrideSomething reqdTy overrideBy then
- // assert nonNil overridenForThisSlotImplSet
- yield! overridenForThisSlotImplSet ]
+ // assert nonNil overriddenForThisSlotImplSet
+ yield! overriddenForThisSlotImplSet ]
- overrideBy.MemberInfo.Value.ImplementedSlotSigs <- overriden)
+ overrideBy.MemberInfo.Value.ImplementedSlotSigs <- overridden)
/// "Type Completion" inference and a few other checks at the end of the inference scope
let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader: InfoReader, nenv, sink, isImplementation, denv, tycon: Tycon) =
@@ -897,7 +901,7 @@ let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader: InfoReader, nenv
#endif
Option.isNone tycon.GeneratedCompareToValues &&
tycon.HasInterface g g.mk_IComparable_ty &&
- not (tycon.HasOverride g "Equals" [g.obj_ty]) &&
+ not (tycon.HasOverride g "Equals" [g.obj_ty_ambivalent]) &&
not tycon.IsFSharpInterfaceTycon
then
(* Warn when we're doing this for class types *)
@@ -916,7 +920,7 @@ let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader: InfoReader, nenv
let tcaug = tycon.TypeContents
let m = tycon.Range
let hasExplicitObjectGetHashCode = tycon.HasOverride g "GetHashCode" []
- let hasExplicitObjectEqualsOverride = tycon.HasOverride g "Equals" [g.obj_ty]
+ let hasExplicitObjectEqualsOverride = tycon.HasOverride g "Equals" [g.obj_ty_ambivalent]
if (Option.isSome tycon.GeneratedHashAndEqualsWithComparerValues) &&
(hasExplicitObjectGetHashCode || hasExplicitObjectEqualsOverride) then
diff --git a/src/fcs-fable/src/Compiler/Checking/NameResolution.fs b/src/fcs-fable/src/Compiler/Checking/NameResolution.fs
index 7b660d3d21..5b0c9842f7 100644
--- a/src/fcs-fable/src/Compiler/Checking/NameResolution.fs
+++ b/src/fcs-fable/src/Compiler/Checking/NameResolution.fs
@@ -87,9 +87,9 @@ let ActivePatternElemsOfValRef g (vref: ValRef) =
match TryGetActivePatternInfo vref with
| Some apinfo ->
- let isStructRetTy =
+ let retKind =
if apinfo.IsTotal then
- false
+ ActivePatternReturnKind.RefTypeWrapper
else
let _, apReturnTy = stripFunTy g vref.TauType
let hasStructAttribute() =
@@ -97,8 +97,10 @@ let ActivePatternElemsOfValRef g (vref: ValRef) =
|> List.exists (function
| Attrib(targetsOpt = Some(System.AttributeTargets.ReturnValue)) as a -> IsMatchingFSharpAttribute g g.attrib_StructAttribute a
| _ -> false)
- isStructTy g apReturnTy || hasStructAttribute()
- apinfo.ActiveTags |> List.mapi (fun i _ -> APElemRef(apinfo, vref, i, isStructRetTy))
+ if isValueOptionTy g apReturnTy || hasStructAttribute() then ActivePatternReturnKind.StructTypeWrapper
+ elif isBoolTy g apReturnTy then ActivePatternReturnKind.Boolean
+ else ActivePatternReturnKind.RefTypeWrapper
+ apinfo.ActiveTags |> List.mapi (fun i _ -> APElemRef(apinfo, vref, i, retKind))
| None -> []
/// Try to make a reference to a value in a module.
@@ -201,9 +203,6 @@ type Item =
/// Represents the resolution of a name to a constructor
| CtorGroup of string * MethInfo list
- /// Represents the resolution of a name to the fake constructor simulated for an interface type.
- | FakeInterfaceCtor of TType
-
/// Represents the resolution of a name to a delegate
| DelegateCtor of TType
@@ -276,11 +275,10 @@ type Item =
| ValueSome tcref -> tcref.DisplayNameCore
| _ -> nm
|> DemangleGenericTypeName
- | Item.CtorGroup(nm, _) -> nm |> DemangleGenericTypeName
- | Item.FakeInterfaceCtor ty
+ | Item.CtorGroup(nm, _) -> nm |> DemangleGenericTypeName
| Item.DelegateCtor ty ->
match ty with
- | AbbrevOrAppTy tcref -> tcref.DisplayNameCore
+ | AbbrevOrAppTy(tcref, _) -> tcref.DisplayNameCore
// This case is not expected
| _ -> ""
| Item.UnqualifiedType(tcref :: _) -> tcref.DisplayNameCore
@@ -311,7 +309,7 @@ type Item =
| Item.Property(info = pinfo :: _) -> pinfo.DisplayName
| Item.Event einfo -> einfo.DisplayName
| Item.MethodGroup(_, minfo :: _, _) -> minfo.DisplayName
- | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.DisplayName
+ | Item.DelegateCtor (AbbrevOrAppTy(tcref, _)) -> tcref.DisplayName
| Item.UnqualifiedType(tcref :: _) -> tcref.DisplayName
| Item.ModuleOrNamespaces(modref :: _) -> modref.DisplayName
| Item.TypeVar (nm, _) -> nm |> ConvertLogicalNameToDisplayName
@@ -526,7 +524,10 @@ let NextExtensionMethodPriority() = uint64 (newStamp())
/// Checks if the type is used for C# style extension members.
let IsTyconRefUsedForCSharpStyleExtensionMembers g m (tcref: TyconRef) =
// Type must be non-generic and have 'Extension' attribute
- isNil(tcref.Typars m) && TyconRefHasAttribute g m g.attrib_ExtensionAttribute tcref
+ match metadataOfTycon tcref.Deref with
+ | ILTypeMetadata(TILObjectReprData(_, _, tdef)) -> tdef.CanContainExtensionMethods
+ | _ -> true
+ && isNil(tcref.Typars m) && TyconRefHasAttribute g m g.attrib_ExtensionAttribute tcref
/// Checks if the type is used for C# style extension members.
let IsTypeUsedForCSharpStyleExtensionMembers g m ty =
@@ -575,62 +576,40 @@ let GetTyconRefForExtensionMembers minfo (deref: Entity) amap m g =
/// Get the info for all the .NET-style extension members listed as static members in the type.
let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.ImportMap) m (tcrefOfStaticClass: TyconRef) =
let g = amap.g
- let pri = NextExtensionMethodPriority()
-
- if g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired) then
- let csharpStyleExtensionMembers =
- if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass || (tcrefOfStaticClass.IsLocalRef && not tcrefOfStaticClass.IsTypeAbbrev) then
- protectAssemblyExploration [] (fun () ->
- let ty = generalizedTyconRef g tcrefOfStaticClass
- GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty
- |> List.filter (IsMethInfoPlainCSharpStyleExtensionMember g m true))
- else
- []
- if not csharpStyleExtensionMembers.IsEmpty then
- [ for minfo in csharpStyleExtensionMembers do
- let ilExtMem = ILExtMem (tcrefOfStaticClass, minfo, pri)
+ let isApplicable =
+ IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass ||
- // The results are indexed by the TyconRef of the first 'this' argument, if any.
- // So we need to go and crack the type of the 'this' argument.
- //
- // This is convoluted because we only need the ILTypeRef of the first argument, and we don't
- // want to read any other metadata as it can trigger missing-assembly errors. It turns out ImportILTypeRef
- // is less eager in reading metadata than GetParamTypes.
- //
- // We don't use the index for the IL extension method for tuple of F# function types (e.g. if extension
- // methods for tuple occur in C# code)
- let thisTyconRef = GetTyconRefForExtensionMembers minfo tcrefOfStaticClass.Deref amap m g
- match thisTyconRef with
- | None -> ()
- | Some (Some tcref) -> yield Choice1Of2(tcref, ilExtMem)
- | Some None -> yield Choice2Of2 ilExtMem ]
- else
- []
- else
- if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass then
- let ty = generalizedTyconRef g tcrefOfStaticClass
- let minfos = GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty
-
- [ for minfo in minfos do
- if IsMethInfoPlainCSharpStyleExtensionMember g m true minfo then
- let ilExtMem = ILExtMem (tcrefOfStaticClass, minfo, pri)
- // The results are indexed by the TyconRef of the first 'this' argument, if any.
- // So we need to go and crack the type of the 'this' argument.
- //
- // This is convoluted because we only need the ILTypeRef of the first argument, and we don't
- // want to read any other metadata as it can trigger missing-assembly errors. It turns out ImportILTypeRef
- // is less eager in reading metadata than GetParamTypes.
- //
- // We don't use the index for the IL extension method for tuple of F# function types (e.g. if extension
- // methods for tuple occur in C# code)
- let thisTyconRef = GetTyconRefForExtensionMembers minfo tcrefOfStaticClass.Deref amap m g
- match thisTyconRef with
- | None -> ()
- | Some (Some tcref) -> yield Choice1Of2(tcref, ilExtMem)
- | Some None -> yield Choice2Of2 ilExtMem ]
- else
- []
+ g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired) &&
+ tcrefOfStaticClass.IsLocalRef &&
+ not tcrefOfStaticClass.IsTypeAbbrev
+
+ if not isApplicable then [] else
+
+ let ty = generalizedTyconRef g tcrefOfStaticClass
+ let pri = NextExtensionMethodPriority()
+
+ let methods =
+ protectAssemblyExploration []
+ (fun () -> GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty)
+
+ [ for minfo in methods do
+ if IsMethInfoPlainCSharpStyleExtensionMember g m true minfo then
+ let ilExtMem = ILExtMem (tcrefOfStaticClass, minfo, pri)
+ // The results are indexed by the TyconRef of the first 'this' argument, if any.
+ // So we need to go and crack the type of the 'this' argument.
+ //
+ // This is convoluted because we only need the ILTypeRef of the first argument, and we don't
+ // want to read any other metadata as it can trigger missing-assembly errors. It turns out ImportILTypeRef
+ // is less eager in reading metadata than GetParamTypes.
+ //
+ // We don't use the index for the IL extension method for tuple of F# function types (e.g. if extension
+ // methods for tuple occur in C# code)
+ let thisTyconRef = GetTyconRefForExtensionMembers minfo tcrefOfStaticClass.Deref amap m g
+ match thisTyconRef with
+ | None -> ()
+ | Some (Some tcref) -> yield Choice1Of2(tcref, ilExtMem)
+ | Some None -> yield Choice2Of2 ilExtMem ]
/// Query the declared properties of a type (including inherited properties)
let IntrinsicPropInfosOfTypeInScope (infoReader: InfoReader) optFilter ad findFlag m ty =
@@ -699,13 +678,14 @@ let IntrinsicMethInfosOfType (infoReader: InfoReader) optFilter ad allowMultiInt
let minfos = minfos |> ExcludeHiddenOfMethInfos g amap m
minfos
-let TrySelectExtensionMethInfoOfILExtMem m amap apparentTy (actualParent, minfo, pri) =
+let rec TrySelectExtensionMethInfoOfILExtMem m amap apparentTy (actualParent, minfo, pri) =
match minfo with
| ILMeth(_,ilminfo,_) ->
MethInfo.CreateILExtensionMeth (amap, m, apparentTy, actualParent, Some pri, ilminfo.RawMetadata) |> Some
// F#-defined IL-style extension methods are not seen as extension methods in F# code
| FSMeth(g,_,vref,_) ->
FSMeth(g, apparentTy, vref, Some pri) |> Some
+ | MethInfoWithModifiedReturnType(mi,_) -> TrySelectExtensionMethInfoOfILExtMem m amap apparentTy (actualParent, mi, pri)
#if !NO_TYPEPROVIDERS
// // Provided extension methods are not yet supported
| ProvidedMeth(amap,providedMeth,_,m) ->
@@ -1021,7 +1001,7 @@ let ResolveProvidedTypeNameInEntity (amap, m, typeName, modref: ModuleOrNamespac
//-------------------------------------------------------------------------
/// Qualified lookups of type names where the number of generic arguments is known
-/// from context, e.g. Module.Type. The full names suh as ``List`1`` can
+/// from context, e.g. Module.Type. The full names such as ``List`1`` can
/// be used to qualify access if needed
let LookupTypeNameInEntityHaveArity nm (typeNameResInfo: TypeNameResolutionStaticArgsInfo) (mty: ModuleOrNamespaceType) =
let attempt1 = mty.TypesByMangledName.TryFind (typeNameResInfo.MangledNameForType nm)
@@ -1129,9 +1109,9 @@ let GetNestedTyconRefsOfType (infoReader: InfoReader) (amap: Import.ImportMap) (
/// Handle the .NET/C# business where nested generic types implicitly accumulate the type parameters
/// from their enclosing types.
let MakeNestedType (ncenv: NameResolver) (tinst: TType list) m (tcrefNested: TyconRef) =
- let tps = match tcrefNested.Typars m with [] -> [] | l -> List.skip tinst.Length l
+ let tps = match tcrefNested.Typars m with [] -> [] | l -> l[tinst.Length..]
let tinstNested = ncenv.InstantiationGenerator m tps
- mkAppTy tcrefNested (tinst @ tinstNested)
+ mkWoNullAppTy tcrefNested (tinst @ tinstNested)
/// Get all the accessible nested types of an existing type.
let GetNestedTypesOfType (ad, ncenv: NameResolver, optFilter, staticResInfo, checkForGenerated, m) ty =
@@ -1178,11 +1158,11 @@ let ChooseEventInfosForNameEnv g ty (einfos: EventInfo list) =
/// Rules:
/// 1. Add nested types - access to their constructors.
/// 2. Add static parts of type - i.e. C# style extension members, record labels, and union cases.
-/// 3. Add static extention methods.
+/// 3. Add static extension methods.
/// 4. Add static extension properties.
/// 5. Add static events.
/// 6. Add static fields.
-/// 7. Add static properies.
+/// 7. Add static properties.
/// 8. Add static methods and combine extension methods of the same group.
let rec AddStaticContentOfTypeToNameEnv (g:TcGlobals) (amap: Import.ImportMap) ad m (nenv: NameResolutionEnv) (ty: TType) =
let infoReader = InfoReader(g,amap)
@@ -1191,7 +1171,7 @@ let rec AddStaticContentOfTypeToNameEnv (g:TcGlobals) (amap: Import.ImportMap) a
let nenv = AddStaticPartsOfTypeToNameEnv amap m nenv ty
// The order of items matter such as intrinsic members will always be favored over extension members of the same name.
- // Extension property members will always be favored over extenion methods of the same name.
+ // Extension property members will always be favored over extension methods of the same name.
let items =
[|
// Extension methods
@@ -1302,7 +1282,7 @@ and private AddStaticPartsOfTyconRefToNameEnv bulkAddMode ownDefinition g amap m
if isILOrRequiredQualifiedAccess || List.isEmpty ucrefs then
tab
else
- // Union cases for unqualfied
+ // Union cases for unqualified
AddUnionCases2 bulkAddMode tab ucrefs
let ePatItems =
@@ -1549,7 +1529,7 @@ let AddDeclaredTyparsToNameEnv check nenv typars =
/// a fresh set of inference type variables for the type parameters.
let FreshenTycon (ncenv: NameResolver) m (tcref: TyconRef) =
let tinst = ncenv.InstantiationGenerator m (tcref.Typars m)
- let improvedTy = ncenv.g.decompileType tcref tinst
+ let improvedTy = ncenv.g.decompileType tcref tinst ncenv.g.knownWithoutNull
improvedTy
/// Convert a reference to a named type into a type that includes
@@ -1557,7 +1537,7 @@ let FreshenTycon (ncenv: NameResolver) m (tcref: TyconRef) =
let FreshenTyconWithEnclosingTypeInst (ncenv: NameResolver) m (tinstEnclosing: TypeInst) (tcref: TyconRef) =
let tps = ncenv.InstantiationGenerator m (tcref.Typars m)
let tinst = List.skip tinstEnclosing.Length tps
- let improvedTy = ncenv.g.decompileType tcref (tinstEnclosing @ tinst)
+ let improvedTy = ncenv.g.decompileType tcref (tinstEnclosing @ tinst) ncenv.g.knownWithoutNull
improvedTy
/// Convert a reference to a union case into a UnionCaseInfo that includes
@@ -1570,6 +1550,85 @@ let FreshenUnionCaseRef (ncenv: NameResolver) m (ucref: UnionCaseRef) =
let FreshenRecdFieldRef (ncenv: NameResolver) m (rfref: RecdFieldRef) =
RecdFieldInfo(ncenv.InstantiationGenerator m (rfref.Tycon.Typars m), rfref)
+//-------------------------------------------------------------------------
+// Generate type variables and record them in within the scope of the
+// compilation environment, which currently corresponds to the scope
+// of the constraint resolution carried out by type checking.
+//-------------------------------------------------------------------------
+
+let compgenId = mkSynId range0 unassignedTyparName
+
+let NewCompGenTypar (kind, rigid, staticReq, dynamicReq, error) =
+ Construct.NewTypar(kind, rigid, SynTypar(compgenId, staticReq, true), error, dynamicReq, [], false, false)
+
+let AnonTyparId m = mkSynId m unassignedTyparName
+
+let NewAnonTypar (kind, m, rigid, var, dyn) =
+ Construct.NewTypar (kind, rigid, SynTypar(AnonTyparId m, var, true), false, dyn, [], false, false)
+
+let NewNamedInferenceMeasureVar (_m: range, rigid, var, id) =
+ Construct.NewTypar(TyparKind.Measure, rigid, SynTypar(id, var, false), false, TyparDynamicReq.No, [], false, false)
+
+let NewInferenceMeasurePar () =
+ NewCompGenTypar (TyparKind.Measure, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, false)
+
+let NewErrorTypar () =
+ NewCompGenTypar (TyparKind.Type, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, true)
+
+let NewErrorMeasureVar () =
+ NewCompGenTypar (TyparKind.Measure, TyparRigidity.Flexible, TyparStaticReq.None, TyparDynamicReq.No, true)
+
+let NewInferenceType (g: TcGlobals) =
+ ignore g // included for future, minimizing code diffs, see https://github.com/dotnet/fsharp/pull/6804
+ mkTyparTy (Construct.NewTypar (TyparKind.Type, TyparRigidity.Flexible, SynTypar(compgenId, TyparStaticReq.None, true), false, TyparDynamicReq.No, [], false, false))
+
+let NewErrorType () =
+ mkTyparTy (NewErrorTypar ())
+
+let NewErrorMeasure () =
+ Measure.Var (NewErrorMeasureVar ())
+
+let NewByRefKindInferenceType (g: TcGlobals) m =
+ let tp = Construct.NewTypar (TyparKind.Type, TyparRigidity.Flexible, SynTypar(compgenId, TyparStaticReq.HeadType, true), false, TyparDynamicReq.No, [], false, false)
+ if g.byrefkind_InOut_tcr.CanDeref then
+ tp.SetConstraints [TyparConstraint.DefaultsTo(10, TType_app(g.byrefkind_InOut_tcr, [], g.knownWithoutNull), m)]
+ mkTyparTy tp
+
+let NewInferenceTypes g l = l |> List.map (fun _ -> NewInferenceType g)
+
+let FreshenTypar (g: TcGlobals) rigid (tp: Typar) =
+ let clearStaticReq = g.langVersion.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers
+ let staticReq = if clearStaticReq then TyparStaticReq.None else tp.StaticReq
+ let dynamicReq = if rigid = TyparRigidity.Rigid then TyparDynamicReq.Yes else TyparDynamicReq.No
+ NewCompGenTypar (tp.Kind, rigid, staticReq, dynamicReq, false)
+
+// QUERY: should 'rigid' ever really be 'true'? We set this when we know
+// we are going to have to generalize a typar, e.g. when implementing a
+// abstract generic method slot. But we later check the generalization
+// condition anyway, so we could get away with a non-rigid typar. This
+// would sort of be cleaner, though give errors later.
+let FreshenAndFixupTypars g m rigid fctps tinst tpsorig =
+ let tps = tpsorig |> List.map (FreshenTypar g rigid)
+ let renaming, tinst = FixupNewTypars m fctps tinst tpsorig tps
+ tps, renaming, tinst
+
+let FreshenTypeInst g m tpsorig =
+ FreshenAndFixupTypars g m TyparRigidity.Flexible [] [] tpsorig
+
+let FreshMethInst g m fctps tinst tpsorig =
+ FreshenAndFixupTypars g m TyparRigidity.Flexible fctps tinst tpsorig
+
+let FreshenTypars g m tpsorig =
+ match tpsorig with
+ | [] -> []
+ | _ ->
+ let _, _, tpTys = FreshenTypeInst g m tpsorig
+ tpTys
+
+let FreshenMethInfo m (minfo: MethInfo) =
+ let _, _, tpTys = FreshMethInst minfo.TcGlobals m (minfo.GetFormalTyparsOfDeclaringType m) minfo.DeclaringTypeInst minfo.FormalMethodTypars
+ tpTys
+
/// This must be called after fetching unqualified items that may need to be freshened
/// or have type instantiations
let ResolveUnqualifiedItem (ncenv: NameResolver) nenv m res =
@@ -1696,7 +1755,7 @@ let LookupTypeNameInEnvMaybeHaveArity fq nm (typeNameResInfo: TypeNameResolution
/// Represents the kind of the occurrence when reporting a name in name resolution
[]
-type ItemOccurence =
+type ItemOccurrence =
/// This is a binding / declaration of the item
| Binding
/// This is a usage of the item
@@ -1713,6 +1772,8 @@ type ItemOccurence =
| RelatedText
/// This is a usage of a module or namespace name in open statement
| Open
+ /// Not permitted item uses like interface names used as expressions
+ | InvalidUse
type FormatStringCheckContext =
{ SourceText: ISourceText
@@ -1725,9 +1786,9 @@ type ITypecheckResultsSink =
abstract NotifyExprHasType: TType * NameResolutionEnv * AccessorDomain * range -> unit
- abstract NotifyNameResolution: pos * item: Item * TyparInstantiation * ItemOccurence * NameResolutionEnv * AccessorDomain * range * replace: bool -> unit
+ abstract NotifyNameResolution: pos * item: Item * TyparInstantiation * ItemOccurrence * NameResolutionEnv * AccessorDomain * range * replace: bool -> unit
- abstract NotifyMethodGroupNameResolution : pos * item: Item * itemMethodGroup: Item * TyparInstantiation * ItemOccurence * NameResolutionEnv * AccessorDomain * range * replace: bool -> unit
+ abstract NotifyMethodGroupNameResolution : pos * item: Item * itemMethodGroup: Item * TyparInstantiation * ItemOccurrence * NameResolutionEnv * AccessorDomain * range * replace: bool -> unit
abstract NotifyFormatSpecifierLocation: range * int -> unit
@@ -1741,88 +1802,100 @@ let (|ValRefOfProp|_|) (pi: PropInfo) = pi.ArbitraryValRef
let (|ValRefOfMeth|_|) (mi: MethInfo) = mi.ArbitraryValRef
let (|ValRefOfEvent|_|) (evt: EventInfo) = evt.ArbitraryValRef
+[]
let rec (|RecordFieldUse|_|) (item: Item) =
match item with
- | Item.RecdField(RecdFieldInfo(_, RecdFieldRef(tcref, name))) -> Some (name, tcref)
- | Item.SetterArg(_, RecordFieldUse f) -> Some f
- | _ -> None
+ | Item.RecdField(RecdFieldInfo(_, RecdFieldRef(tcref, name))) -> ValueSome (name, tcref)
+ | Item.SetterArg(_, RecordFieldUse f) -> ValueSome f
+ | _ -> ValueNone
+[]
let (|UnionCaseFieldUse|_|) (item: Item) =
match item with
- | Item.UnionCaseField (uci, fieldIndex) -> Some (fieldIndex, uci.UnionCaseRef)
- | _ -> None
+ | Item.UnionCaseField (uci, fieldIndex) -> ValueSome (fieldIndex, uci.UnionCaseRef)
+ | _ -> ValueNone
+[]
let rec (|ILFieldUse|_|) (item: Item) =
match item with
- | Item.ILField finfo -> Some finfo
- | Item.SetterArg(_, ILFieldUse f) -> Some f
- | _ -> None
+ | Item.ILField finfo -> ValueSome finfo
+ | Item.SetterArg(_, ILFieldUse f) -> ValueSome f
+ | _ -> ValueNone
+[]
let rec (|PropertyUse|_|) (item: Item) =
match item with
- | Item.Property(info = pinfo :: _) -> Some pinfo
- | Item.SetterArg(_, PropertyUse pinfo) -> Some pinfo
- | _ -> None
+ | Item.Property(info = pinfo :: _) -> ValueSome pinfo
+ | Item.SetterArg(_, PropertyUse pinfo) -> ValueSome pinfo
+ | _ -> ValueNone
+[]
let rec (|FSharpPropertyUse|_|) (item: Item) =
match item with
- | Item.Property(info = [ValRefOfProp vref]) -> Some vref
- | Item.SetterArg(_, FSharpPropertyUse propDef) -> Some propDef
- | _ -> None
+ | Item.Property(info = [ValRefOfProp vref]) -> ValueSome vref
+ | Item.SetterArg(_, FSharpPropertyUse propDef) -> ValueSome propDef
+ | _ -> ValueNone
+[]
let (|MethodUse|_|) (item: Item) =
match item with
- | Item.MethodGroup(_, [minfo], _) -> Some minfo
- | _ -> None
+ | Item.MethodGroup(_, [minfo], _) -> ValueSome minfo
+ | _ -> ValueNone
+[]
let (|FSharpMethodUse|_|) (item: Item) =
match item with
- | Item.MethodGroup(_, [ValRefOfMeth vref], _) -> Some vref
- | Item.Value vref when vref.IsMember -> Some vref
- | _ -> None
+ | Item.MethodGroup(_, [ValRefOfMeth vref], _) -> ValueSome vref
+ | Item.Value vref when vref.IsMember -> ValueSome vref
+ | _ -> ValueNone
+[]
let (|EntityUse|_|) (item: Item) =
match item with
- | Item.UnqualifiedType (tcref :: _) -> Some tcref
- | Item.ExnCase tcref -> Some tcref
- | Item.Types(_, [AbbrevOrAppTy tcref])
- | Item.DelegateCtor(AbbrevOrAppTy tcref)
- | Item.FakeInterfaceCtor(AbbrevOrAppTy tcref) -> Some tcref
+ | Item.UnqualifiedType (tcref :: _) -> ValueSome tcref
+ | Item.ExnCase tcref -> ValueSome tcref
+ | Item.Types(_, [AbbrevOrAppTy(tcref, _)])
+ | Item.DelegateCtor(AbbrevOrAppTy(tcref, _)) -> ValueSome tcref
| Item.CtorGroup(_, ctor :: _) ->
match ctor.ApparentEnclosingType with
- | AbbrevOrAppTy tcref -> Some tcref
- | _ -> None
- | _ -> None
+ | AbbrevOrAppTy(tcref, _) -> ValueSome tcref
+ | _ -> ValueNone
+ | _ -> ValueNone
+[]
let (|EventUse|_|) (item: Item) =
match item with
- | Item.Event einfo -> Some einfo
- | _ -> None
+ | Item.Event einfo -> ValueSome einfo
+ | _ -> ValueNone
+[]
let (|FSharpEventUse|_|) (item: Item) =
match item with
- | Item.Event(ValRefOfEvent vref) -> Some vref
- | _ -> None
+ | Item.Event(ValRefOfEvent vref) -> ValueSome vref
+ | _ -> ValueNone
+[]
let (|UnionCaseUse|_|) (item: Item) =
match item with
- | Item.UnionCase(UnionCaseInfo(_, u1), _) -> Some u1
- | _ -> None
+ | Item.UnionCase(UnionCaseInfo(_, u1), _) -> ValueSome u1
+ | _ -> ValueNone
+[]
let (|ValUse|_|) (item: Item) =
match item with
| Item.Value vref
| FSharpPropertyUse vref
| FSharpMethodUse vref
| FSharpEventUse vref
- | Item.CustomBuilder(_, vref) -> Some vref
- | _ -> None
+ | Item.CustomBuilder(_, vref) -> ValueSome vref
+ | _ -> ValueNone
+[]
let (|ActivePatternCaseUse|_|) (item: Item) =
match item with
- | Item.ActivePatternCase(APElemRef(_, vref, idx, _)) -> Some (vref.SigRange, vref.DefinitionRange, idx)
- | Item.ActivePatternResult(ap, _, idx, _) -> Some (ap.Range, ap.Range, idx)
- | _ -> None
+ | Item.ActivePatternCase(APElemRef(_, vref, idx, _)) -> ValueSome (vref.SigRange, vref.DefinitionRange, idx)
+ | Item.ActivePatternResult(ap, _, idx, _) -> ValueSome (ap.Range, ap.Range, idx)
+ | _ -> ValueNone
let tyconRefDefnHash (_g: TcGlobals) (eref1: EntityRef) =
hash eref1.LogicalName
@@ -1867,7 +1940,7 @@ let ItemsAreEffectivelyEqual g orig other =
not tp1.IsCompilerGenerated && not tp1.IsFromError &&
not tp2.IsCompilerGenerated && not tp2.IsFromError &&
equals tp1.Range tp2.Range
- | AbbrevOrAppTy tcref1, AbbrevOrAppTy tcref2 ->
+ | AbbrevOrAppTy(tcref1, _), AbbrevOrAppTy(tcref2, _) ->
tyconRefDefnEq g tcref1 tcref2
| _ -> false)
@@ -1946,7 +2019,7 @@ let ItemsAreEffectivelyEqualHash (g: TcGlobals) orig =
| _ -> 389329
[]
-type CapturedNameResolution(i: Item, tpinst, io: ItemOccurence, nre: NameResolutionEnv, ad: AccessorDomain, m: range) =
+type CapturedNameResolution(i: Item, tpinst, io: ItemOccurrence, nre: NameResolutionEnv, ad: AccessorDomain, m: range) =
member _.Pos = m.End
@@ -1954,7 +2027,7 @@ type CapturedNameResolution(i: Item, tpinst, io: ItemOccurence, nre: NameResolut
member _.ItemWithInst = ({ Item = i; TyparInstantiation = tpinst } : ItemWithInst)
- member _.ItemOccurence = io
+ member _.ItemOccurrence = io
member _.DisplayEnv = nre.DisplayEnv
@@ -1989,7 +2062,7 @@ type TcResolutions
[]
type TcSymbolUseData =
{ ItemWithInst: ItemWithInst
- ItemOccurence: ItemOccurence
+ ItemOccurrence: ItemOccurrence
DisplayEnv: DisplayEnv
Range: range }
@@ -2003,7 +2076,7 @@ type TcSymbolUses(g, capturedNameResolutions: ResizeArray ResizeArray.mapToSmallArrayChunks (fun cnr -> { ItemWithInst=cnr.ItemWithInst; ItemOccurence=cnr.ItemOccurence; DisplayEnv=cnr.DisplayEnv; Range=cnr.Range })
+ |> ResizeArray.mapToSmallArrayChunks (fun cnr -> { ItemWithInst=cnr.ItemWithInst; ItemOccurrence=cnr.ItemOccurrence; DisplayEnv=cnr.DisplayEnv; Range=cnr.Range })
let capturedNameResolutions = ()
do capturedNameResolutions // don't capture this!
@@ -2114,22 +2187,22 @@ type TcResultsSinkImpl(tcGlobals, ?sourceText: ISourceText) =
if allowedRange m then
capturedExprTypings.Add((ty, nenv, ad, m))
- member sink.NotifyNameResolution(endPos, item, tpinst, occurenceType, nenv, ad, m, replace) =
+ member sink.NotifyNameResolution(endPos, item, tpinst, occurrenceType, nenv, ad, m, replace) =
if allowedRange m then
if replace then
remove m
if not (isAlreadyDone endPos item m) then
- capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m))
+ capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurrenceType, nenv, ad, m))
- member sink.NotifyMethodGroupNameResolution(endPos, item, itemMethodGroup, tpinst, occurenceType, nenv, ad, m, replace) =
+ member sink.NotifyMethodGroupNameResolution(endPos, item, itemMethodGroup, tpinst, occurrenceType, nenv, ad, m, replace) =
if allowedRange m then
if replace then
remove m
if not (isAlreadyDone endPos item m) then
- capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m))
- capturedMethodGroupResolutions.Add(CapturedNameResolution(itemMethodGroup, [], occurenceType, nenv, ad, m))
+ capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurrenceType, nenv, ad, m))
+ capturedMethodGroupResolutions.Add(CapturedNameResolution(itemMethodGroup, [], occurrenceType, nenv, ad, m))
member sink.NotifyFormatSpecifierLocation(m, numArgs) =
capturedFormatSpecifierLocations.Add((m, numArgs))
@@ -2168,20 +2241,20 @@ let CallEnvSink (sink: TcResultsSink) (scopem, nenv, ad) =
| Some sink -> sink.NotifyEnvWithScope(scopem, nenv, ad)
/// Report a specific name resolution at a source range
-let CallNameResolutionSink (sink: TcResultsSink) (m: range, nenv, item, tpinst, occurenceType, ad) =
+let CallNameResolutionSink (sink: TcResultsSink) (m: range, nenv, item, tpinst, occurrenceType, ad) =
match sink.CurrentSink with
| None -> ()
- | Some sink -> sink.NotifyNameResolution(m.End, item, tpinst, occurenceType, nenv, ad, m, false)
+ | Some sink -> sink.NotifyNameResolution(m.End, item, tpinst, occurrenceType, nenv, ad, m, false)
-let CallMethodGroupNameResolutionSink (sink: TcResultsSink) (m: range, nenv, item, itemMethodGroup, tpinst, occurenceType, ad) =
+let CallMethodGroupNameResolutionSink (sink: TcResultsSink) (m: range, nenv, item, itemMethodGroup, tpinst, occurrenceType, ad) =
match sink.CurrentSink with
| None -> ()
- | Some sink -> sink.NotifyMethodGroupNameResolution(m.End, item, itemMethodGroup, tpinst, occurenceType, nenv, ad, m, false)
+ | Some sink -> sink.NotifyMethodGroupNameResolution(m.End, item, itemMethodGroup, tpinst, occurrenceType, nenv, ad, m, false)
-let CallNameResolutionSinkReplacing (sink: TcResultsSink) (m: range, nenv, item, tpinst, occurenceType, ad) =
+let CallNameResolutionSinkReplacing (sink: TcResultsSink) (m: range, nenv, item, tpinst, occurrenceType, ad) =
match sink.CurrentSink with
| None -> ()
- | Some sink -> sink.NotifyNameResolution(m.End, item, tpinst, occurenceType, nenv, ad, m, true)
+ | Some sink -> sink.NotifyNameResolution(m.End, item, tpinst, occurrenceType, nenv, ad, m, true)
/// Report a specific expression typing at a source range
let CallExprHasTypeSink (sink: TcResultsSink) (m: range, nenv, ty, ad) =
@@ -2229,7 +2302,6 @@ let CheckAllTyparsInferrable amap m item =
| Item.Trait _
| Item.CtorGroup _
- | Item.FakeInterfaceCtor _
| Item.DelegateCtor _
| Item.Types _
| Item.ModuleOrNamespaces _
@@ -2411,8 +2483,8 @@ let rec ResolveLongIdentAsModuleOrNamespace sink (amap: Import.ImportMap) m firs
let notifyNameResolution (modref: ModuleOrNamespaceRef) m =
let item = Item.ModuleOrNamespaces [modref]
- let occurence = if isOpenDecl then ItemOccurence.Open else ItemOccurence.Use
- CallNameResolutionSink sink (m, nenv, item, emptyTyparInst, occurence, ad)
+ let occurrence = if isOpenDecl then ItemOccurrence.Open else ItemOccurrence.Use
+ CallNameResolutionSink sink (m, nenv, item, emptyTyparInst, occurrence, ad)
match moduleOrNamespaces.TryGetValue id.idText with
| true, modrefs when not modrefs.IsEmpty ->
@@ -2470,7 +2542,8 @@ let private ResolveObjectConstructorPrim (ncenv: NameResolver) edenv resInfo m a
else
let ctorInfos = GetIntrinsicConstructorInfosOfType ncenv.InfoReader m ty
if isNil ctorInfos && isInterfaceTy g ty then
- success (resInfo, Item.FakeInterfaceCtor ty)
+ let tcref = tcrefOfAppTy g ty
+ success (resInfo, Item.Types(tcref.DisplayName, [ty]))
else
let defaultStructCtorInfo =
if (not (ctorInfos |> List.exists (fun x -> x.IsNullary)) &&
@@ -2820,7 +2893,7 @@ let ResolveLongIdentInType sink (ncenv: NameResolver) nenv lookupKind m ad id fi
|> AtMostOneResult m
|> ForceRaise
- ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.UseInType, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
+ ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurrence.UseInType, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
item, rest
let private ResolveLongIdentInTyconRef (ncenv: NameResolver) nenv lookupKind (resInfo: ResolutionInfo) depth m ad id rest typeNameResInfo tcref maybeAppliedArgExpr =
@@ -2843,9 +2916,10 @@ let private ResolveLongIdentInTyconRefs atMostOne (ncenv: NameResolver) nenv loo
// ResolveExprLongIdentInModuleOrNamespace
//-------------------------------------------------------------------------
+[]
let (|AccessibleEntityRef|_|) amap m ad (modref: ModuleOrNamespaceRef) mspec =
let eref = modref.NestedTyconRef mspec
- if IsEntityAccessible amap m ad eref then Some eref else None
+ if IsEntityAccessible amap m ad eref then ValueSome eref else ValueNone
let rec ResolveExprLongIdentInModuleOrNamespace (ncenv: NameResolver) nenv (typeNameResInfo: TypeNameResolutionInfo) ad resInfo depth m modref (mty: ModuleOrNamespaceType) (id: Ident) (rest: Ident list) =
// resInfo records the modules or namespaces actually relevant to a resolution
@@ -2969,7 +3043,7 @@ let ChooseTyconRefInExpr (ncenv: NameResolver, m, ad, nenv, id: Ident, typeNameR
success (tys |> List.map (fun (resInfo, ty) -> (resInfo, Item.Types(id.idText, [ty]))))
/// Resolves the given tycons.
-/// For each tycon, return resolution info that could contain enclosing type instantations.
+/// For each tycon, return resolution info that could contain enclosing type instantiations.
let ResolveUnqualifiedTyconRefs nenv tcrefs =
let resInfo = ResolutionInfo.Empty
@@ -3027,7 +3101,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified
let search = ChooseTyconRefInExpr (ncenv, m, ad, nenv, id, typeNameResInfo, tcrefs)
match AtMostOneResult m search with
| Result (resInfo, item) ->
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
Some(resInfo.EnclosingTypeInst, item, rest)
| Exception e ->
typeError <- Some e
@@ -3070,37 +3144,54 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified
match AtMostOneResult m innerSearch with
| Result _ as res -> res
| _ ->
- let failingCase =
- match typeError with
- | Some e -> raze e
- | _ ->
- let suggestNamesAndTypes (addToBuffer: string -> unit) =
- for e in nenv.eUnqualifiedItems do
- if canSuggestThisItem e.Value then
- addToBuffer e.Value.DisplayName
-
- for e in nenv.TyconsByDemangledNameAndArity fullyQualified do
- if IsEntityAccessible ncenv.amap m ad e.Value then
- addToBuffer e.Value.DisplayName
-
- for kv in nenv.ModulesAndNamespaces fullyQualified do
- for modref in kv.Value do
- if IsEntityAccessible ncenv.amap m ad modref then
- addToBuffer modref.DisplayName
-
- // check if the user forgot to use qualified access
- for e in nenv.eTyconsByDemangledNameAndArity do
- let hasRequireQualifiedAccessAttribute = HasFSharpAttribute ncenv.g ncenv.g.attrib_RequireQualifiedAccessAttribute e.Value.Attribs
- if hasRequireQualifiedAccessAttribute then
- if e.Value.IsUnionTycon && e.Value.UnionCasesArray |> Array.exists (fun c -> c.LogicalName = id.idText) then
- addToBuffer (e.Value.DisplayName + "." + id.idText)
-
- raze (UndefinedName(0, FSComp.SR.undefinedNameValueOfConstructor, id, suggestNamesAndTypes))
- failingCase
+
+ match typeError with
+ | Some e -> raze e
+ | _ ->
+
+ let tyconSearch () =
+ let tcrefs = LookupTypeNameInEnvNoArity fullyQualified id.idText nenv
+ if isNil tcrefs then NoResultsOrUsefulErrors else
+
+ let tcrefs = ResolveUnqualifiedTyconRefs nenv tcrefs
+ let typeNameResInfo = TypeNameResolutionInfo.ResolveToTypeRefs typeNameResInfo.StaticArgsInfo
+ CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange)
+ |> CollectResults success
+
+ match tyconSearch () with
+ | Result((resInfo, tcref) :: _) ->
+ let _, _, tyargs = FreshenTypeInst ncenv.g m (tcref.Typars m)
+ let item = Item.Types(id.idText, [TType_app(tcref, tyargs, ncenv.g.knownWithoutNull)])
+ success (resInfo, item)
+ | _ ->
+
+ let suggestNamesAndTypes (addToBuffer: string -> unit) =
+ for e in nenv.eUnqualifiedItems do
+ if canSuggestThisItem e.Value then
+ addToBuffer e.Value.DisplayName
+
+ for e in nenv.TyconsByDemangledNameAndArity fullyQualified do
+ if IsEntityAccessible ncenv.amap m ad e.Value then
+ addToBuffer e.Value.DisplayName
+
+ for kv in nenv.ModulesAndNamespaces fullyQualified do
+ for modref in kv.Value do
+ if IsEntityAccessible ncenv.amap m ad modref then
+ addToBuffer modref.DisplayName
+
+ // check if the user forgot to use qualified access
+ for e in nenv.eTyconsByDemangledNameAndArity do
+ let hasRequireQualifiedAccessAttribute = HasFSharpAttribute ncenv.g ncenv.g.attrib_RequireQualifiedAccessAttribute e.Value.Attribs
+ if hasRequireQualifiedAccessAttribute then
+ if e.Value.IsUnionTycon && e.Value.UnionCasesArray |> Array.exists (fun c -> c.LogicalName = id.idText) then
+ addToBuffer (e.Value.DisplayName + "." + id.idText)
+
+ raze (UndefinedName(0, FSComp.SR.undefinedNameValueOfConstructor, id, suggestNamesAndTypes))
+
match res with
| Exception e -> raze e
| Result (resInfo, item) ->
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
success (resInfo.EnclosingTypeInst, item, rest)
// A compound identifier.
@@ -3190,7 +3281,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified
match res with
| Exception e -> raze e
| Result (resInfo, item, rest) ->
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item))
success (resInfo.EnclosingTypeInst, item, rest)
let ResolveExprLongIdent sink (ncenv: NameResolver) m ad nenv typeNameResInfo lid maybeAppliedArgExpr =
@@ -3278,7 +3369,10 @@ let rec ResolvePatternLongIdentInModuleOrNamespace (ncenv: NameResolver) nenv nu
exception UpperCaseIdentifierInPattern of range
/// Indicates if a warning should be given for the use of upper-case identifiers in patterns
-type WarnOnUpperFlag = WarnOnUpperCase | AllIdsOK
+type WarnOnUpperFlag =
+ | WarnOnUpperUnionCaseLabel
+ | WarnOnUpperVariablePatterns
+ | AllIdsOK
// Long ID in a pattern
let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt (id: Ident) (rest: Ident list) extraDotAtTheEnd =
@@ -3298,13 +3392,21 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa
| true, res when not newDef -> ResolveUnqualifiedItem ncenv nenv m res
| _ ->
// Single identifiers in patterns - variable bindings
- if
- not newDef
- && warnOnUpper = WarnOnUpperCase
- && id.idText.Length >= 3
- && System.Char.ToLowerInvariant id.idText[0] <> id.idText[0]
+ let supportsDontWarnOnUppercaseIdentifiers = ncenv.g.langVersion.SupportsFeature(LanguageFeature.DontWarnOnUppercaseIdentifiersInBindingPatterns)
+ let isUpperCaseIdentifier = (not newDef && System.Char.ToLowerInvariant id.idText[0] <> id.idText[0])
+ if (supportsDontWarnOnUppercaseIdentifiers && isUpperCaseIdentifier)
then
- warning(UpperCaseIdentifierInPattern m)
+ match warnOnUpper with
+ | WarnOnUpperUnionCaseLabel -> warning(UpperCaseIdentifierInPattern m)
+ | WarnOnUpperVariablePatterns
+ | AllIdsOK -> ()
+ else
+ // HACK: This is an historical hack that seems to related the use country and language codes, which are very common in codebases
+ if isUpperCaseIdentifier && id.idText.Length >= 3 then
+ match warnOnUpper with
+ | WarnOnUpperUnionCaseLabel
+ | WarnOnUpperVariablePatterns -> warning(UpperCaseIdentifierInPattern m)
+ | AllIdsOK -> ()
// If there's an extra dot, we check whether the single identifier is a union, module or namespace and report it to the sink for the sake of tooling
match extraDotAtTheEnd with
@@ -3312,13 +3414,13 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa
match LookupTypeNameInEnvNoArity fullyQualified id.idText nenv with
| tcref :: _ when tcref.IsUnionTycon ->
let res = ResolutionInfo.Empty.AddEntity (id.idRange, tcref)
- ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.Pattern, ad, res, ResultTyparChecker(fun () -> true))
- Item.Types (id.idText, [ mkAppTy tcref [] ])
+ ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurrence.Pattern, ad, res, ResultTyparChecker(fun () -> true))
+ Item.Types (id.idText, [ mkWoNullAppTy tcref [] ])
| _ ->
match ResolveLongIdentAsModuleOrNamespace sink ncenv.amap id.idRange true fullyQualified nenv ad id [] false ShouldNotifySink.Yes with
| Result ((_, mref, _) :: _) ->
let res = ResolutionInfo.Empty.AddEntity (id.idRange, mref)
- ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.Pattern, ad, res, ResultTyparChecker(fun () -> true))
+ ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurrence.Pattern, ad, res, ResultTyparChecker(fun () -> true))
Item.ModuleOrNamespaces [ mref ]
| _ ->
Item.NewDef id
@@ -3350,7 +3452,7 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa
|> AtMostOneResult m
|> ForceRaise
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> true))
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.Use, ad, resInfo, ResultTyparChecker(fun () -> true))
match rest with
| [] -> res
@@ -3433,10 +3535,13 @@ let ResolveTypeLongIdentInTyconRef sink (ncenv: NameResolver) nenv typeNameResIn
error(Error(FSComp.SR.nrUnexpectedEmptyLongId(), m))
| id :: rest ->
ForceRaise (ResolveTypeLongIdentInTyconRefPrim ncenv typeNameResInfo ad ResolutionInfo.Empty PermitDirectReferenceToGeneratedType.No 0 m tcref id rest)
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> true))
- let item = Item.Types(tcref.DisplayName, [FreshenTycon ncenv m tcref])
- CallNameResolutionSink sink (rangeOfLid lid, nenv, item, emptyTyparInst, ItemOccurence.UseInType, ad)
- tcref
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.Use, ad, resInfo, ResultTyparChecker(fun () -> true))
+
+ let _, tinst, tyargs = FreshenTypeInst ncenv.g m (tcref.Typars m)
+ let item = Item.Types(tcref.DisplayName, [TType_app(tcref, tyargs, ncenv.g.knownWithoutNull)])
+ CallNameResolutionSink sink (rangeOfLid lid, nenv, item, tinst, ItemOccurrence.UseInType, ad)
+
+ tcref, tyargs
/// Create an UndefinedName error with details
let SuggestTypeLongIdentInModuleOrNamespace depth (modref: ModuleOrNamespaceRef) amap ad m (id: Ident) =
@@ -3463,7 +3568,7 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace sink nenv (ncenv: NameRe
match modref.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName.TryGetValue id.idText with
| true, AccessibleEntityRef ncenv.amap m ad modref submodref ->
let item = Item.ModuleOrNamespaces [submodref]
- CallNameResolutionSink sink (id.idRange, nenv, item, emptyTyparInst, ItemOccurence.Use, ad)
+ CallNameResolutionSink sink (id.idRange, nenv, item, emptyTyparInst, ItemOccurrence.Use, ad)
let resInfo = resInfo.AddEntity(id.idRange, submodref)
ResolveTypeLongIdentInModuleOrNamespace sink nenv ncenv typeNameResInfo ad genOk resInfo (depth+1) m submodref submodref.ModuleOrNamespaceType id2 rest2
| _ ->
@@ -3488,14 +3593,14 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace sink nenv (ncenv: NameRe
AddResults tyconSearch modulSearch
/// Resolve a long identifier representing a type
-let rec ResolveTypeLongIdentPrim sink (ncenv: NameResolver) occurence first fullyQualified m nenv ad (id: Ident) (rest: Ident list) (staticResInfo: TypeNameResolutionStaticArgsInfo) genOk =
+let rec ResolveTypeLongIdentPrim sink (ncenv: NameResolver) occurrence first fullyQualified m nenv ad (id: Ident) (rest: Ident list) (staticResInfo: TypeNameResolutionStaticArgsInfo) genOk =
let typeNameResInfo = TypeNameResolutionInfo.ResolveToTypeRefs staticResInfo
if first && id.idText = MangledGlobalName then
match rest with
| [] ->
error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange))
| id2 :: rest2 ->
- ResolveTypeLongIdentPrim sink ncenv occurence false FullyQualified m nenv ad id2 rest2 staticResInfo genOk
+ ResolveTypeLongIdentPrim sink ncenv occurrence false FullyQualified m nenv ad id2 rest2 staticResInfo genOk
else
match rest with
| [] ->
@@ -3525,8 +3630,8 @@ let rec ResolveTypeLongIdentPrim sink (ncenv: NameResolver) occurence first full
for kv in nenv.TyconsByDemangledNameAndArity fullyQualified do
if IsEntityAccessible ncenv.amap m ad kv.Value then
addToBuffer kv.Value.DisplayName
- match occurence with
- | ItemOccurence.UseInAttribute ->
+ match occurrence with
+ | ItemOccurrence.UseInAttribute ->
if kv.Value.DisplayName.EndsWithOrdinal("Attribute") then
addToBuffer (kv.Value.DisplayName.Replace("Attribute", ""))
| _ -> ()
@@ -3580,30 +3685,34 @@ let rec ResolveTypeLongIdentPrim sink (ncenv: NameResolver) occurence first full
let r = AddResults searchSoFar (modulSearchFailed())
AtMostOneResult m2 (r |?> (fun tcrefs -> CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, genOk, m)))
-
/// Resolve a long identifier representing a type and report it
-let ResolveTypeLongIdentAux sink (ncenv: NameResolver) occurence fullyQualified nenv ad (lid: Ident list) staticResInfo genOk =
+let ResolveTypeLongIdentAux sink (ncenv: NameResolver) occurrence fullyQualified nenv ad (lid: Ident list) staticResInfo genOk =
let m = rangeOfLid lid
let res =
match lid with
| [] ->
error(Error(FSComp.SR.nrUnexpectedEmptyLongId(), m))
| id :: rest ->
- ResolveTypeLongIdentPrim sink ncenv occurence true fullyQualified m nenv ad id rest staticResInfo genOk
+ ResolveTypeLongIdentPrim sink ncenv occurrence true fullyQualified m nenv ad id rest staticResInfo genOk
// Register the result as a name resolution
match res with
| Result (resInfo, tcref) ->
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.UseInType, ad, resInfo, ResultTyparChecker(fun () -> true))
- let item = Item.Types(tcref.DisplayName, [FreshenTycon ncenv m tcref])
- CallNameResolutionSink sink (m, nenv, item, emptyTyparInst, occurence, ad)
- | _ -> ()
- res
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.UseInType, ad, resInfo, ResultTyparChecker(fun () -> true))
+
+ let _, tinst, tyargs = FreshenTypeInst ncenv.g m (tcref.Typars m)
+ let item = Item.Types(tcref.DisplayName, [TType_app(tcref, tyargs, ncenv.g.knownWithoutNull)])
+ CallNameResolutionSink sink (m, nenv, item, tinst, occurrence, ad)
+
+ Result(resInfo, tcref, tyargs)
+
+ | Exception exn ->
+ Exception exn
/// Resolve a long identifier representing a type and report it
-let ResolveTypeLongIdent sink ncenv occurence fullyQualified nenv ad lid staticResInfo genOk =
- let res = ResolveTypeLongIdentAux sink ncenv occurence fullyQualified nenv ad lid staticResInfo genOk
- (res |?> fun (resInfo, tcref) -> (resInfo.EnclosingTypeInst, tcref))
+let ResolveTypeLongIdent sink ncenv occurrence fullyQualified nenv ad lid staticResInfo genOk =
+ let res = ResolveTypeLongIdentAux sink ncenv occurrence fullyQualified nenv ad lid staticResInfo genOk
+ res |?> fun (resInfo, tcref, ttypes) -> (resInfo.EnclosingTypeInst, tcref, ttypes)
//-------------------------------------------------------------------------
// Resolve F#/IL "." syntax in records etc.
@@ -3787,7 +3896,7 @@ let ResolveField sink ncenv nenv ad ty mp id allFields =
let checker = ResultTyparChecker(fun () -> true)
res
|> List.map (fun (resInfo, rfref) ->
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.UseInType, ad, resInfo, checker)
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.UseInType, ad, resInfo, checker)
rfref)
/// Resolve a long identifier representing a nested record field.
@@ -3923,7 +4032,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid =
match item with
| Item.RecdField info -> info.FieldType
| Item.AnonRecdField (_, tys, index, _) -> tys[index]
- | _ -> g.obj_ty
+ | _ -> g.obj_ty_ambivalent
idsBeforeField, (fieldId, item) :: (nestedFieldSearch [] fieldTy rest)
@@ -3997,6 +4106,11 @@ let NeedsWorkAfterResolution namedItem =
| Item.ActivePatternCase apref -> not (List.isEmpty apref.ActivePatternVal.Typars)
| _ -> false
+let isWrongItemInExpr item =
+ match item with
+ | Item.Types _ -> true
+ | _ -> false
+
/// Specifies additional work to do after an item has been processed further in type checking.
[]
type AfterResolution =
@@ -4034,15 +4148,15 @@ let ResolveLongIdentAsExprAndComputeRange (sink: TcResultsSink) (ncenv: NameReso
let callSink (refinedItem, tpinst) =
if not isFakeIdents then
- let occurence =
+ let occurrence =
match item with
// It's r.h.s. `Case1` in `let (|Case1|Case1|) _ = if true then Case1 else Case2`
// We return `Binding` for it because it's actually not usage, but definition. If we did not
// it confuses detecting unused definitions.
- | Item.ActivePatternResult _ -> ItemOccurence.Binding
- | _ -> ItemOccurence.Use
+ | Item.ActivePatternResult _ -> ItemOccurrence.Binding
+ | _ -> ItemOccurrence.Use
- CallMethodGroupNameResolutionSink sink (itemRange, nenv, refinedItem, item, tpinst, occurence, ad)
+ CallMethodGroupNameResolutionSink sink (itemRange, nenv, refinedItem, item, tpinst, occurrence, ad)
let callSinkWithSpecificOverload (minfo: MethInfo, pinfoOpt: PropInfo option, tpinst) =
let refinedItem =
@@ -4059,17 +4173,23 @@ let ResolveLongIdentAsExprAndComputeRange (sink: TcResultsSink) (ncenv: NameReso
| Some _ ->
if NeedsWorkAfterResolution item then
AfterResolution.RecordResolution(None, (fun tpinst -> callSink(item, tpinst)), callSinkWithSpecificOverload, (fun () -> callSink (item, emptyTyparInst)))
+
+ elif isWrongItemInExpr item then
+ CallNameResolutionSink sink (itemRange, nenv, item, emptyTyparInst, ItemOccurrence.InvalidUse, ad)
+ AfterResolution.DoNothing
+
else
callSink (item, emptyTyparInst)
AfterResolution.DoNothing
success (tinstEnclosing, item, itemRange, rest, afterResolution)
+[]
let (|NonOverridable|_|) namedItem =
match namedItem with
- | Item.MethodGroup(_, minfos, _) when minfos |> List.exists(fun minfo -> minfo.IsVirtual || minfo.IsAbstract) -> None
- | Item.Property(info = pinfos) when pinfos |> List.exists(fun pinfo -> pinfo.IsVirtualProperty) -> None
- | _ -> Some ()
+ | Item.MethodGroup(_, minfos, _) when minfos |> List.exists(fun minfo -> minfo.IsVirtual || minfo.IsAbstract) -> ValueNone
+ | Item.Property(info = pinfos) when pinfos |> List.exists(fun pinfo -> pinfo.IsVirtualProperty) -> ValueNone
+ | _ -> ValueSome ()
/// Called for 'expression.Bar' - for VS IntelliSense, we can filter out static members from method groups
/// Also called for 'GenericType.Bar' - for VS IntelliSense, we can filter out non-static members from method groups
@@ -4085,7 +4205,7 @@ let ResolveExprDotLongIdentAndComputeRange (sink: TcResultsSink) (ncenv: NameRes
// "true" resolution
let resInfo, item, rest, itemRange = resolveExpr findFlag
- ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap itemRange item))
+ ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurrence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap itemRange item))
// Record the precise resolution of the field for intellisense/goto definition
let afterResolution =
@@ -4105,7 +4225,7 @@ let ResolveExprDotLongIdentAndComputeRange (sink: TcResultsSink) (ncenv: NameRes
let callSink (refinedItem, tpinst) =
let refinedItem = FilterMethodGroups ncenv itemRange refinedItem staticOnly
let unrefinedItem = FilterMethodGroups ncenv itemRange unrefinedItem staticOnly
- CallMethodGroupNameResolutionSink sink (itemRange, nenv, refinedItem, unrefinedItem, tpinst, ItemOccurence.Use, ad)
+ CallMethodGroupNameResolutionSink sink (itemRange, nenv, refinedItem, unrefinedItem, tpinst, ItemOccurrence.Use, ad)
let callSinkWithSpecificOverload (minfo: MethInfo, pinfoOpt: PropInfo option, tpinst) =
let refinedItem =
@@ -4188,7 +4308,7 @@ let ItemOfTy g x =
Item.Types (nm, [x])
// Filter out 'PrivateImplementationDetail' classes
-let IsInterestingModuleName nm = not (System.String.IsNullOrEmpty nm) && nm[0] <> '<'
+let IsInterestingModuleName nm = not (System.String.IsNullOrEmpty nm) && (!!nm)[0] <> '<'
let rec PartialResolveLookupInModuleOrNamespaceAsModuleOrNamespaceThen f plid (modref: ModuleOrNamespaceRef) =
let mty = modref.ModuleOrNamespaceType
@@ -4313,14 +4433,14 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso
//
// Don't show GetHashCode or Equals for F# types that admit equality as an abnormal operation
let isUnseenDueToBasicObjRules =
- not (isObjTy g ty) &&
+ not (isObjTyAnyNullness g ty) &&
not minfo.IsExtensionMember &&
match minfo.LogicalName with
| "GetType" -> false
- | "GetHashCode" -> isObjTy g minfo.ApparentEnclosingType && not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty)
+ | "GetHashCode" -> isObjTyAnyNullness g minfo.ApparentEnclosingType && not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty)
| "ToString" -> false
| "Equals" ->
- if not (isObjTy g minfo.ApparentEnclosingType) then
+ if not (isObjTyAnyNullness g minfo.ApparentEnclosingType) then
// declaring type is not System.Object - show it
false
elif minfo.IsInstance then
@@ -4331,7 +4451,7 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso
true
| _ ->
// filter out self methods of obj type
- isObjTy g minfo.ApparentEnclosingType
+ isObjTyAnyNullness g minfo.ApparentEnclosingType
let result =
not isUnseenDueToBasicObjRules &&
@@ -4500,7 +4620,6 @@ let InfosForTyconConstructors (ncenv: NameResolver) m ad (tcref: TyconRef) =
match ResolveObjectConstructor ncenv (DisplayEnv.Empty g) m ad ty with
| Result item ->
match item with
- | Item.FakeInterfaceCtor _ -> None
| Item.CtorGroup(nm, ctorInfos) ->
let ctors =
ctorInfos
@@ -5013,14 +5132,14 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics ty (
//
// Don't show GetHashCode or Equals for F# types that admit equality as an abnormal operation
let isUnseenDueToBasicObjRules =
- not (isObjTy g ty) &&
+ not (isObjTyAnyNullness g ty) &&
not minfo.IsExtensionMember &&
match minfo.LogicalName with
| "GetType" -> false
- | "GetHashCode" -> isObjTy g minfo.ApparentEnclosingType && not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty)
+ | "GetHashCode" -> isObjTyAnyNullness g minfo.ApparentEnclosingType && not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty)
| "ToString" -> false
| "Equals" ->
- if not (isObjTy g minfo.ApparentEnclosingType) then
+ if not (isObjTyAnyNullness g minfo.ApparentEnclosingType) then
// declaring type is not System.Object - show it
false
elif minfo.IsInstance then
@@ -5031,7 +5150,7 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics ty (
true
| _ ->
// filter out self methods of obj type
- isObjTy g minfo.ApparentEnclosingType
+ isObjTyAnyNullness g minfo.ApparentEnclosingType
let result =
not isUnseenDueToBasicObjRules &&
not minfo.IsInstance = statics &&
@@ -5301,7 +5420,6 @@ let rec GetCompletionForItem (ncenv: NameResolver) (nenv: NameResolutionEnv) m a
| _ -> ()
| Item.DelegateCtor _
- | Item.FakeInterfaceCtor _
| Item.CtorGroup _
| Item.UnqualifiedType _ ->
for tcref in nenv.TyconsByDemangledNameAndArity(OpenQualified).Values do
diff --git a/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi b/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi
index 3ba5113b00..693c9ec16d 100755
--- a/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi
@@ -94,9 +94,6 @@ type Item =
/// Represents the resolution of a name to a constructor
| CtorGroup of string * MethInfo list
- /// Represents the resolution of a name to the fake constructor simulated for an interface type.
- | FakeInterfaceCtor of TType
-
/// Represents the resolution of a name to a delegate
| DelegateCtor of TType
@@ -376,7 +373,7 @@ type TypeNameResolutionInfo =
/// Represents the kind of the occurrence when reporting a name in name resolution
[]
-type internal ItemOccurence =
+type internal ItemOccurrence =
| Binding
| Use
| UseInType
@@ -385,6 +382,7 @@ type internal ItemOccurence =
| Implemented
| RelatedText
| Open
+ | InvalidUse
/// Check for equality, up to signature matching
val ItemsAreEffectivelyEqual: TcGlobals -> Item -> Item -> bool
@@ -404,7 +402,7 @@ type internal CapturedNameResolution =
member ItemWithInst: ItemWithInst
/// Information about the occurrence of the symbol
- member ItemOccurence: ItemOccurence
+ member ItemOccurrence: ItemOccurrence
/// Information about printing. For example, should redundant keywords be hidden?
member DisplayEnv: DisplayEnv
@@ -443,7 +441,7 @@ type internal TcResolutions =
[]
type TcSymbolUseData =
{ ItemWithInst: ItemWithInst
- ItemOccurence: ItemOccurence
+ ItemOccurrence: ItemOccurrence
DisplayEnv: DisplayEnv
Range: range }
@@ -484,17 +482,17 @@ type ITypecheckResultsSink =
/// Record that a name resolution occurred at a specific location in the source
abstract NotifyNameResolution:
- pos * Item * TyparInstantiation * ItemOccurence * NameResolutionEnv * AccessorDomain * range * bool -> unit
+ pos * Item * TyparInstantiation * ItemOccurrence * NameResolutionEnv * AccessorDomain * range * bool -> unit
/// Record that a method group name resolution occurred at a specific location in the source
abstract NotifyMethodGroupNameResolution:
- pos * Item * Item * TyparInstantiation * ItemOccurence * NameResolutionEnv * AccessorDomain * range * bool ->
+ pos * Item * Item * TyparInstantiation * ItemOccurrence * NameResolutionEnv * AccessorDomain * range * bool ->
unit
/// Record that a printf format specifier occurred at a specific location in the source
abstract NotifyFormatSpecifierLocation: range * int -> unit
- /// Record that an open declaration occured in a given scope range
+ /// Record that an open declaration occurred in a given scope range
abstract NotifyOpenDeclaration: OpenDeclaration -> unit
/// Get the current source
@@ -567,7 +565,8 @@ type LookupKind =
/// Indicates if a warning should be given for the use of upper-case identifiers in patterns
type WarnOnUpperFlag =
- | WarnOnUpperCase
+ | WarnOnUpperUnionCaseLabel
+ | WarnOnUpperVariablePatterns
| AllIdsOK
/// Indicates whether we permit a direct reference to a type generator. Only set when resolving the
@@ -615,17 +614,17 @@ val internal CallEnvSink: TcResultsSink -> range * NameResolutionEnv * AccessorD
/// Report a specific name resolution at a source range
val internal CallNameResolutionSink:
- TcResultsSink -> range * NameResolutionEnv * Item * TyparInstantiation * ItemOccurence * AccessorDomain -> unit
+ TcResultsSink -> range * NameResolutionEnv * Item * TyparInstantiation * ItemOccurrence * AccessorDomain -> unit
/// Report a specific method group name resolution at a source range
val internal CallMethodGroupNameResolutionSink:
TcResultsSink ->
- range * NameResolutionEnv * Item * Item * TyparInstantiation * ItemOccurence * AccessorDomain ->
+ range * NameResolutionEnv * Item * Item * TyparInstantiation * ItemOccurrence * AccessorDomain ->
unit
/// Report a specific name resolution at a source range, replacing any previous resolutions
val internal CallNameResolutionSinkReplacing:
- TcResultsSink -> range * NameResolutionEnv * Item * TyparInstantiation * ItemOccurence * AccessorDomain -> unit
+ TcResultsSink -> range * NameResolutionEnv * Item * TyparInstantiation * ItemOccurrence * AccessorDomain -> unit
/// Report a specific name resolution at a source range
val internal CallExprHasTypeSink: TcResultsSink -> range * NameResolutionEnv * TType * AccessorDomain -> unit
@@ -678,6 +677,67 @@ exception internal UpperCaseIdentifierInPattern of range
/// Generate a new reference to a record field with a fresh type instantiation
val FreshenRecdFieldRef: NameResolver -> range -> RecdFieldRef -> RecdFieldInfo
+/// Create a type variable representing the use of a "_" in F# code
+val NewAnonTypar: TyparKind * range * TyparRigidity * TyparStaticReq * TyparDynamicReq -> Typar
+
+val NewNamedInferenceMeasureVar: range * TyparRigidity * TyparStaticReq * Ident -> Typar
+
+val NewNamedInferenceMeasureVar: range * TyparRigidity * TyparStaticReq * Ident -> Typar
+
+val NewInferenceMeasurePar: unit -> Typar
+
+/// Create an inference type variable
+val NewInferenceType: TcGlobals -> TType
+
+/// Create an inference type variable for the kind of a byref pointer
+val NewByRefKindInferenceType: TcGlobals -> range -> TType
+
+/// Create an inference type variable representing an error condition when checking an expression
+val NewErrorType: unit -> TType
+
+/// Create an inference type variable representing an error condition when checking a measure
+val NewErrorMeasure: unit -> Measure
+
+/// Create a list of inference type variables, one for each element in the input list
+val NewInferenceTypes: TcGlobals -> 'T list -> TType list
+
+/// Given a set of type parameters, make new inference type variables for
+/// each and ensure that the constraints on the new type variables are adjusted.
+///
+/// Returns the inference type variables as a list of types.
+val FreshenTypars: g: TcGlobals -> range -> Typars -> TType list
+
+/// Given a method, which may be generic, make new inference type variables for
+/// its generic parameters, and ensure that the constraints the new type variables are adjusted.
+///
+/// Returns the inference type variables as a list of types.
+val FreshenMethInfo: range -> MethInfo -> TType list
+
+/// Given a set of formal type parameters and their constraints, make new inference type variables for
+/// each and ensure that the constraints on the new type variables are adjusted to refer to these.
+///
+/// Returns
+/// 1. the new type parameters
+/// 2. the instantiation mapping old type parameters to inference variables
+/// 3. the inference type variables as a list of types.
+val FreshenAndFixupTypars:
+ g: TcGlobals ->
+ m: range ->
+ rigid: TyparRigidity ->
+ fctps: Typars ->
+ tinst: TType list ->
+ tpsorig: Typar list ->
+ Typar list * TyparInstantiation * TTypes
+
+/// Given a set of type parameters, make new inference type variables for
+/// each and ensure that the constraints on the new type variables are adjusted.
+///
+/// Returns
+/// 1. the new type parameters
+/// 2. the instantiation mapping old type parameters to inference variables
+/// 3. the inference type variables as a list of types.
+val FreshenTypeInst: g: TcGlobals -> m: range -> tpsorig: Typar list -> Typar list * TyparInstantiation * TTypes
+
/// Resolve a long identifier to a namespace, module.
val internal ResolveLongIdentAsModuleOrNamespace:
sink: TcResultsSink ->
@@ -735,20 +795,20 @@ val internal ResolveTypeLongIdentInTyconRef:
m: range ->
tcref: TyconRef ->
lid: Ident list ->
- TyconRef
+ TyconRef * TypeInst
/// Resolve a long identifier to a type definition
val internal ResolveTypeLongIdent:
sink: TcResultsSink ->
ncenv: NameResolver ->
- occurence: ItemOccurence ->
+ occurrence: ItemOccurrence ->
fullyQualified: FullyQualifiedFlag ->
nenv: NameResolutionEnv ->
ad: AccessorDomain ->
lid: Ident list ->
staticResInfo: TypeNameResolutionStaticArgsInfo ->
genOk: PermitDirectReferenceToGeneratedType ->
- ResultOrException
+ ResultOrException
/// Resolve a long identifier to a field
val internal ResolveField:
@@ -786,7 +846,7 @@ val internal ResolveExprLongIdent:
val internal getRecordFieldsInScope: NameResolutionEnv -> Item list
-/// Resolve a (possibly incomplete) long identifier to a loist of possible class or record fields
+/// Resolve a (possibly incomplete) long identifier to a list of possible class or record fields
val internal ResolvePartialLongIdentToClassOrRecdFields:
NameResolver -> NameResolutionEnv -> range -> AccessorDomain -> string list -> bool -> bool -> Item list
diff --git a/src/fcs-fable/src/Compiler/Checking/NicePrint.fs b/src/fcs-fable/src/Compiler/Checking/NicePrint.fs
index 5783996d42..6e5ae8e75c 100755
--- a/src/fcs-fable/src/Compiler/Checking/NicePrint.fs
+++ b/src/fcs-fable/src/Compiler/Checking/NicePrint.fs
@@ -38,6 +38,8 @@ module internal PrintUtilities =
let squareAngleL x = LeftL.leftBracketAngle ^^ x ^^ RightL.rightBracketAngle
+ let squareAngleReturn x = LeftL.leftBracketAngle ^^ WordL.keywordReturn ^^ SepL.colon ^^ x ^^ RightL.rightBracketAngle
+
let angleL x = SepL.leftAngle ^^ x ^^ RightL.rightAngle
let braceL x = wordL leftBrace ^^ x ^^ wordL rightBrace
@@ -55,7 +57,7 @@ module internal PrintUtilities =
let comment str = wordL (tagText (sprintf "(* %s *)" str))
- let isDiscard (name: string) = name.StartsWith("_")
+ let isDiscard (name: string) = name.StartsWithOrdinal("_")
let ensureFloat (s: string) =
if String.forall (fun c -> Char.IsDigit c || c = '-') s then
@@ -224,7 +226,7 @@ module internal PrintUtilities =
else s)
let pathText = trimPathByDisplayEnv denv path
- if pathText = "" then tyconTextL else leftL (tagUnknownEntity pathText) ^^ tyconTextL
+ if String.IsNullOrEmpty(pathText) then tyconTextL else leftL (tagUnknownEntity pathText) ^^ tyconTextL
let layoutBuiltinAttribute (denv: DisplayEnv) (attrib: BuiltinAttribInfo) =
let tcref = attrib.TyconRef
@@ -261,7 +263,7 @@ module internal PrintUtilities =
if possibleXmlDoc.IsEmpty then
match info with
| Some(Some ccuFileName, xmlDocSig) ->
- infoReader.amap.assemblyLoader.TryFindXmlDocumentationInfo(Path.GetFileNameWithoutExtension ccuFileName)
+ infoReader.amap.assemblyLoader.TryFindXmlDocumentationInfo(!!Path.GetFileNameWithoutExtension(ccuFileName))
|> Option.bind (fun xmlDocInfo ->
xmlDocInfo.TryGetXmlDocBySig(xmlDocSig)
)
@@ -337,6 +339,13 @@ module internal PrintUtilities =
#endif
| None -> layout
+ // When showing types in diagnostics, we don't show nullness annotations by default
+ // unless the diagnostic is specifically about nullness.
+ let suppressNullnessAnnotations denv =
+ match denv.showNullnessAnnotations with
+ | None -> { denv with showNullnessAnnotations = Some false }
+ | _ -> denv
+
module PrintIL =
let fullySplitILTypeRef (tref: ILTypeRef) =
@@ -496,10 +505,10 @@ module PrintTypes =
| Const.Zero -> tagKeyword(if isRefTy g ty then "null" else "default")
wordL str
- let layoutAccessibilityCore (denv: DisplayEnv) accessibility =
+ let layoutAccessibilityCoreWithProtected (denv: DisplayEnv) isProtected accessibility =
let isInternalCompPath x =
match x with
- | CompPath(ILScopeRef.Local, []) -> true
+ | CompPath(ILScopeRef.Local, _, []) -> true
| _ -> false
let (|Public|Internal|Private|) (TAccess p) =
match p with
@@ -507,11 +516,15 @@ module PrintTypes =
| _ when List.forall isInternalCompPath p -> Internal
| _ -> Private
match denv.contextAccessibility, accessibility with
+ | _ when isProtected -> wordL (tagKeyword "protected")
| Public, Internal -> WordL.keywordInternal
| Public, Private -> WordL.keywordPrivate
| Internal, Private -> WordL.keywordPrivate
| _ -> emptyL
-
+
+ let layoutAccessibilityCore (denv: DisplayEnv) accessibility =
+ layoutAccessibilityCoreWithProtected denv false accessibility
+
let layoutAccessibility (denv: DisplayEnv) accessibility itemL =
layoutAccessibilityCore denv accessibility ++ itemL
@@ -635,6 +648,23 @@ module PrintTypes =
let argsL = bracketL (sepListL RightL.comma (List.map (layoutILAttribElement denv) args))
PrintIL.layoutILType denv [] ty ++ argsL
+ /// Layout nullness attributes for C# flow-analysis
+ /// F# does not process them, this way we can at least show them.
+ and layoutCsharpCodeAnalysisIlAttributes denv (attrs:ILAttributes) (layoutCombinator: Layout -> Layout -> Layout) restL =
+ let denvShortNames() = { denv with shortTypeNames = true }
+ let attrsL =
+ [ for a in attrs.AsArray() do
+ let name = a.Method.DeclaringType.BasicQualifiedName
+ if name.StartsWith("System.Diagnostics.CodeAnalysis") then
+ let params_, _args = decodeILAttribData a
+ layoutILAttrib (denvShortNames()) (a.Method.DeclaringType, params_)
+ ]
+ match attrsL with
+ | [] -> restL
+ | _ ->
+ let separated = sepListL RightL.semicolon attrsL
+ layoutCombinator separated restL
+
/// Layout '[]' above another block
and layoutAttribs denv startOpt isLiteral kind attrs restL =
@@ -747,8 +777,13 @@ module PrintTypes =
| _ ->
if denv.abbreviateAdditionalConstraints then
wordL (tagKeyword "when") ^^ wordL(tagText "")
- elif denv.shortConstraints then
- LeftL.leftParen ^^ wordL (tagKeyword "requires") ^^ sepListL (wordL (tagKeyword "and")) cxsL ^^ RightL.rightParen
+ elif denv.shortConstraints then
+ match cxs with
+ | (_,TyparConstraint.AllowsRefStruct _) :: _ ->
+ // If the first constraint is 'allows ref struct', we do not want to prefix it with 'requires', because that just reads wrong.
+ LeftL.leftParen ^^ sepListL (wordL (tagKeyword "and")) cxsL ^^ RightL.rightParen
+ | _ ->
+ LeftL.leftParen ^^ wordL (tagKeyword "requires") ^^ sepListL (wordL (tagKeyword "and")) cxsL ^^ RightL.rightParen
else
wordL (tagKeyword "when") ^^ sepListL (wordL (tagKeyword "and")) cxsL
@@ -794,6 +829,9 @@ module PrintTypes =
| TyparConstraint.SupportsNull _ ->
[wordL (tagKeyword "null") |> longConstraintPrefix]
+ | TyparConstraint.NotSupportsNull _ ->
+ [(wordL (tagKeyword "not null") (* ^^ wordL(tagKeyword "null") *) ) |> longConstraintPrefix]
+
| TyparConstraint.IsNonNullableStruct _ ->
if denv.shortConstraints then
[wordL (tagText "value type")]
@@ -805,6 +843,12 @@ module PrintTypes =
[wordL (tagKeyword "unmanaged")]
else
[wordL (tagKeyword "unmanaged") |> longConstraintPrefix]
+
+ | TyparConstraint.AllowsRefStruct _ ->
+ if denv.shortConstraints then
+ [wordL (tagKeyword "allows ref struct")]
+ else
+ [wordL (tagKeyword "allows ref struct") |> longConstraintPrefix]
| TyparConstraint.IsReferenceType _ ->
if denv.shortConstraints then
@@ -827,7 +871,7 @@ module PrintTypes =
and layoutTraitWithInfo denv env traitInfo =
let g = denv.g
- let (TTrait(tys, _, memFlags, _, _, _)) = traitInfo
+ let (TTrait(tys=tys;memberFlags=memFlags)) = traitInfo
let nm = traitInfo.MemberDisplayNameCore
let nameL = ConvertValLogicalNameToDisplayLayout false (tagMember >> wordL) nm
if denv.shortConstraints then
@@ -899,6 +943,16 @@ module PrintTypes =
| [] -> tcL
| [arg] -> layoutTypeWithInfoAndPrec denv env 2 arg ^^ tcL
| args -> bracketIfL (prec <= 1) (bracketL (layoutTypesWithInfoAndPrec denv env 2 SepL.comma args) --- tcL)
+
+ and layoutNullness (denv: DisplayEnv) part2 (nullness: Nullness) =
+ // Show nullness annotations unless explicitly turned off
+ if denv.showNullnessAnnotations <> Some false then
+ match nullness.Evaluate() with
+ | NullnessInfo.WithNull -> part2 ^^ wordL (tagText "| null")
+ | NullnessInfo.WithoutNull -> part2
+ | NullnessInfo.AmbivalentToNull -> part2 //^^ wordL (tagText "__maybenull")
+ else
+ part2
/// Layout a type, taking precedence into account to insert brackets where needed
and layoutTypeWithInfoAndPrec denv env prec ty =
@@ -919,50 +973,56 @@ module PrintTypes =
// Always prefer 'float' to 'float<1>'
| TType_app (tc, args, _) when tc.IsMeasureableReprTycon && List.forall (isDimensionless g) args ->
- layoutTypeWithInfoAndPrec denv env prec (reduceTyconRefMeasureableOrProvided g tc args)
+ layoutTypeWithInfoAndPrec denv env prec (reduceTyconRefMeasureableOrProvided g tc args)
// Layout a type application
- | TType_ucase (UnionCaseRef(tc, _), args)
- | TType_app (tc, args, _) ->
- let prefix = usePrefix denv tc
- let demangledCompilationPathOpt, args =
- if not denv.includeStaticParametersInTypeNames then
- None, args
- else
+ | TType_ucase (UnionCaseRef(tc, _), args) ->
+ let prefix = usePrefix denv tc
+ layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefImpl false denv tc None) prec prefix args
+ | TType_app (tc, args, nullness) ->
+ let prefix = usePrefix denv tc
+ let demangledCompilationPathOpt, args =
+ if not denv.includeStaticParametersInTypeNames then
+ None, args
+ else
#if FABLE_COMPILER
- let regex = System.Text.RegularExpressions.Regex(@"`\d+")
+ let regex = System.Text.RegularExpressions.Regex(@"`\d+")
#else
- let regex = System.Text.RegularExpressions.Regex(@"\`\d+")
+ let regex = System.Text.RegularExpressions.Regex(@"\`\d+")
#endif
- let path, skip =
- (0, tc.CompilationPath.DemangledPath)
- ||> List.mapFold (fun skip path ->
- // Verify the path does not contain a generic parameter count.
- // For example Foo`3 indicates that there are three parameters in args that belong to this path.
- let m = regex.Match(path)
- if not m.Success then
- path, skip
- else
- let take = m.Value.Replace("`", "") |> int
- let genericArgs =
- List.skip skip args
- |> List.take take
- |> List.map (layoutTypeWithInfoAndPrec denv env prec >> showL)
- |> String.concat ","
- |> sprintf "<%s>"
- String.Concat(path.Substring(0, m.Index), genericArgs), (skip + take)
- )
-
- Some path, List.skip skip args
-
- layoutTypeAppWithInfoAndPrec
- denv
- env
- (layoutTyconRefImpl false denv tc demangledCompilationPathOpt)
- prec
- prefix
- args
+ let path, skip =
+ (0, tc.CompilationPath.DemangledPath)
+ ||> List.mapFold (fun skip path ->
+ // Verify the path does not contain a generic parameter count.
+ // For example Foo`3 indicates that there are three parameters in args that belong to this path.
+ let m = regex.Match(path)
+ if not m.Success then
+ path, skip
+ else
+ let take = m.Value.Replace("`", "") |> int
+ let genericArgs =
+ List.skip skip args
+ |> List.take take
+ |> List.map (layoutTypeWithInfoAndPrec denv env prec >> showL)
+ |> String.concat ","
+ |> sprintf "<%s>"
+ String.Concat(path.Substring(0, m.Index), genericArgs), (skip + take)
+ )
+
+ Some path, List.skip skip args
+
+ let part1 =
+ layoutTypeAppWithInfoAndPrec
+ denv
+ env
+ (layoutTyconRefImpl false denv tc demangledCompilationPathOpt)
+ prec
+ prefix
+ args
+ let part2 = layoutNullness denv part1 nullness
+
+ part2
// Layout a tuple type
| TType_anon (anonInfo, tys) ->
let core = sepListL RightL.semicolon (List.map2 (fun nm ty -> wordL (tagField nm) ^^ RightL.colon ^^ layoutTypeWithInfoAndPrec denv env prec ty) (Array.toList anonInfo.SortedNames) tys)
@@ -987,16 +1047,20 @@ module PrintTypes =
| [h] -> layoutTyparRefWithInfo denv env h ^^ rightL dot --- tauL
| h :: t -> spaceListL (List.map (layoutTyparRefWithInfo denv env) (h :: t)) ^^ rightL dot --- tauL
- | TType_fun _ ->
+ | TType_fun (_, _, nullness) ->
let argTys, retTy = stripFunTy g ty
let retTyL = layoutTypeWithInfoAndPrec denv env 5 retTy
let argTysL = argTys |> List.map (layoutTypeWithInfoAndPrec denv env 4)
let funcTyL = curriedLayoutsL arrow argTysL retTyL
- bracketIfL (prec <= 4) funcTyL
+ let part1 = bracketIfL (prec <= 4) funcTyL
+ let part2 = layoutNullness denv part1 nullness
+ part2
// Layout a type variable .
- | TType_var (r, _) ->
- layoutTyparRefWithInfo denv env r
+ | TType_var (r, nullness) ->
+ let part1 = layoutTyparRefWithInfo denv env r
+ let part2 = layoutNullness denv part1 nullness
+ part2
| TType_measure unt -> layoutMeasure denv unt
@@ -1176,7 +1240,7 @@ module PrintTypes =
(nameL |> addColonL) ^^ tauL
/// layouts the elements of an unresolved overloaded method call:
- /// argInfos: unammed and named arguments
+ /// argInfos: unnamed and named arguments
/// retTy: return type
/// genParamTy: generic parameter types
let prettyLayoutsOfUnresolvedOverloading denv argInfos retTy genParamTys =
@@ -1193,7 +1257,7 @@ module PrintTypes =
// using 0, 1, 2 as discriminant for return, arguments and generic parameters
// respectively, in order to easily retrieve each of the types with their
// expected quality below.
- let typesWithDiscrimants =
+ let typesWithDiscriminants =
[
yield 0, retTy
for ty,_ in argInfos do
@@ -1201,14 +1265,14 @@ module PrintTypes =
for ty in genParamTys do
yield 2, ty
]
- let typesWithDiscrimants,typarsAndCxs = PrettyTypes.PrettifyDiscriminantAndTypePairs denv.g typesWithDiscrimants
- let retTy = typesWithDiscrimants |> List.find (function 0, _ -> true | _ -> false) |> snd
+ let typesWithDiscriminants,typarsAndCxs = PrettyTypes.PrettifyDiscriminantAndTypePairs denv.g typesWithDiscriminants
+ let retTy = typesWithDiscriminants |> List.find (function 0, _ -> true | _ -> false) |> snd
let argInfos =
- typesWithDiscrimants
+ typesWithDiscriminants
|> List.choose (function 1,ty -> Some ty | _ -> None)
|> List.map2 (fun (_, argInfo) tTy -> tTy, argInfo) argInfos
let genParamTys =
- typesWithDiscrimants
+ typesWithDiscriminants
|> List.choose (function 2,ty -> Some ty | _ -> None)
argInfos, retTy, genParamTys, typarsAndCxs
@@ -1262,12 +1326,12 @@ module PrintTastMemberOrVals =
open PrintTypes
let mkInlineL denv (v: Val) nameL =
- if v.MustInline && not denv.suppressInlineKeyword then
+ if v.ShouldInline && not denv.suppressInlineKeyword then
WordL.keywordInline ++ nameL
else
nameL
- let layoutMemberName (denv: DisplayEnv) (vref: ValRef) niceMethodTypars argInfos tagFunction name =
+ let layoutMemberName (denv: DisplayEnv) (vref: ValRef) niceMethodTypars argInfos tagFunction name withAccessibility =
let nameL = ConvertValLogicalNameToDisplayLayout vref.IsBaseVal (tagFunction >> mkNav vref.DefinitionRange >> wordL) name
let nameL =
if denv.showMemberContainers then
@@ -1289,10 +1353,11 @@ module PrintTastMemberOrVals =
layoutTyparDecls denv nameL true niceMethodTypars
else
nameL
- let nameL = layoutAccessibility denv vref.Accessibility nameL
- nameL
+ if withAccessibility then layoutAccessibility denv vref.Accessibility nameL
+ else nameL
let prettyLayoutOfMemberShortOption denv typarInst (v: Val) short =
+ let denv = suppressNullnessAnnotations denv
let vref = mkLocalValRef v
let membInfo = Option.get vref.MemberInfo
let stat = layoutMemberFlags membInfo.MemberFlags
@@ -1303,6 +1368,8 @@ module PrintTastMemberOrVals =
for _,info in argInfo do
info.Attribs <- []
info.Name <- None
+ let supportAccessModifiersBeforeGetSet =
+ denv.g.langVersion.SupportsFeature Features.LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters
let prettyTyparInst, memberL =
match membInfo.MemberFlags.MemberKind with
@@ -1311,7 +1378,7 @@ module PrintTastMemberOrVals =
let resL =
if short then tauL
else
- let nameL = layoutMemberName denv vref niceMethodTypars argInfos tagMember vref.DisplayNameCoreMangled
+ let nameL = layoutMemberName denv vref niceMethodTypars argInfos tagMember vref.DisplayNameCoreMangled true
let nameL = if short then nameL else mkInlineL denv vref.Deref nameL
stat --- ((nameL |> addColonL) ^^ tauL)
prettyTyparInst, resL
@@ -1330,14 +1397,19 @@ module PrintTastMemberOrVals =
emptyTyparInst, stat
| SynMemberKind.PropertyGet ->
+ let prefixAccessModifier, withGet =
+ if supportAccessModifiersBeforeGetSet then
+ false, WordL.keywordWith ^^ layoutAccessibilityCore denv vref.Accessibility ^^ wordL (tagText "get")
+ else
+ true, WordL.keywordWith ^^ wordL (tagText "get")
if isNil argInfos then
// use error recovery because intellisense on an incomplete file will show this
errorR(Error(FSComp.SR.tastInvalidFormForPropertyGetter(), vref.Id.idRange))
- let nameL = layoutMemberName denv vref [] argInfos tagProperty vref.DisplayNameCoreMangled
+ let nameL = layoutMemberName denv vref [] argInfos tagProperty vref.DisplayNameCoreMangled prefixAccessModifier
let nameL = if short then nameL else mkInlineL denv vref.Deref nameL
let resL =
- if short then nameL --- (WordL.keywordWith ^^ WordL.keywordGet)
- else stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordGet)
+ if short then nameL --- withGet
+ else stat --- nameL --- withGet
emptyTyparInst, resL
else
let argInfos =
@@ -1347,21 +1419,25 @@ module PrintTastMemberOrVals =
let prettyTyparInst, niceMethodTypars,tauL = prettyLayoutOfMemberType denv vref typarInst argInfos retTy
let resL =
if short then
- if isNil argInfos then tauL
- else tauL --- (WordL.keywordWith ^^ WordL.keywordGet)
+ tauL --- withGet
else
- let nameL = layoutMemberName denv vref niceMethodTypars argInfos tagProperty vref.DisplayNameCoreMangled
+ let nameL = layoutMemberName denv vref niceMethodTypars argInfos tagProperty vref.DisplayNameCoreMangled prefixAccessModifier
let nameL = if short then nameL else mkInlineL denv vref.Deref nameL
- stat --- ((nameL |> addColonL) ^^ (if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet)))
+ stat --- ((nameL |> addColonL) ^^ (if isNil argInfos && not supportAccessModifiersBeforeGetSet then tauL else tauL --- withGet))
prettyTyparInst, resL
| SynMemberKind.PropertySet ->
+ let prefixAccessModifier, withSet =
+ if supportAccessModifiersBeforeGetSet then
+ false, WordL.keywordWith ^^ layoutAccessibilityCore denv vref.Accessibility ^^ wordL (tagText "set")
+ else
+ true, WordL.keywordWith ^^ wordL (tagText "set")
if argInfos.Length <> 1 || isNil argInfos.Head then
// use error recovery because intellisense on an incomplete file will show this
errorR(Error(FSComp.SR.tastInvalidFormForPropertySetter(), vref.Id.idRange))
- let nameL = layoutMemberName denv vref [] argInfos tagProperty vref.DisplayNameCoreMangled
+ let nameL = layoutMemberName denv vref [] argInfos tagProperty vref.DisplayNameCoreMangled prefixAccessModifier
let nameL = if short then nameL else mkInlineL denv vref.Deref nameL
- let resL = stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordSet)
+ let resL = stat --- nameL --- withSet
emptyTyparInst, resL
else
let curriedArgInfos = argInfos
@@ -1369,11 +1445,11 @@ module PrintTastMemberOrVals =
let prettyTyparInst, niceMethodTypars, tauL = prettyLayoutOfMemberType denv vref typarInst (if isNil argInfos then [] else [argInfos]) (fst valueInfo)
let resL =
if short then
- (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))
+ (tauL --- withSet)
else
- let nameL = layoutMemberName denv vref niceMethodTypars curriedArgInfos tagProperty vref.DisplayNameCoreMangled
+ let nameL = layoutMemberName denv vref niceMethodTypars curriedArgInfos tagProperty vref.DisplayNameCoreMangled prefixAccessModifier
let nameL = if short then nameL else mkInlineL denv vref.Deref nameL
- stat --- ((nameL |> addColonL) ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet)))
+ stat --- ((nameL |> addColonL) ^^ (tauL --- withSet))
prettyTyparInst, resL
prettyTyparInst, memberL
@@ -1615,22 +1691,46 @@ module InfoMemberPrinting =
let idL = ConvertValLogicalNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName
SepL.dot ^^
PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars ^^
- SepL.leftParen
+ SepL.leftParen
+
+ let layout,paramLayouts =
+ match denv.showCsharpCodeAnalysisAttributes, minfo with
+ | true, ILMeth(_g,mi,_e) ->
+ let methodLayout =
+ // Render Method attributes and [return:..] attributes on separate lines above (@@) the method definition
+ PrintTypes.layoutCsharpCodeAnalysisIlAttributes denv (minfo.GetCustomAttrs()) (squareAngleL >> (@@)) layout
+ |> PrintTypes.layoutCsharpCodeAnalysisIlAttributes denv (mi.RawMetadata.Return.CustomAttrs) (squareAngleReturn >> (@@))
+ let paramLayouts =
+ minfo.GetParamDatas (amap, m, minst)
+ |> List.map (List.map fst)
+ |> List.head
+ |> List.zip (mi.ParamMetadata)
+ |> List.map(fun (ilParams,paramData) ->
+ layoutParamData denv paramData
+ // Render parameter attributes next to (^^) the parameter definition
+ |> PrintTypes.layoutCsharpCodeAnalysisIlAttributes denv (ilParams.CustomAttrs) (squareAngleL >> (^^)) )
+ methodLayout,paramLayouts
+ | _ ->
+ layout,
+ minfo.GetParamDatas (amap, m, minst)
+ |> List.map (List.map fst)
+ |> List.concat
+ |> List.map (layoutParamData denv)
- let paramDatas = minfo.GetParamDatas (amap, m, minst) |> List.map (List.map fst)
- let layout = layout ^^ sepListL RightL.comma ((List.concat >> List.map (layoutParamData denv)) paramDatas)
- layout ^^ RightL.rightParen ^^ WordL.colon ^^ PrintTypes.layoutType denv retTy
+
+ let layout = layout ^^ sepListL RightL.comma paramLayouts
+ layout ^^ RightL.rightParen ^^ WordL.colon ^^ PrintTypes.layoutType denv retTy // Todo enrich return type
// Prettify an ILMethInfo
let prettifyILMethInfo (amap: Import.ImportMap) m (minfo: MethInfo) typarInst ilMethInfo =
- let (ILMethInfo(_, apparentTy, dty, mdef, _)) = ilMethInfo
- let (prettyTyparInst, prettyTys), _ = PrettyTypes.PrettifyInstAndTypes amap.g (typarInst, (apparentTy :: minfo.FormalMethodInst))
+ let (ILMethInfo(_, methodsType, mdef, _)) = ilMethInfo
+ let (prettyTyparInst, prettyTys), _ = PrettyTypes.PrettifyInstAndTypes amap.g (typarInst, (methodsType.ToType :: minfo.FormalMethodInst))
match prettyTys with
| prettyApparentTy :: prettyFormalMethInst ->
let prettyMethInfo =
- match dty with
- | None -> MethInfo.CreateILMeth (amap, m, prettyApparentTy, mdef)
- | Some declaringTyconRef -> MethInfo.CreateILExtensionMeth(amap, m, prettyApparentTy, declaringTyconRef, minfo.ExtensionMemberPriorityOption, mdef)
+ match methodsType with
+ | IlType _ -> MethInfo.CreateILMeth (amap, m, prettyApparentTy, mdef)
+ | CSharpStyleExtension(declaring=declaringTyconRef) -> MethInfo.CreateILExtensionMeth(amap, m, prettyApparentTy, declaringTyconRef, minfo.ExtensionMemberPriorityOption, mdef)
prettyTyparInst, prettyMethInfo, prettyFormalMethInst
| _ -> failwith "prettifyILMethInfo - prettyTys empty"
@@ -1655,7 +1755,7 @@ module InfoMemberPrinting =
//
// For C# extension members:
// ApparentContainer.Method(argName1: argType1, ..., argNameN: argTypeN) : retType
- let prettyLayoutOfMethInfoFreeStyle (infoReader: InfoReader) m denv typarInst methInfo =
+ let rec prettyLayoutOfMethInfoFreeStyle (infoReader: InfoReader) m denv typarInst methInfo =
let amap = infoReader.amap
match methInfo with
@@ -1666,6 +1766,12 @@ module InfoMemberPrinting =
| FSMeth(_, _, vref, _) ->
let prettyTyparInst, resL = PrintTastMemberOrVals.prettyLayoutOfValOrMember { denv with showMemberContainers=true } infoReader typarInst vref
prettyTyparInst, resL
+ | MethInfoWithModifiedReturnType(ILMeth(_, ilminfo, _) as wrappedInfo,retTy) ->
+ let prettyTyparInst, prettyMethInfo, minst = prettifyILMethInfo amap m wrappedInfo typarInst ilminfo
+ let prettyMethInfo = MethInfoWithModifiedReturnType(prettyMethInfo,retTy)
+ let resL = layoutMethInfoCSharpStyle amap m denv prettyMethInfo minst
+ prettyTyparInst, resL
+ | MethInfoWithModifiedReturnType(mi,_) -> prettyLayoutOfMethInfoFreeStyle infoReader m denv typarInst mi
| ILMeth(_, ilminfo, _) ->
let prettyTyparInst, prettyMethInfo, minst = prettifyILMethInfo amap m methInfo typarInst ilminfo
let resL = layoutMethInfoCSharpStyle amap m denv prettyMethInfo minst
@@ -1681,14 +1787,20 @@ module InfoMemberPrinting =
let retTy = if pinfo.IsIndexer then mkFunTy g (mkRefTupledTy g (pinfo.GetParamTypes(amap, m))) retTy else retTy
let retTy, _ = PrettyTypes.PrettifyType g retTy
let nameL = ConvertValLogicalNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName
+ let struct(isGetterProtect, isSetterProtect) = pinfo.IsProtectedAccessibility
+ let getterAccess, setterAccess =
+ if denv.g.langVersion.SupportsFeature Features.LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters then
+ PrintTypes.layoutAccessibilityCoreWithProtected denv isGetterProtect (Option.defaultValue taccessPublic pinfo.GetterAccessibility),
+ PrintTypes.layoutAccessibilityCoreWithProtected denv isSetterProtect (Option.defaultValue taccessPublic pinfo.SetterAccessibility)
+ else emptyL, emptyL
let getterSetter =
match pinfo.HasGetter, pinfo.HasSetter with
| true, false ->
- WordL.keywordWith ^^ WordL.keywordGet
+ WordL.keywordWith ^^ getterAccess ^^ wordL (tagText "get")
| false, true ->
- WordL.keywordWith ^^ WordL.keywordSet
+ WordL.keywordWith ^^ setterAccess ^^ wordL (tagText "set")
| true, true ->
- WordL.keywordWith ^^ wordL (tagText "get, set")
+ WordL.keywordWith ^^ getterAccess ^^ wordL (tagText "get") ^^ RightL.comma ++ setterAccess ^^ wordL (tagText "set")
| false, false ->
emptyL
@@ -1825,14 +1937,11 @@ module TastDefinitionPrinting =
let layoutPropInfo denv (infoReader: InfoReader) m (pinfo: PropInfo) : Layout list =
let amap = infoReader.amap
- let isPublicGetterSetter (getter: MethInfo) (setter: MethInfo) =
- let isPublicAccess access = access = TAccess []
- match getter.ArbitraryValRef, setter.ArbitraryValRef with
- | Some gRef, Some sRef -> isPublicAccess gRef.Accessibility && isPublicAccess sRef.Accessibility
- | _ -> false
-
+ let supportAccessModifiersBeforeGetSet =
+ denv.g.langVersion.SupportsFeature Features.LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters
+
match pinfo.ArbitraryValRef with
- | Some vref ->
+ | Some vref when not supportAccessModifiersBeforeGetSet ->
match pinfo with
| DifferentGetterAndSetter(getValRef, setValRef) ->
let getSuffix = if pinfo.IsIndexer then emptyL else WordL.keywordWith ^^ WordL.keywordGet
@@ -1841,11 +1950,37 @@ module TastDefinitionPrinting =
PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader setValRef
]
| _ ->
+ let isPublicGetterSetter (getter: MethInfo) (setter: MethInfo) =
+ let isPublicAccess access = access = TAccess []
+ match getter.ArbitraryValRef, setter.ArbitraryValRef with
+ | Some gRef, Some sRef -> isPublicAccess gRef.Accessibility && isPublicAccess sRef.Accessibility
+ | _ -> false
+
let propL = PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader vref
- if pinfo.HasGetter && pinfo.HasSetter && not pinfo.IsIndexer && isPublicGetterSetter pinfo.GetterMethod pinfo.SetterMethod then
+ if pinfo.HasGetter && pinfo.HasSetter && not pinfo.IsIndexer && isPublicGetterSetter pinfo.GetterMethod pinfo.SetterMethod then
[ propL ^^ WordL.keywordWith ^^ wordL (tagText "get, set") ]
else
[ propL ]
+
+ | Some vref ->
+ let propL = PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader vref
+ if pinfo.HasGetter && pinfo.HasSetter then
+ let rec ``replace 'with'`` layout newLayout =
+ match layout with
+ | Node(Leaf (text = text), _, _) when text.Text = "with" -> newLayout
+ | Node(l, r, i) -> Node(l, ``replace 'with'`` r newLayout , i)
+ | Attr(text, attr, l) -> Attr(text, attr, ``replace 'with'`` l newLayout )
+ | Leaf _
+ | ObjLeaf _ -> layout
+
+ let getterAccess, setterAccess =
+ pinfo.GetterMethod.ArbitraryValRef |> Option.map _.Accessibility |> Option.defaultValue taccessPublic,
+ pinfo.SetterMethod.ArbitraryValRef |> Option.map _.Accessibility |> Option.defaultValue taccessPublic
+ let getSet =
+ WordL.keywordWith ^^ layoutAccessibilityCore denv getterAccess ^^ wordL (tagText "get") ^^ RightL.comma --- layoutAccessibilityCore denv setterAccess ^^ wordL (tagText "set")
+ [ ``replace 'with'`` propL getSet ]
+ else
+ [ propL ]
| None ->
let modifierAndMember =
@@ -1917,9 +2052,10 @@ module TastDefinitionPrinting =
match vrefOpt with
| None -> true
| Some vref ->
+ (not vref.IsCompilerGenerated) &&
(denv.showObsoleteMembers || not (CheckFSharpAttributesForObsolete denv.g vref.Attribs)) &&
(denv.showHiddenMembers || not (CheckFSharpAttributesForHidden denv.g vref.Attribs))
-
+
let ctors =
GetIntrinsicConstructorInfosOfType infoReader m ty
|> List.filter (fun minfo -> IsMethInfoAccessible amap m ad minfo && not minfo.IsClassConstructor && shouldShow minfo.ArbitraryValRef)
@@ -1931,7 +2067,7 @@ module TastDefinitionPrinting =
tycon.ImmediateInterfacesOfFSharpTycon
|> List.filter (fun (_, compgen, _) -> not compgen)
|> List.map p13
- else
+ else
GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m ty
let iimplsLs =
@@ -2065,7 +2201,7 @@ module TastDefinitionPrinting =
let inherits =
[ if not (suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty) then
match GetSuperTypeOfType g amap m ty with
- | Some superTy when not (isObjTy g superTy) && not (isValueTypeTy g superTy) ->
+ | Some superTy when not (isObjTyAnyNullness g superTy) && not (isValueTypeTy g superTy) ->
superTy
| _ -> ()
]
@@ -2754,6 +2890,8 @@ let prettyLayoutOfInstAndSig denv x = PrintTypes.prettyLayoutOfInstAndSig denv x
let minimalStringsOfTwoTypes denv ty1 ty2 =
let (ty1, ty2), tpcs = PrettyTypes.PrettifyTypePair denv.g (ty1, ty2)
+ let denv = suppressNullnessAnnotations denv
+
// try denv + no type annotations
let attempt1 =
let denv = { denv with showInferenceTyparAnnotations=false; showStaticallyResolvedTyparAnnotations=false }
@@ -2776,6 +2914,7 @@ let minimalStringsOfTwoTypes denv ty1 ty2 =
| Some res -> res
| None ->
+ // try denv
let attempt3 =
let min1 = stringOfTy denv ty1
let min2 = stringOfTy denv ty2
@@ -2801,13 +2940,14 @@ let minimalStringsOfTwoTypes denv ty1 ty2 =
let denv = denv.SetOpenPaths []
let denv = { denv with includeStaticParametersInTypeNames=true }
let makeName t =
- let assemblyName = PrintTypes.layoutAssemblyName denv t |> function | null | "" -> "" | name -> sprintf " (%s)" name
+ let assemblyName = PrintTypes.layoutAssemblyName denv t |> function Null | NonNull "" -> "" | NonNull name -> sprintf " (%s)" name
sprintf "%s%s" (stringOfTy denv t) assemblyName
(makeName ty1, makeName ty2, stringOfTyparConstraints denv tpcs)
// Note: Always show imperative annotations when comparing value signatures
let minimalStringsOfTwoValues denv infoReader vref1 vref2 =
+ let denv = suppressNullnessAnnotations denv
let denvMin = { denv with showInferenceTyparAnnotations=true; showStaticallyResolvedTyparAnnotations=false }
let min1 = buildString (fun buf -> outputQualifiedValOrMember denvMin infoReader buf vref1)
let min2 = buildString (fun buf -> outputQualifiedValOrMember denvMin infoReader buf vref2)
@@ -2821,5 +2961,9 @@ let minimalStringsOfTwoValues denv infoReader vref1 vref2 =
let minimalStringOfType denv ty =
let ty, _cxs = PrettyTypes.PrettifyType denv.g ty
+ let denv = suppressNullnessAnnotations denv
let denvMin = { denv with showInferenceTyparAnnotations=false; showStaticallyResolvedTyparAnnotations=false }
showL (PrintTypes.layoutTypeWithInfoAndPrec denvMin SimplifyTypes.typeSimplificationInfo0 2 ty)
+
+let minimalStringOfTypeWithNullness denv ty =
+ minimalStringOfType {denv with showNullnessAnnotations = Some true} ty
diff --git a/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi b/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi
index 84dabb2c95..8b90e66ce9 100644
--- a/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi
@@ -173,3 +173,5 @@ val minimalStringsOfTwoValues:
denv: DisplayEnv -> infoReader: InfoReader -> vref1: ValRef -> vref2: ValRef -> string * string
val minimalStringOfType: denv: DisplayEnv -> ty: TType -> string
+
+val minimalStringOfTypeWithNullness: denv: DisplayEnv -> ty: TType -> string
diff --git a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs
index 33c93e6e36..7fc4a4dcb1 100644
--- a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs
+++ b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs
@@ -26,6 +26,7 @@ open FSharp.Compiler.TypeRelations
#if !FABLE_COMPILER
open type System.MemoryExtensions
#endif
+open Import
exception MatchIncomplete of bool * (string * bool) option * range
exception RuleNeverMatched of range
@@ -45,7 +46,7 @@ type Pattern =
| TPat_as of Pattern * PatternValBinding * range (* note: can be replaced by TPat_var, i.e. equals TPat_conjs([TPat_var; pat]) *)
| TPat_disjs of Pattern list * range
| TPat_conjs of Pattern list * range
- | TPat_query of (Expr * TType list * bool * (ValRef * TypeInst) option * int * ActivePatternInfo) * Pattern * range
+ | TPat_query of (Expr * TType list * ActivePatternReturnKind * (ValRef * TypeInst) option * int * ActivePatternInfo) * Pattern * range
| TPat_unioncase of UnionCaseRef * TypeInst * Pattern list * range
| TPat_exnconstr of TyconRef * Pattern list * range
| TPat_tuple of TupInfo * Pattern list * TType list * range
@@ -473,7 +474,7 @@ let computeWhatSuccessfulNullTestImpliesAboutTypeTest g tgtTy2 =
Implication.Fails
/// Work out what a failing null test implies about a type test (against tgtTy2) for the same
-/// input balue. The answer is "nothing" but it's included for symmetry.
+/// input value. The answer is "nothing" but it's included for symmetry.
let computeWhatFailingNullTestImpliesAboutTypeTest _g _tgtTy2 =
Implication.Nothing
@@ -511,7 +512,7 @@ let computeWhatSuccessfulTypeTestImpliesAboutTypeTest g amap m tgtTy1 tgtTy2 =
// For any inputs where ':? int' succeeds, ':? string' will fail
//
//
- // This only applies if tgtTy2 is not potetnially related to the sealed type tgtTy1:
+ // This only applies if tgtTy2 is not potentially related to the sealed type tgtTy1:
// match x with
// | :? int when false -> ... // note: "when false" used so type test succeeds but proceed to next type test
// | :? IComparable -> ...
@@ -613,15 +614,15 @@ let getDiscrimOfPattern (g: TcGlobals) tpinst t =
| TPat_isinst (srcTy, tgtTy, _, _m) ->
Some(DecisionTreeTest.IsInst (instType tpinst srcTy, instType tpinst tgtTy))
| TPat_exnconstr(tcref, _, _m) ->
- Some(DecisionTreeTest.IsInst (g.exn_ty, mkAppTy tcref []))
+ Some(DecisionTreeTest.IsInst (g.exn_ty, mkWoNullAppTy tcref []))
| TPat_const (c, _m) ->
Some(DecisionTreeTest.Const c)
| TPat_unioncase (c, tyargs', _, _m) ->
Some(DecisionTreeTest.UnionCase (c, instTypes tpinst tyargs'))
| TPat_array (args, ty, _m) ->
Some(DecisionTreeTest.ArrayLength (args.Length, ty))
- | TPat_query ((activePatExpr, resTys, isStructRetTy, apatVrefOpt, idx, apinfo), _, _m) ->
- Some (DecisionTreeTest.ActivePatternCase (activePatExpr, instTypes tpinst resTys, isStructRetTy, apatVrefOpt, idx, apinfo))
+ | TPat_query ((activePatExpr, resTys, retKind, apatVrefOpt, idx, apinfo), _, _m) ->
+ Some (DecisionTreeTest.ActivePatternCase (activePatExpr, instTypes tpinst resTys, retKind, apatVrefOpt, idx, apinfo))
| TPat_error range ->
Some (DecisionTreeTest.Error range)
@@ -737,24 +738,7 @@ let ChooseInvestigationPointLeftToRight frontiers =
| [] -> failwith "ChooseInvestigationPointLeftToRight: no frontiers!"
-
-#if OPTIMIZE_LIST_MATCHING
-// This is an initial attempt to remove extra typetests/castclass for simple list pattern matching "match x with h :: t -> ... | [] -> ..."
-// The problem with this technique is that it creates extra locals which inhibit the process of converting pattern matches into linear let bindings.
-
-let (|ListConsDiscrim|_|) g = function
- | (DecisionTreeTest.UnionCase (ucref, tinst))
- (* check we can use a simple 'isinst' instruction *)
- when tyconRefEq g ucref.TyconRef g.list_tcr_canon & ucref.CaseName = "op_ColonColon" -> Some tinst
- | _ -> None
-
-let (|ListEmptyDiscrim|_|) g = function
- | (DecisionTreeTest.UnionCase (ucref, tinst))
- (* check we can use a simple 'isinst' instruction *)
- when tyconRefEq g ucref.TyconRef g.list_tcr_canon & ucref.CaseName = "op_Nil" -> Some tinst
- | _ -> None
-#endif
-
+[]
let (|ConstNeedsDefaultCase|_|) c =
match c with
| Const.Decimal _
@@ -769,8 +753,8 @@ let (|ConstNeedsDefaultCase|_|) c =
| Const.UInt64 _
| Const.IntPtr _
| Const.UIntPtr _
- | Const.Char _ -> Some ()
- | _ -> None
+ | Const.Char _ -> ValueSome ()
+ | _ -> ValueNone
/// Build a dtree, equivalent to: TDSwitch("expr", edges, default, m)
///
@@ -809,17 +793,6 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m =
| TCase((DecisionTreeTest.IsNull | DecisionTreeTest.IsInst _), _) as edge :: edges, dflt ->
TDSwitch(expr, [edge], Some (BuildSwitch None g expr edges dflt m), m)
-#if OPTIMIZE_LIST_MATCHING
- // 'cons/nil' tests where we have stored the result of the cons test in an 'isinst' in a variable
- // In this case the 'expr' already holds the result of the 'isinst' test.
- | [TCase(ListConsDiscrim g tinst, consCase)], Some emptyCase
- | [TCase(ListEmptyDiscrim g tinst, emptyCase)], Some consCase
- | [TCase(ListEmptyDiscrim g _, emptyCase); TCase(ListConsDiscrim g tinst, consCase)], None
- | [TCase(ListConsDiscrim g tinst, consCase); TCase(ListEmptyDiscrim g _, emptyCase)], None
- when Option.isSome inpExprOpt ->
- TDSwitch(expr, [TCase(DecisionTreeTest.IsNull, emptyCase)], Some consCase, m)
-#endif
-
// All these should also always have default cases
| TCase(DecisionTreeTest.Const ConstNeedsDefaultCase, _) :: _, None ->
error(InternalError("inexhaustive match - need a default case!", m))
@@ -944,8 +917,8 @@ let rec investigationPoints inpPat =
let rec erasePartialPatterns inpPat =
match inpPat with
- | TPat_query ((expr, resTys, isStructRetTy, apatVrefOpt, idx, apinfo), p, m) ->
- if apinfo.IsTotal then TPat_query ((expr, resTys, isStructRetTy, apatVrefOpt, idx, apinfo), erasePartialPatterns p, m)
+ | TPat_query ((expr, resTys, retKind, apatVrefOpt, idx, apinfo), p, m) ->
+ if apinfo.IsTotal then TPat_query ((expr, resTys, retKind, apatVrefOpt, idx, apinfo), erasePartialPatterns p, m)
else TPat_disjs ([], m) (* always fail *)
| TPat_as (p, x, m) -> TPat_as (erasePartialPatterns p, x, m)
| TPat_disjs (subPats, m) -> TPat_disjs(erasePartials subPats, m)
@@ -1275,36 +1248,22 @@ let CompilePatternBasic
AdjustValToHaveValReprInfo v origInputVal.TryDeclaringEntity ValReprInfo.emptyValData
Some addrExp, Some (mkInvisibleBind v e)
-
-
-#if OPTIMIZE_LIST_MATCHING
- | [EdgeDiscrim(_, ListConsDiscrim g tinst, m); EdgeDiscrim(_, ListEmptyDiscrim g _, _)]
- | [EdgeDiscrim(_, ListEmptyDiscrim g _, _); EdgeDiscrim(_, ListConsDiscrim g tinst, m)]
- | [EdgeDiscrim(_, ListConsDiscrim g tinst, m)]
- | [EdgeDiscrim(_, ListEmptyDiscrim g tinst, m)]
- (* check we can use a simple 'isinst' instruction *)
- when isNil origInputValTypars ->
-
- let ucaseTy = (mkProvenUnionCaseTy g.cons_ucref tinst)
- let v, vExpr = mkCompGenLocal m "unionTestResult" ucaseTy
- if origInputVal.IsMemberOrModuleBinding then
- AdjustValToHaveValReprInfo v origInputVal.DeclaringEntity ValReprInfo.emptyValData
- let argExpr = GetSubExprOfInput subexpr
- let appExpr = mkIsInst ucaseTy argExpr mMatch
- Some vExpr, Some (mkInvisibleBind v appExpr)
-#endif
-
// Active pattern matches: create a variable to hold the results of executing the active pattern.
// If a struct return we continue with an expression for taking the address of that location.
- | EdgeDiscrim(_, DecisionTreeTest.ActivePatternCase(activePatExpr, resTys, isStructRetTy, _apatVrefOpt, _, apinfo), m) :: _ ->
+ | EdgeDiscrim(_, DecisionTreeTest.ActivePatternCase(activePatExpr, resTys, retKind, _apatVrefOpt, _, apinfo), m) :: _ ->
if not (isNil origInputValTypars) then error(InternalError("Unexpected generalized type variables when compiling an active pattern", m))
- let resTy = apinfo.ResultType g m resTys isStructRetTy
+ let resTy = apinfo.ResultType g m resTys retKind
let argExpr = GetSubExprOfInput subexpr
let appExpr = mkApps g ((activePatExpr, tyOfExpr g activePatExpr), [], [argExpr], m)
- let vOpt, addrExp, _readonly, _writeonly = mkExprAddrOfExprAux g isStructRetTy false NeverMutates appExpr None mMatch
+ let mustTakeAddress =
+ match retKind with
+ | ActivePatternReturnKind.StructTypeWrapper -> true
+ | ActivePatternReturnKind.RefTypeWrapper
+ | ActivePatternReturnKind.Boolean -> false
+ let vOpt, addrExp, _readonly, _writeonly = mkExprAddrOfExprAux g mustTakeAddress false NeverMutates appExpr None mMatch
match vOpt with
| None ->
let v, vExpr = mkCompGenLocal m ("activePatternResult" + string (newUnique())) resTy
@@ -1341,9 +1300,6 @@ let CompilePatternBasic
let resPostBindOpt, ucaseBindOpt =
match discrim with
| DecisionTreeTest.UnionCase (ucref, tinst) when
-#if OPTIMIZE_LIST_MATCHING
- isNone inpExprOpt &&
-#endif
(isNil origInputValTypars &&
not origInputVal.IsMemberOrModuleBinding &&
not ucref.Tycon.IsStructRecordOrUnionTycon &&
@@ -1360,13 +1316,17 @@ let CompilePatternBasic
// Convert active pattern edges to tests on results data
let discrim' =
match discrim with
- | DecisionTreeTest.ActivePatternCase(_pexp, resTys, isStructRetTy, _apatVrefOpt, idx, apinfo) ->
+ | DecisionTreeTest.ActivePatternCase(_pexp, resTys, retKind, _apatVrefOpt, idx, apinfo) ->
let aparity = apinfo.ActiveTags.Length
let total = apinfo.IsTotal
if not total && aparity > 1 then
error(Error(FSComp.SR.patcPartialActivePatternsGenerateOneResult(), m))
- if not total then DecisionTreeTest.UnionCase(mkAnySomeCase g isStructRetTy, resTys)
+ if not total then
+ match retKind with
+ | ActivePatternReturnKind.Boolean -> DecisionTreeTest.Const(Const.Bool true)
+ | ActivePatternReturnKind.RefTypeWrapper -> DecisionTreeTest.UnionCase(mkAnySomeCase g false, resTys)
+ | ActivePatternReturnKind.StructTypeWrapper -> DecisionTreeTest.UnionCase(mkAnySomeCase g true, resTys)
elif aparity <= 1 then DecisionTreeTest.Const(Const.Unit)
else DecisionTreeTest.UnionCase(mkChoiceCaseRef g m aparity idx, resTys)
| _ -> discrim
@@ -1438,7 +1398,7 @@ let CompilePatternBasic
let newActives = removeActive path actives
match patAtActive with
| TPat_wild _ | TPat_as _ | TPat_tuple _ | TPat_disjs _ | TPat_conjs _ | TPat_recd _ -> failwith "Unexpected projection pattern"
- | TPat_query ((_, resTys, isStructRetTy, apatVrefOpt, idx, apinfo), p, m) ->
+ | TPat_query ((_, resTys, retKind, apatVrefOpt, idx, apinfo), p, m) ->
if apinfo.IsTotal then
// Total active patterns always return choice values
let hasParam = (match apatVrefOpt with None -> true | Some (vref, _) -> doesActivePatternHaveFreeTypars g vref)
@@ -1466,10 +1426,12 @@ let CompilePatternBasic
if i = iInvestigated then
let subAccess _j tpinst _ =
let expr = Option.get inpExprOpt
- if isStructRetTy then
+ match retKind with
+ | ActivePatternReturnKind.Boolean -> expr
+ | ActivePatternReturnKind.StructTypeWrapper ->
// In this case, the inpExprOpt is already an address-of expression
mkUnionCaseFieldGetProvenViaExprAddr (expr, mkValueSomeCase g, instTypes tpinst resTys, 0, mExpr)
- else
+ | ActivePatternReturnKind.RefTypeWrapper ->
mkUnionCaseFieldGetUnprovenViaExprAddr (expr, mkSomeCase g, instTypes tpinst resTys, 0, mExpr)
mkSubFrontiers path subAccess newActives [p] (fun path j -> PathQuery(path, int64 j))
else
@@ -1512,7 +1474,7 @@ let CompilePatternBasic
| TPat_exnconstr (ecref, argpats, _) ->
let srcTy1 = g.exn_ty
- let tgtTy1 = mkAppTy ecref []
+ let tgtTy1 = mkWoNullAppTy ecref []
if taken |> List.exists (discrimsEq g (DecisionTreeTest.IsInst (srcTy1, tgtTy1))) then [] else
match discrim with
diff --git a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi
index 5b2d94c8ff..b4d68aa320 100644
--- a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi
@@ -27,7 +27,10 @@ type Pattern =
| TPat_as of Pattern * PatternValBinding * range
| TPat_disjs of Pattern list * range
| TPat_conjs of Pattern list * range
- | TPat_query of (Expr * TType list * bool * (ValRef * TypeInst) option * int * ActivePatternInfo) * Pattern * range
+ | TPat_query of
+ (Expr * TType list * ActivePatternReturnKind * (ValRef * TypeInst) option * int * ActivePatternInfo) *
+ Pattern *
+ range
| TPat_unioncase of UnionCaseRef * TypeInst * Pattern list * range
| TPat_exnconstr of TyconRef * Pattern list * range
| TPat_tuple of TupInfo * Pattern list * TType list * range
diff --git a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs
index a4963093ed..99a8e89356 100644
--- a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs
+++ b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs
@@ -28,6 +28,7 @@ open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.TypeHierarchy
open FSharp.Compiler.TypeRelations
+open Import
//--------------------------------------------------------------------------
// NOTES: reraise safety checks
@@ -334,7 +335,20 @@ let RecordAnonRecdInfo cenv (anonInfo: AnonRecdTypeInfo) =
// approx walk of type
//--------------------------------------------------------------------------
-let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, visitTraitSolutionOpt, visitTyparOpt as f) (g: TcGlobals) env isInner ty =
+/// Represents the container for nester type instantions, carrying information about the parent (generic type) and data about correspinding generic typar definition.
+/// For current use, IlGenericParameterDef was enough. For other future use cases, conversion into F# Typar might be needed.
+type TypeInstCtx =
+ | NoInfo
+ | IlGenericInst of parent:TyconRef * genericArg:ILGenericParameterDef
+ | TyparInst of parent:TyconRef
+ | TopLevelAllowingByRef
+
+ with member x.TyparAllowsRefStruct() =
+ match x with
+ | IlGenericInst(_,ilTypar) -> ilTypar.HasAllowsRefStruct
+ | _ -> false
+
+let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, visitTraitSolutionOpt, visitTyparOpt as f) (g: TcGlobals) env (typeInstParentOpt:TypeInstCtx) ty =
// We iterate the _solved_ constraints as well, to pick up any record of trait constraint solutions
// This means we walk _all_ the constraints _everywhere_ in a type, including
// those attached to _solved_ type variables. This is used by PostTypeCheckSemanticChecks to detect uses of
@@ -346,7 +360,7 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi
| TType_var (tp, _) when tp.Solution.IsSome ->
for cx in tp.Constraints do
match cx with
- | TyparConstraint.MayResolveMember(TTrait(_, _, _, _, _, soln), _) ->
+ | TyparConstraint.MayResolveMember(TTrait(solution=soln), _) ->
match visitTraitSolutionOpt, soln.Value with
| Some visitTraitSolution, Some sln -> visitTraitSolution sln
| _ -> ()
@@ -366,22 +380,30 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi
match ty with
| TType_forall (tps, body) ->
let env = BindTypars g env tps
- CheckTypeDeep cenv f g env isInner body
+ CheckTypeDeep cenv f g env typeInstParentOpt body
tps |> List.iter (fun tp -> tp.Constraints |> List.iter (CheckTypeConstraintDeep cenv f g env))
| TType_measure _ -> ()
| TType_app (tcref, tinst, _) ->
match visitTyconRefOpt with
- | Some visitTyconRef -> visitTyconRef isInner tcref
+ | Some visitTyconRef -> visitTyconRef typeInstParentOpt tcref
| None -> ()
// If it's a 'byref<'T>', don't check 'T as an inner. This allows byref>.
// 'byref>' is invalid and gets checked in visitAppTy.
- if isByrefTyconRef g tcref then
- CheckTypesDeepNoInner cenv f g env tinst
+ //if isByrefTyconRef g tcref then
+ // CheckTypesDeepNoInner cenv f g env tinst
+
+ if tcref.CanDeref && tcref.IsILTycon && tinst.Length = tcref.ILTyconRawMetadata.GenericParams.Length then
+ (tinst,tcref.ILTyconRawMetadata.GenericParams)
+ ||> List.iter2 (fun ty ilGenericParam ->
+ let typeInstParent = IlGenericInst(tcref, ilGenericParam)
+ CheckTypeDeep cenv f g env typeInstParent ty)
else
- CheckTypesDeep cenv f g env tinst
+ let parentRef = TyparInst(tcref)
+ for ty in tinst do
+ CheckTypeDeep cenv f g env parentRef ty
match visitAppTyOpt with
| Some visitAppTy -> visitAppTy (tcref, tinst)
@@ -398,8 +420,8 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi
CheckTypesDeep cenv f g env tys
| TType_fun (s, t, _) ->
- CheckTypeDeep cenv f g env true s
- CheckTypeDeep cenv f g env true t
+ CheckTypeDeep cenv f g env NoInfo s
+ CheckTypeDeep cenv f g env NoInfo t
| TType_var (tp, _) ->
if not tp.IsSolved then
@@ -410,43 +432,41 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi
and CheckTypesDeep cenv f g env tys =
for ty in tys do
- CheckTypeDeep cenv f g env true ty
-
-and CheckTypesDeepNoInner cenv f g env tys =
- for ty in tys do
- CheckTypeDeep cenv f g env false ty
+ CheckTypeDeep cenv f g env NoInfo ty
and CheckTypeConstraintDeep cenv f g env x =
match x with
- | TyparConstraint.CoercesTo(ty, _) -> CheckTypeDeep cenv f g env true ty
+ | TyparConstraint.CoercesTo(ty, _) -> CheckTypeDeep cenv f g env NoInfo ty
| TyparConstraint.MayResolveMember(traitInfo, _) -> CheckTraitInfoDeep cenv f g env traitInfo
- | TyparConstraint.DefaultsTo(_, ty, _) -> CheckTypeDeep cenv f g env true ty
+ | TyparConstraint.DefaultsTo(_, ty, _) -> CheckTypeDeep cenv f g env NoInfo ty
| TyparConstraint.SimpleChoice(tys, _) -> CheckTypesDeep cenv f g env tys
- | TyparConstraint.IsEnum(underlyingTy, _) -> CheckTypeDeep cenv f g env true underlyingTy
- | TyparConstraint.IsDelegate(argTys, retTy, _) -> CheckTypeDeep cenv f g env true argTys; CheckTypeDeep cenv f g env true retTy
+ | TyparConstraint.IsEnum(underlyingTy, _) -> CheckTypeDeep cenv f g env NoInfo underlyingTy
+ | TyparConstraint.IsDelegate(argTys, retTy, _) -> CheckTypeDeep cenv f g env NoInfo argTys; CheckTypeDeep cenv f g env NoInfo retTy
| TyparConstraint.SupportsComparison _
| TyparConstraint.SupportsEquality _
| TyparConstraint.SupportsNull _
+ | TyparConstraint.NotSupportsNull _
| TyparConstraint.IsNonNullableStruct _
| TyparConstraint.IsUnmanaged _
+ | TyparConstraint.AllowsRefStruct _
| TyparConstraint.IsReferenceType _
| TyparConstraint.RequiresDefaultConstructor _ -> ()
-and CheckTraitInfoDeep cenv (_, _, _, visitTraitSolutionOpt, _ as f) g env (TTrait(tys, _, _, argTys, retTy, soln)) =
- CheckTypesDeep cenv f g env tys
- CheckTypesDeep cenv f g env argTys
- Option.iter (CheckTypeDeep cenv f g env true ) retTy
- match visitTraitSolutionOpt, soln.Value with
+and CheckTraitInfoDeep cenv (_, _, _, visitTraitSolutionOpt, _ as f) g env traitInfo =
+ CheckTypesDeep cenv f g env traitInfo.SupportTypes
+ CheckTypesDeep cenv f g env traitInfo.CompiledObjectAndArgumentTypes
+ Option.iter (CheckTypeDeep cenv f g env NoInfo ) traitInfo.CompiledReturnType
+ match visitTraitSolutionOpt, traitInfo.Solution with
| Some visitTraitSolution, Some sln -> visitTraitSolution sln
| _ -> ()
/// Check for byref-like types
let CheckForByrefLikeType cenv env m ty check =
- CheckTypeDeep cenv (ignore, Some (fun _deep tcref -> if isByrefLikeTyconRef cenv.g m tcref then check()), None, None, None) cenv.g env false ty
+ CheckTypeDeep cenv (ignore, Some (fun ctx tcref -> if (isByrefLikeTyconRef cenv.g m tcref && not(ctx.TyparAllowsRefStruct())) then check()), None, None, None) cenv.g env NoInfo ty
/// Check for byref types
let CheckForByrefType cenv env ty check =
- CheckTypeDeep cenv (ignore, Some (fun _deep tcref -> if isByrefTyconRef cenv.g tcref then check()), None, None, None) cenv.g env false ty
+ CheckTypeDeep cenv (ignore, Some (fun _ctx tcref -> if isByrefTyconRef cenv.g tcref then check()), None, None, None) cenv.g env NoInfo ty
/// check captures under lambdas
///
@@ -457,7 +477,7 @@ let CheckEscapes cenv allowProtected m syntacticArgs body = (* m is a range suit
if cenv.reportErrors then
let cantBeFree (v: Val) =
// If v is a syntactic argument, then it can be free since it was passed in.
- // The following can not be free:
+ // The following cannot be free:
// a) BaseVal can never escape.
// b) Byref typed values can never escape.
// Note that: Local mutables can be free, as they will be boxed later.
@@ -478,7 +498,7 @@ let CheckEscapes cenv allowProtected m syntacticArgs body = (* m is a range suit
if (isByrefLikeTy cenv.g m v.Type) then
// Inner functions are not guaranteed to compile to method with a predictable arity (number of arguments).
// As such, partial applications involving byref arguments could lead to closures containing byrefs.
- // For safety, such functions are assumed to have no known arity, and so can not accept byrefs.
+ // For safety, such functions are assumed to have no known arity, and so cannot accept byrefs.
errorR(Error(FSComp.SR.chkByrefUsedInInvalidWay(v.DisplayName), m))
elif v.IsBaseVal then
@@ -515,7 +535,7 @@ let CheckTypeForAccess (cenv: cenv) env objName valAcc m ty =
if isLessAccessible tyconAcc valAcc then
errorR(Error(FSComp.SR.chkTypeLessAccessibleThanType(tcref.DisplayName, (objName())), m))
- CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env false ty
+ CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env NoInfo ty
let WarnOnWrongTypeForAccess (cenv: cenv) env objName valAcc m ty =
if cenv.reportErrors then
@@ -533,7 +553,7 @@ let WarnOnWrongTypeForAccess (cenv: cenv) env objName valAcc m ty =
let warningText = errorText + Environment.NewLine + FSComp.SR.tcTypeAbbreviationsCheckedAtCompileTime()
warning(AttributeChecking.ObsoleteWarning(warningText, m))
- CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env false ty
+ CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env NoInfo ty
/// Indicates whether a byref or byref-like type is permitted at a particular location
[]
@@ -628,16 +648,26 @@ let CheckTypeAux permitByRefLike (cenv: cenv) env m ty onInnerByrefError =
else
errorR (Error(FSComp.SR.checkNotSufficientlyGenericBecauseOfScope(tp.DisplayName), m))
- let visitTyconRef isInner tcref =
+ let visitTyconRef (ctx:TypeInstCtx) tcref =
+ let checkInner() =
+ match ctx with
+ | TopLevelAllowingByRef -> false
+ | TyparInst(parentTcRef)
+ | IlGenericInst(parentTcRef,_) when isByrefTyconRef cenv.g parentTcRef -> false
+ | _ -> true
+
+ let isInnerByRefLike() = checkInner() && isByrefLikeTyconRef cenv.g m tcref
+
+ let permitByRefLike =
+ if ctx.TyparAllowsRefStruct() then PermitByRefType.All else permitByRefLike
- let isInnerByRefLike = isInner && isByrefLikeTyconRef cenv.g m tcref
match permitByRefLike with
| PermitByRefType.None when isByrefLikeTyconRef cenv.g m tcref ->
errorR(Error(FSComp.SR.chkErrorUseOfByref(), m))
- | PermitByRefType.NoInnerByRefLike when isInnerByRefLike ->
+ | PermitByRefType.NoInnerByRefLike when isInnerByRefLike() ->
onInnerByrefError ()
- | PermitByRefType.SpanLike when isByrefTyconRef cenv.g tcref || isInnerByRefLike ->
+ | PermitByRefType.SpanLike when isByrefTyconRef cenv.g tcref || isInnerByRefLike() ->
onInnerByrefError ()
| _ -> ()
@@ -664,7 +694,13 @@ let CheckTypeAux permitByRefLike (cenv: cenv) env m ty onInnerByrefError =
cenv.potentialUnboundUsesOfVals <- cenv.potentialUnboundUsesOfVals.Add(vref.Stamp, m)
| _ -> ()
- CheckTypeDeep cenv (ignore, Some visitTyconRef, Some visitAppTy, Some visitTraitSolution, Some visitTyar) cenv.g env false ty
+ let initialCtx =
+ match permitByRefLike with
+ | PermitByRefType.SpanLike
+ | PermitByRefType.NoInnerByRefLike -> TopLevelAllowingByRef
+ | _ -> NoInfo
+
+ CheckTypeDeep cenv (ignore, Some visitTyconRef, Some visitAppTy, Some visitTraitSolution, Some visitTyar) cenv.g env initialCtx ty
let CheckType permitByRefLike cenv env m ty =
CheckTypeAux permitByRefLike cenv env m ty (fun () -> errorR(Error(FSComp.SR.chkErrorUseOfByref(), m)))
@@ -702,10 +738,6 @@ let CheckNoReraise cenv freesOpt (body: Expr) =
if fvs.UsesUnboundRethrow then
errorR(Error(FSComp.SR.chkErrorContainsCallToRethrow(), body.Range))
-/// Check if a function is a quotation splice operator
-let isSpliceOperator g v = valRefEq g v g.splice_expr_vref || valRefEq g v g.splice_raw_expr_vref
-
-
/// Examples:
/// I & I => ExactlyEqual.
/// I & I => NotEqual.
@@ -775,8 +807,8 @@ let rec CheckExprNoByrefs cenv env expr =
and CheckValRef (cenv: cenv) (env: env) v m (ctxt: PermitByRefExpr) =
if cenv.reportErrors then
- if isSpliceOperator cenv.g v && not env.quote then errorR(Error(FSComp.SR.chkSplicingOnlyInQuotations(), m))
- if isSpliceOperator cenv.g v then errorR(Error(FSComp.SR.chkNoFirstClassSplicing(), m))
+ if cenv.g.isSpliceOperator v && not env.quote then errorR(Error(FSComp.SR.chkSplicingOnlyInQuotations(), m))
+ if cenv.g.isSpliceOperator v then errorR(Error(FSComp.SR.chkNoFirstClassSplicing(), m))
if valRefEq cenv.g v cenv.g.addrof_vref then errorR(Error(FSComp.SR.chkNoFirstClassAddressOf(), m))
if valRefEq cenv.g v cenv.g.reraise_vref then errorR(Error(FSComp.SR.chkNoFirstClassRethrow(), m))
if valRefEq cenv.g v cenv.g.nameof_vref then errorR(Error(FSComp.SR.chkNoFirstClassNameOf(), m))
@@ -1191,7 +1223,7 @@ and CheckExpr (cenv: cenv) (env: env) origExpr (ctxt: PermitByRefExpr) : Limit =
NoLimit
// Allow '%expr' in quotations
- | Expr.App (Expr.Val (vref, _, _), _, tinst, [arg], m) when isSpliceOperator g vref && env.quote ->
+ | Expr.App (Expr.Val (vref, _, _), _, tinst, [arg], m) when g.isSpliceOperator vref && env.quote ->
CheckSpliceApplication cenv env (tinst, arg, m)
// Check an application
@@ -1307,14 +1339,14 @@ and CheckILBaseCall cenv env (ilMethRef, enclTypeInst, methInst, retTypes, tyarg
match tryTcrefOfAppTy g baseVal.Type with
| ValueSome tcref when tcref.IsILTycon ->
try
- // This is awkward - we have to explicitly re-resolve back to the IL metadata to determine if the method is abstract.
- // We believe this may be fragile in some situations, since we are using the Abstract IL code to compare
- // type equality, and it would be much better to remove any F# dependency on that implementation of IL type
- // equality. It would be better to make this check in tc.fs when we have the Abstract IL metadata for the method to hand.
- let mdef = resolveILMethodRef tcref.ILTyconRawMetadata ilMethRef
+ let mdef =
+ match tcref.ILTyconInfo with
+ | TILObjectReprData(scoref, _, _) ->
+ resolveILMethodRefWithRescope (rescopeILType scoref) tcref.ILTyconRawMetadata ilMethRef
+
if mdef.IsAbstract then
errorR(Error(FSComp.SR.tcCannotCallAbstractBaseMember(mdef.Name), m))
- with _ -> () // defensive coding
+ with _ -> ()
| _ -> ()
CheckTypeInstNoByrefs cenv env m tyargs
@@ -1461,9 +1493,31 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr =
CombineTwoLimits limit1 limit2
| TOp.ILCall (_, _, _, _, _, _, _, ilMethRef, enclTypeInst, methInst, retTypes), _, _ ->
+
CheckTypeInstNoByrefs cenv env m tyargs
- CheckTypeInstNoByrefs cenv env m enclTypeInst
- CheckTypeInstNoByrefs cenv env m methInst
+
+ match enclTypeInst,methInst with
+ | [],[] -> ()
+ | enclTypeInst,methInst ->
+ let tyconRef = ImportILTypeRef cenv.amap m ilMethRef.DeclaringTypeRef
+ match tyconRef.TypeReprInfo with
+ | TILObjectRepr(TILObjectReprData(scoref, _, tdef)) ->
+ (enclTypeInst,tdef.GenericParams)
+ ||> List.iter2 (fun typeInst typeGeneric ->
+ if not typeGeneric.HasAllowsRefStruct then
+ CheckTypeNoByrefs cenv env m typeInst)
+
+ match methInst with
+ | [] -> ()
+ | methInst ->
+ let methDef = resolveILMethodRefWithRescope (rescopeILType scoref) tdef ilMethRef
+ (methInst,methDef.GenericParams)
+ ||> List.iter2 (fun methInst methGeneric ->
+ if not methGeneric.HasAllowsRefStruct then
+ CheckTypeNoByrefs cenv env m methInst)
+
+ | _ -> ()
+
CheckTypeInstNoInnerByrefs cenv env m retTypes // permit byref returns
let hasReceiver =
@@ -1904,7 +1958,8 @@ and CheckAttribArgExpr cenv env expr =
| Const.Single _
| Const.Char _
| Const.Zero
- | Const.String _ -> ()
+ | Const.String _
+ | Const.Decimal _ -> ()
| _ ->
if cenv.reportErrors then
errorR (Error (FSComp.SR.tastNotAConstantExpression(), m))
@@ -1970,7 +2025,8 @@ and AdjustAccess isHidden (cpath: unit -> CompilationPath) access =
let (TAccess l) = access
// FSharp 1.0 bug 1908: Values hidden by signatures are implicitly at least 'internal'
let scoref = cpath().ILScopeRef
- TAccess(CompPath(scoref, []) :: l)
+ let sa = cpath().SyntaxAccess
+ TAccess(CompPath(scoref, sa, []) :: l)
else
access
@@ -2076,7 +2132,7 @@ and CheckBinding cenv env alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bin
if cenv.reportErrors && isReturnsResumableCodeTy g v.TauType then
if not (g.langVersion.SupportsFeature LanguageFeature.ResumableStateMachines) then
error(Error(FSComp.SR.tcResumableCodeNotSupported(), bind.Var.Range))
- if not v.MustInline then
+ if not v.ShouldInline then
warning(Error(FSComp.SR.tcResumableCodeFunctionMustBeInline(), v.Range))
if isReturnsResumableCodeTy g v.TauType then
@@ -2084,7 +2140,7 @@ and CheckBinding cenv env alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bin
else
env
- CheckLambdas isTop (Some v) cenv env v.MustInline valReprInfo alwaysCheckNoReraise bindRhs v.Range v.Type ctxt
+ CheckLambdas isTop (Some v) cenv env v.ShouldInline valReprInfo alwaysCheckNoReraise bindRhs v.Range v.Type ctxt
and CheckBindings cenv env binds =
for bind in binds do
@@ -2143,10 +2199,6 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) =
error(Duplicate(kind, v.DisplayName, v.Range))
-#if CASES_IN_NESTED_CLASS
- if tcref.IsUnionTycon && nm = "Cases" then
- errorR(NameClash(nm, kind, v.DisplayName, v.Range, "generated type", "Cases", tcref.Range))
-#endif
if tcref.IsUnionTycon then
match nm with
| "Tag" -> errorR(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.typeInfoGeneratedProperty(), "Tag", tcref.Range))
@@ -2283,7 +2335,7 @@ let CheckEntityDefn cenv env (tycon: Entity) =
else MethInfosEquivByNameAndPartialSig eraseFlag true g cenv.amap m minfo minfo2 (* partial ignores return type *)
let immediateMeths =
- [ for v in tycon.AllGeneratedValues do yield FSMeth (g, ty, v, None)
+ [ for v in tycon.AllGeneratedInterfaceImplsAndOverrides do yield FSMeth (g, ty, v, None)
yield! GetImmediateIntrinsicMethInfosOfType (None, AccessibleFromSomewhere) g cenv.amap m ty ]
let immediateProps = GetImmediateIntrinsicPropInfosOfType (None, AccessibleFromSomewhere) g cenv.amap m ty
@@ -2351,25 +2403,25 @@ let CheckEntityDefn cenv env (tycon: Entity) =
ignore isInArg
match (optArgInfo, callerInfo) with
| _, NoCallerInfo -> ()
- | NotOptional, _ -> errorR(Error(FSComp.SR.tcCallerInfoNotOptional(callerInfo.ToString()), m))
+ | NotOptional, _ -> errorR(Error(FSComp.SR.tcCallerInfoNotOptional(callerInfo |> string), m))
| CallerSide _, CallerLineNumber ->
if not (typeEquiv g g.int32_ty ty) then
- errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "int", NicePrint.minimalStringOfType cenv.denv ty), m))
+ errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo |> string, "int", NicePrint.minimalStringOfType cenv.denv ty), m))
| CalleeSide, CallerLineNumber ->
if not ((isOptionTy g ty) && (typeEquiv g g.int32_ty (destOptionTy g ty))) then
- errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "int", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m))
+ errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo |> string, "int", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m))
| CallerSide _, CallerFilePath ->
if not (typeEquiv g g.string_ty ty) then
- errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "string", NicePrint.minimalStringOfType cenv.denv ty), m))
+ errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo |> string, "string", NicePrint.minimalStringOfType cenv.denv ty), m))
| CalleeSide, CallerFilePath ->
if not ((isOptionTy g ty) && (typeEquiv g g.string_ty (destOptionTy g ty))) then
- errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "string", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m))
+ errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo |> string, "string", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m))
| CallerSide _, CallerMemberName ->
if not (typeEquiv g g.string_ty ty) then
- errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "string", NicePrint.minimalStringOfType cenv.denv ty), m))
+ errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo |> string, "string", NicePrint.minimalStringOfType cenv.denv ty), m))
| CalleeSide, CallerMemberName ->
if not ((isOptionTy g ty) && (typeEquiv g g.string_ty (destOptionTy g ty))) then
- errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "string", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m)))
+ errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo |> string, "string", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m)))
for pinfo in immediateProps do
let nm = pinfo.PropertyName
@@ -2535,13 +2587,30 @@ let CheckEntityDefn cenv env (tycon: Entity) =
// Check fields. We check these late because we have to have first checked that the structs are
// free of cycles
- if tycon.IsStructOrEnumTycon then
+ if g.langFeatureNullness && g.checkNullness then
+ for f in tycon.AllInstanceFieldsAsList do
+ let m = f.Range
+ // Check if it's marked unsafe
+ let zeroInitUnsafe = TryFindFSharpBoolAttribute g g.attrib_DefaultValueAttribute f.FieldAttribs
+ if zeroInitUnsafe = Some true then
+ let ty = f.FormalType
+ // If the condition is detected because of a variation in logic introduced because
+ // of nullness checking, then only a warning is emitted.
+ if not (TypeHasDefaultValueNew g m ty) then
+ if not (TypeHasDefaultValue g m ty) then
+ errorR(Error(FSComp.SR.chkValueWithDefaultValueMustHaveDefaultValue(), m))
+ else
+ warning(Error(FSComp.SR.chkValueWithDefaultValueMustHaveDefaultValue(), m))
+
+ // These are the old rules (not g.langFeatureNullness or not g.checkNullness), mistakenly only applied to structs
+ elif tycon.IsStructOrEnumTycon then
for f in tycon.AllInstanceFieldsAsList do
+ let m = f.Range
// Check if it's marked unsafe
let zeroInitUnsafe = TryFindFSharpBoolAttribute g g.attrib_DefaultValueAttribute f.FieldAttribs
if zeroInitUnsafe = Some true then
- if not (TypeHasDefaultValue g m ty) then
- errorR(Error(FSComp.SR.chkValueWithDefaultValueMustHaveDefaultValue(), m))
+ if not (TypeHasDefaultValue g m f.FormalType) then
+ errorR(Error(FSComp.SR.chkValueWithDefaultValueMustHaveDefaultValue(), m))
// Check type abbreviations
match tycon.TypeAbbrev with
diff --git a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs
index b7dd2b1c7f..ba5e118eac 100644
--- a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs
+++ b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs
@@ -171,33 +171,37 @@ exception IgnoringPartOfQuotedTermWarning of string * range
let wfail e = raise (InvalidQuotedTerm e)
+[]
let (|ModuleValueOrMemberUse|_|) g expr =
let rec loop expr args =
match stripExpr expr with
| Expr.App (InnerExprPat(Expr.Val (vref, vFlags, _) as f), fty, tyargs, actualArgs, _m) when vref.IsMemberOrModuleBinding ->
- Some(vref, vFlags, f, fty, tyargs, actualArgs @ args)
+ ValueSome(vref, vFlags, f, fty, tyargs, actualArgs @ args)
| Expr.App (f, _fTy, [], actualArgs, _) ->
loop f (actualArgs @ args)
| Expr.Val (vref, vFlags, _m) as f when (match vref.TryDeclaringEntity with ParentNone -> false | _ -> true) ->
let fty = tyOfExpr g f
- Some(vref, vFlags, f, fty, [], args)
+ ValueSome(vref, vFlags, f, fty, [], args)
| _ ->
- None
+ ValueNone
loop expr []
+[]
let (|SimpleArrayLoopUpperBound|_|) expr =
match expr with
- | Expr.Op (TOp.ILAsm ([AI_sub], _), _, [Expr.Op (TOp.ILAsm ([I_ldlen; AI_conv ILBasicType.DT_I4], _), _, _, _); Expr.Const (Const.Int32 1, _, _) ], _) -> Some ()
- | _ -> None
+ | Expr.Op (TOp.ILAsm ([AI_sub], _), _, [Expr.Op (TOp.ILAsm ([I_ldlen; AI_conv ILBasicType.DT_I4], _), _, _, _); Expr.Const (Const.Int32 1, _, _) ], _) -> ValueSome ()
+ | _ -> ValueNone
+[]
let (|SimpleArrayLoopBody|_|) g expr =
match expr with
| Expr.Lambda (_, a, b, ([_] as args), DebugPoints (Expr.Let (TBind(forVarLoop, DebugPoints (Expr.Op (TOp.ILAsm ([I_ldelem_any(ILArrayShape [(Some 0, None)], _)], _), [elemTy], [arr; idx], m1), _), seqPoint), body, m2, freeVars), _), m, ty) ->
let body = Expr.Let (TBind(forVarLoop, mkCallArrayGet g m1 elemTy arr idx, seqPoint), body, m2, freeVars)
let expr = Expr.Lambda (newUnique(), a, b, args, body, m, ty)
- Some (arr, elemTy, expr)
- | _ -> None
+ ValueSome (arr, elemTy, expr)
+ | _ -> ValueNone
+[]
let (|ObjectInitializationCheck|_|) g expr =
// recognize "if this.init@ < 1 then failinit"
match expr with
@@ -211,10 +215,8 @@ let (|ObjectInitializationCheck|_|) g expr =
name.StartsWithOrdinal("init") &&
selfRef.IsMemberThisVal &&
valRefEq g failInitRef (ValRefForIntrinsic g.fail_init_info) &&
- isUnitTy g resultTy -> Some()
- | _ -> None
-
-let isSplice g vref = valRefEq g vref g.splice_expr_vref || valRefEq g vref g.splice_raw_expr_vref
+ isUnitTy g resultTy -> ValueSome()
+ | _ -> ValueNone
let rec EmitDebugInfoIfNecessary cenv env m astExpr : ExprData =
// do not emit debug info if emitDebugInfoInQuotations = false or it was already written for the given expression
@@ -298,7 +300,7 @@ and private ConvExprCore cenv (env : QuotationTranslationEnv) (expr: Expr) : QP.
match expr with
// Detect expression tree exprSplices
| Expr.App (InnerExprPat(Expr.Val (vref, _, _)), _, _, x0 :: rest, m)
- when isSplice g vref ->
+ when g.isSpliceOperator vref ->
let idx = cenv.exprSplices.Count
let ty = tyOfExpr g expr
@@ -311,7 +313,7 @@ and private ConvExprCore cenv (env : QuotationTranslationEnv) (expr: Expr) : QP.
(hole, rest) ||> List.fold (fun fR arg -> QP.mkApp (fR, ConvExpr cenv env arg))
| ModuleValueOrMemberUse g (vref, vFlags, _f, _fTy, tyargs, curriedArgs)
- when not (isSplice g vref) ->
+ when not (g.isSpliceOperator vref) ->
let m = expr.Range
let numEnclTypeArgs, _, isNewObj, valUseFlags, isSelfInit, takesInstanceArg, isPropGet, isPropSet =
@@ -584,7 +586,7 @@ and private ConvExprCore cenv (env : QuotationTranslationEnv) (expr: Expr) : QP.
| TOp.ExnConstr tcref, _, args ->
let _rgtypR = ConvTyconRef cenv tcref m
- let _typ = mkAppTy tcref []
+ let _typ = mkWoNullAppTy tcref []
let parentTyconR = ConvTyconRef cenv tcref m
let argTys = tcref |> recdFieldsOfExnDefRef |> List.map (fun rfld -> rfld.FormalType)
let methArgTypesR = ConvTypes cenv env m argTys
@@ -1223,7 +1225,7 @@ and ConvILType cenv env m ty =
and TryElimErasableTyconRef cenv m (tcref: TyconRef) =
match tcref.TypeReprInfo with
// Get the base type
- | TProvidedTypeRepr info when info.IsErased -> Some (info.BaseTypeForErased (m, cenv.g.obj_ty))
+ | TProvidedTypeRepr info when info.IsErased -> Some (info.BaseTypeForErased (m, cenv.g.obj_ty_withNulls))
| _ -> None
#endif
diff --git a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi
index 288a8e1e73..1958dde4dc 100644
--- a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi
@@ -41,10 +41,15 @@ val ConvExprPublic: QuotationGenerationScope -> suppressWitnesses: bool -> Expr
val ConvReflectedDefinition:
QuotationGenerationScope -> string -> Val -> Expr -> QuotationPickler.MethodBaseData * QuotationPickler.ExprData
+[]
val (|ModuleValueOrMemberUse|_|):
- TcGlobals -> Expr -> (ValRef * ValUseFlag * Expr * TType * TypeInst * Expr list) option
+ TcGlobals -> Expr -> (ValRef * ValUseFlag * Expr * TType * TypeInst * Expr list) voption
-val (|SimpleArrayLoopUpperBound|_|): Expr -> unit option
-val (|SimpleArrayLoopBody|_|): TcGlobals -> Expr -> (Expr * TType * Expr) option
-val (|ObjectInitializationCheck|_|): TcGlobals -> Expr -> unit option
-val isSplice: TcGlobals -> ValRef -> bool
+[]
+val (|SimpleArrayLoopUpperBound|_|): Expr -> unit voption
+
+[]
+val (|SimpleArrayLoopBody|_|): TcGlobals -> Expr -> (Expr * TType * Expr) voption
+
+[]
+val (|ObjectInitializationCheck|_|): TcGlobals -> Expr -> unit voption
diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs
index f24a93c5fc..8e8dc84eb2 100644
--- a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs
+++ b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs
@@ -39,6 +39,14 @@ exception InterfaceNotRevealed of DisplayEnv * TType * range
exception ArgumentsInSigAndImplMismatch of sigArg: Ident * implArg: Ident
+exception DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer of
+ denv: DisplayEnv *
+ implTycon:Tycon *
+ sigTycon:Tycon *
+ implTypeAbbrev:TType *
+ sigTypeAbbrev:TType *
+ range: range
+
// Use a type to capture the constant, common parameters
type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) =
@@ -231,7 +239,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) =
else
let aNull2 = TypeNullIsExtraValue g m (generalizedTyconRef g (mkLocalTyconRef implTycon))
- let fNull2 = TypeNullIsExtraValue g m (generalizedTyconRef g (mkLocalTyconRef implTycon))
+ let fNull2 = TypeNullIsExtraValue g m (generalizedTyconRef g (mkLocalTyconRef implTycon)) // TODO: should be sigTycon, raises extra errors
if aNull2 && not fNull2 then
errorR(Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m))
false
@@ -338,7 +346,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) =
elif (implVal.CompiledName g.CompilerGlobalState) <> (sigVal.CompiledName g.CompilerGlobalState) then (err denv FSComp.SR.ValueNotContainedMutabilityCompiledNamesDiffer)
elif implVal.DisplayName <> sigVal.DisplayName then (err denv FSComp.SR.ValueNotContainedMutabilityDisplayNamesDiffer)
elif isLessAccessible implVal.Accessibility sigVal.Accessibility then (err denv FSComp.SR.ValueNotContainedMutabilityAccessibilityMore)
- elif implVal.MustInline <> sigVal.MustInline then (err denv FSComp.SR.ValueNotContainedMutabilityInlineFlagsDiffer)
+ elif implVal.ShouldInline <> sigVal.ShouldInline then (err denv FSComp.SR.ValueNotContainedMutabilityInlineFlagsDiffer)
elif implVal.LiteralValue <> sigVal.LiteralValue then (err denv FSComp.SR.ValueNotContainedMutabilityLiteralConstantValuesDiffer)
elif implVal.IsTypeFunction <> sigVal.IsTypeFunction then (err denv FSComp.SR.ValueNotContainedMutabilityOneIsTypeFunction)
else
@@ -589,8 +597,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) =
match implTycon.TypeAbbrev, sigTycon.TypeAbbrev with
| Some ty1, Some ty2 ->
if not (typeAEquiv g aenv ty1 ty2) then
- let s1, s2, _ = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2
- errorR (Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, s1, s2), m))
+ errorR (DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer(denv, implTycon, sigTycon, ty1, ty2, m))
false
else
true
diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi
index c0939f92b3..1b13796894 100644
--- a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi
@@ -40,6 +40,14 @@ exception InterfaceNotRevealed of DisplayEnv * TType * range
exception ArgumentsInSigAndImplMismatch of sigArg: Ident * implArg: Ident
+exception DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer of
+ denv: DisplayEnv *
+ implTycon: Tycon *
+ sigTycon: Tycon *
+ implTypeAbbrev: TType *
+ sigTypeAbbrev: TType *
+ range: range
+
type Checker =
new:
diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs
index 77a9ede414..a9bf8fce50 100644
--- a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs
+++ b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs
@@ -1,338 +1,20 @@
module internal Fsharp.Compiler.SignatureHash
-open Internal.Utilities.Library
-open Internal.Utilities.Rational
open FSharp.Compiler.AbstractIL.IL
-open FSharp.Compiler.Syntax
open FSharp.Compiler.TcGlobals
-open FSharp.Compiler.Text
open FSharp.Compiler.TypedTree
open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.CheckDeclarations
-type ObserverVisibility =
- | PublicOnly
- | PublicAndInternal
-
-[]
-module internal HashingPrimitives =
-
- type Hash = int
-
- let inline hashText (s: string) : Hash = hash s
- let inline private combineHash acc y : Hash = (acc <<< 1) + y + 631
- let inline pipeToHash (value: Hash) (acc: Hash) = combineHash acc value
- let inline addFullStructuralHash (value) (acc: Hash) = combineHash (acc) (hash value)
-
- let inline hashListOrderMatters ([] func) (items: #seq<'T>) : Hash =
- let mutable acc = 0
-
- for i in items do
- let valHash = func i
- // We are calling hashListOrderMatters for things like list of types, list of properties, list of fields etc. The ones which are visibility-hidden will return 0, and are ommited.
- if valHash <> 0 then
- acc <- combineHash acc valHash
-
- acc
-
- let inline hashListOrderIndependent ([] func) (items: #seq<'T>) : Hash =
- let mutable acc = 0
-
- for i in items do
- let valHash = func i
- acc <- acc ^^^ valHash
-
- acc
-
- let (@@) (h1: Hash) (h2: Hash) = combineHash h1 h2
-
-[]
-module internal HashUtilities =
-
- let private hashEntityRefName (xref: EntityRef) name =
- let tag =
- if xref.IsNamespace then
- TextTag.Namespace
- elif xref.IsModule then
- TextTag.Module
- elif xref.IsTypeAbbrev then
- TextTag.Alias
- elif xref.IsFSharpDelegateTycon then
- TextTag.Delegate
- elif xref.IsILEnumTycon || xref.IsFSharpEnumTycon then
- TextTag.Enum
- elif xref.IsStructOrEnumTycon then
- TextTag.Struct
- elif isInterfaceTyconRef xref then
- TextTag.Interface
- elif xref.IsUnionTycon then
- TextTag.Union
- elif xref.IsRecordTycon then
- TextTag.Record
- else
- TextTag.Class
-
- (hash tag) @@ (hashText name)
-
- let hashTyconRefImpl (tcref: TyconRef) =
- let demangled = tcref.DisplayNameWithStaticParameters
- let tyconHash = hashEntityRefName tcref demangled
-
- tcref.CompilationPath.AccessPath
- |> hashListOrderMatters (fst >> hashText)
- |> pipeToHash tyconHash
-
-module HashIL =
-
- let hashILTypeRef (tref: ILTypeRef) =
- tref.Enclosing
- |> hashListOrderMatters hashText
- |> addFullStructuralHash tref.Name
-
- let private hashILArrayShape (sh: ILArrayShape) = sh.Rank
-
- let rec hashILType (ty: ILType) : Hash =
- match ty with
- | ILType.Void -> hash ILType.Void
- | ILType.Array(sh, t) -> hashILType t @@ hashILArrayShape sh
- | ILType.Value t
- | ILType.Boxed t -> hashILTypeRef t.TypeRef @@ (t.GenericArgs |> hashListOrderMatters (hashILType))
- | ILType.Ptr t
- | ILType.Byref t -> hashILType t
- | ILType.FunctionPointer t -> hashILCallingSignature t
- | ILType.TypeVar n -> hash n
- | ILType.Modified(_, _, t) -> hashILType t
-
- and hashILCallingSignature (signature: ILCallingSignature) =
- let res = signature.ReturnType |> hashILType
- signature.ArgTypes |> hashListOrderMatters (hashILType) |> pipeToHash res
-
-module HashAccessibility =
-
- let isHiddenToObserver (TAccess access) (observer: ObserverVisibility) =
- let isInternalCompPath x =
- match x with
- | CompPath(ILScopeRef.Local, []) -> true
- | _ -> false
-
- match access with
- | [] -> false
- | _ when List.forall isInternalCompPath access ->
- match observer with
- // The 'access' means internal, but our observer can see it (e.g. because of IVT attribute)
- | PublicAndInternal -> false
- | PublicOnly -> true
- | _ -> true
-
-module rec HashTypes =
-
- /// Hash a reference to a type
- let hashTyconRef tcref = hashTyconRefImpl tcref
-
- /// Hash the flags of a member
- let hashMemberFlags (memFlags: SynMemberFlags) = hash memFlags
-
- /// Hash an attribute 'Type(arg1, ..., argN)'
- let private hashAttrib (Attrib(tyconRef = tcref)) = hashTyconRefImpl tcref
-
- let hashAttributeList attrs =
- attrs |> hashListOrderIndependent hashAttrib
-
- let private hashTyparRef (typar: Typar) =
- hashText typar.DisplayName
- |> addFullStructuralHash (typar.Rigidity)
- |> addFullStructuralHash (typar.StaticReq)
-
- let private hashTyparRefWithInfo (typar: Typar) =
- hashTyparRef typar @@ hashAttributeList typar.Attribs
-
- let private hashConstraint (g: TcGlobals) struct (tp, tpc) =
- let tpHash = hashTyparRefWithInfo tp
-
- match tpc with
- | TyparConstraint.CoercesTo(tgtTy, _) -> tpHash @@ 1 @@ hashTType g tgtTy
- | TyparConstraint.MayResolveMember(traitInfo, _) -> tpHash @@ 2 @@ hashTraitWithInfo (* denv *) g traitInfo
- | TyparConstraint.DefaultsTo(_, ty, _) -> tpHash @@ 3 @@ hashTType g ty
- | TyparConstraint.IsEnum(ty, _) -> tpHash @@ 4 @@ hashTType g ty
- | TyparConstraint.SupportsComparison _ -> tpHash @@ 5
- | TyparConstraint.SupportsEquality _ -> tpHash @@ 6
- | TyparConstraint.IsDelegate(aty, bty, _) -> tpHash @@ 7 @@ hashTType g aty @@ hashTType g bty
- | TyparConstraint.SupportsNull _ -> tpHash @@ 8
- | TyparConstraint.IsNonNullableStruct _ -> tpHash @@ 9
- | TyparConstraint.IsUnmanaged _ -> tpHash @@ 10
- | TyparConstraint.IsReferenceType _ -> tpHash @@ 11
- | TyparConstraint.SimpleChoice(tys, _) -> tpHash @@ 12 @@ (tys |> hashListOrderIndependent (hashTType g))
- | TyparConstraint.RequiresDefaultConstructor _ -> tpHash @@ 13
-
- /// Hash type parameter constraints
- let private hashConstraints (g: TcGlobals) cxs =
- cxs |> hashListOrderIndependent (hashConstraint g)
-
- let private hashTraitWithInfo (g: TcGlobals) traitInfo =
- let nameHash = hashText traitInfo.MemberLogicalName
- let memberHash = hashMemberFlags traitInfo.MemberFlags
-
- let returnTypeHash =
- match traitInfo.CompiledReturnType with
- | Some t -> hashTType g t
- | _ -> -1
-
- traitInfo.CompiledObjectAndArgumentTypes
- |> hashListOrderIndependent (hashTType g)
- |> pipeToHash (nameHash)
- |> pipeToHash (returnTypeHash)
- |> pipeToHash memberHash
-
- /// Hash a unit of measure expression
- let private hashMeasure unt =
- let measuresWithExponents =
- ListMeasureVarOccsWithNonZeroExponents unt
- |> List.sortBy (fun (tp: Typar, _) -> tp.DisplayName)
-
- measuresWithExponents
- |> hashListOrderIndependent (fun (typar, exp: Rational) -> hashTyparRef typar @@ hash exp)
-
- /// Hash a type, taking precedence into account to insert brackets where needed
- let hashTType (g: TcGlobals) ty =
-
- match stripTyparEqns ty |> (stripTyEqns g) with
- | TType_ucase(UnionCaseRef(tc, _), args)
- | TType_app(tc, args, _) -> args |> hashListOrderMatters (hashTType g) |> pipeToHash (hashTyconRef tc)
- | TType_anon(anonInfo, tys) ->
- tys
- |> hashListOrderMatters (hashTType g)
- |> pipeToHash (anonInfo.SortedNames |> hashListOrderMatters hashText)
- |> addFullStructuralHash (evalAnonInfoIsStruct anonInfo)
- | TType_tuple(tupInfo, t) ->
- t
- |> hashListOrderMatters (hashTType g)
- |> addFullStructuralHash (evalTupInfoIsStruct tupInfo)
- // Hash a first-class generic type.
- | TType_forall(tps, tau) -> tps |> hashListOrderMatters (hashTyparRef) |> pipeToHash (hashTType g tau)
- | TType_fun _ ->
- let argTys, retTy = stripFunTy g ty
- argTys |> hashListOrderMatters (hashTType g) |> pipeToHash (hashTType g retTy)
- | TType_var(r, _) -> hashTyparRefWithInfo r
- | TType_measure unt -> hashMeasure unt
-
- // Hash a single argument, including its name and type
- let private hashArgInfo (g: TcGlobals) (ty, argInfo: ArgReprInfo) =
-
- let attributesHash = hashAttributeList argInfo.Attribs
-
- let nameHash =
- match argInfo.Name with
- | Some i -> hashText i.idText
- | _ -> -1
-
- let typeHash = hashTType g ty
-
- typeHash @@ nameHash @@ attributesHash
-
- let private hashCurriedArgInfos (g: TcGlobals) argInfos =
- argInfos
- |> hashListOrderMatters (fun l -> l |> hashListOrderMatters (hashArgInfo g))
-
- /// Hash a single type used as the type of a member or value
- let hashTopType (g: TcGlobals) argInfos retTy cxs =
- let retTypeHash = hashTType g retTy
- let cxsHash = hashConstraints g cxs
- let argHash = hashCurriedArgInfos g argInfos
-
- retTypeHash @@ cxsHash @@ argHash
-
- let private hashTyparInclConstraints (g: TcGlobals) (typar: Typar) =
- typar.Constraints
- |> hashListOrderIndependent (fun tpc -> hashConstraint g (typar, tpc))
- |> pipeToHash (hashTyparRef typar)
-
- /// Hash type parameters
- let hashTyparDecls (g: TcGlobals) (typars: Typars) =
- typars |> hashListOrderMatters (hashTyparInclConstraints g)
-
- let private hashUncurriedSig (g: TcGlobals) typarInst argInfos retTy =
- typarInst
- |> hashListOrderMatters (fun (typar, ttype) -> hashTyparInclConstraints g typar @@ hashTType g ttype)
- |> pipeToHash (hashTopType g argInfos retTy [])
-
- let private hashMemberSigCore (g: TcGlobals) memberToParentInst (typarInst, methTypars: Typars, argInfos, retTy) =
- typarInst
- |> hashListOrderMatters (fun (typar, ttype) -> hashTyparInclConstraints g typar @@ hashTType g ttype)
- |> pipeToHash (hashTopType g argInfos retTy [])
- |> pipeToHash (
- memberToParentInst
- |> hashListOrderMatters (fun (typar, ty) -> hashTyparRef typar @@ hashTType g ty)
- )
- |> pipeToHash (hashTyparDecls g methTypars)
-
- let hashMemberType (g: TcGlobals) vref typarInst argInfos retTy =
- match PartitionValRefTypars g vref with
- | Some(_, _, memberMethodTypars, memberToParentInst, _) ->
- hashMemberSigCore g memberToParentInst (typarInst, memberMethodTypars, argInfos, retTy)
- | None -> hashUncurriedSig g typarInst argInfos retTy
-
-module HashTastMemberOrVals =
- open HashTypes
-
- let private hashMember (g: TcGlobals, observer) typarInst (v: Val) =
- let vref = mkLocalValRef v
-
- if HashAccessibility.isHiddenToObserver vref.Accessibility observer then
- 0
- else
- let membInfo = Option.get vref.MemberInfo
- let _tps, argInfos, retTy, _ = GetTypeOfMemberInFSharpForm g vref
-
- let memberFlagsHash = hashMemberFlags membInfo.MemberFlags
- let parentTypeHash = hashTyconRef membInfo.ApparentEnclosingEntity
- let memberTypeHash = hashMemberType g vref typarInst argInfos retTy
- let flagsHash = hash v.val_flags.PickledBits
- let nameHash = hashText v.DisplayNameCoreMangled
- let attribsHash = hashAttributeList v.Attribs
-
- let combinedHash =
- memberFlagsHash
- @@ parentTypeHash
- @@ memberTypeHash
- @@ flagsHash
- @@ nameHash
- @@ attribsHash
-
- combinedHash
-
- let private hashNonMemberVal (g: TcGlobals, observer) (tps, v: Val, tau, cxs) =
- if HashAccessibility.isHiddenToObserver v.Accessibility observer then
- 0
- else
- let valReprInfo = arityOfValForDisplay v
- let nameHash = hashText v.DisplayNameCoreMangled
- let typarHash = hashTyparDecls g tps
- let argInfos, retTy = GetTopTauTypeInFSharpForm g valReprInfo.ArgInfos tau v.Range
- let typeHash = hashTopType g argInfos retTy cxs
- let flagsHash = hash v.val_flags.PickledBits
- let attribsHash = hashAttributeList v.Attribs
-
- let combinedHash = nameHash @@ typarHash @@ typeHash @@ flagsHash @@ attribsHash
- combinedHash
-
- let hashValOrMemberNoInst (g, obs) (vref: ValRef) =
- match vref.MemberInfo with
- | None ->
- let tps, tau = vref.GeneralizedType
-
- let cxs =
- tps
- |> Seq.collect (fun tp -> tp.Constraints |> Seq.map (fun cx -> struct (tp, cx)))
-
- hashNonMemberVal (g, obs) (tps, vref.Deref, tau, cxs)
- | Some _ -> hashMember (g, obs) emptyTyparInst vref.Deref
+open Internal.Utilities.Library
+open Internal.Utilities.TypeHashing
+open Internal.Utilities.TypeHashing.HashTypes
//-------------------------------------------------------------------------
/// Printing TAST objects
module TyconDefinitionHash =
- open HashTypes
let private hashRecdField (g: TcGlobals, observer) (fld: RecdField) =
if HashAccessibility.isHiddenToObserver fld.Accessibility observer then
@@ -476,7 +158,7 @@ let calculateHashOfImpliedSignature g observer (expr: ModuleOrNamespaceContents)
let rec hashModuleOrNameSpaceBinding (monb: ModuleOrNamespaceBinding) =
match monb with
- | ModuleOrNamespaceBinding.Binding b when b.Var.LogicalName.StartsWith("doval@") -> 0
+ | ModuleOrNamespaceBinding.Binding b when b.Var.LogicalName.StartsWithOrdinal("doval@") -> 0
| ModuleOrNamespaceBinding.Binding b -> HashTastMemberOrVals.hashValOrMemberNoInst (g, observer) (mkLocalValRef b.Var)
| ModuleOrNamespaceBinding.Module(moduleInfo, contents) -> hashSingleModuleOrNameSpaceIncludingName (moduleInfo, contents)
diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi
index 90d25e8eab..51f3fe1769 100644
--- a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi
@@ -5,9 +5,7 @@ open FSharp.Compiler.TcGlobals
open FSharp.Compiler.TypedTree
open FSharp.Compiler.CheckDeclarations
-type ObserverVisibility =
- | PublicOnly
- | PublicAndInternal
+open Internal.Utilities.TypeHashing
val calculateHashOfImpliedSignature:
g: TcGlobals -> observer: ObserverVisibility -> expr: ModuleOrNamespaceContents -> int
diff --git a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs
index 1faa9a50a3..a7ea9ad802 100644
--- a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs
+++ b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs
@@ -18,11 +18,12 @@ open FSharp.Compiler.TypeRelations
let PostInferenceChecksStackGuardDepth = GetEnvInteger "FSHARP_TailCallChecks" 50
+[]
let (|ValUseAtApp|_|) e =
match e with
| InnerExprPat(Expr.App(funcExpr = InnerExprPat(Expr.Val(valRef = vref; flags = valUseFlags))) | Expr.Val(
- valRef = vref; flags = valUseFlags)) -> Some(vref, valUseFlags)
- | _ -> None
+ valRef = vref; flags = valUseFlags)) -> ValueSome(vref, valUseFlags)
+ | _ -> ValueNone
type TailCallReturnType =
| MustReturnVoid // indicates "has unit return type and must return void"
@@ -46,8 +47,16 @@ type TailCall =
static member YesFromVal (g: TcGlobals) (v: Val) = TailCall.Yes(TailCall.IsVoidRet g v)
static member YesFromExpr (g: TcGlobals) (expr: Expr) =
+ let yesFromTType (t: TType) =
+ if isUnitTy g t then
+ TailCall.Yes TailCallReturnType.MustReturnVoid
+ else
+ TailCall.Yes TailCallReturnType.NonVoid
+
match expr with
| ValUseAtApp(valRef, _) -> TailCall.Yes(TailCall.IsVoidRet g valRef.Deref)
+ | Expr.Const(constType = constType) -> yesFromTType constType
+ | Expr.Match(exprType = exprType) -> yesFromTType exprType
| _ -> TailCall.Yes TailCallReturnType.NonVoid
member x.AtExprLambda =
@@ -67,8 +76,6 @@ type cenv =
amap: Import.ImportMap
- reportErrors: bool
-
/// Values in module that have been marked []
mustTailCall: Zset
}
@@ -139,12 +146,8 @@ let rec mkArgsForAppliedExpr isBaseCall argsl x =
| Expr.Op(TOp.Coerce, _, [ f ], _) -> mkArgsForAppliedExpr isBaseCall argsl f
| _ -> []
-/// Check an expression, where the expression is in a position where byrefs can be generated
-let rec CheckExprNoByrefs cenv (tailCall: TailCall) expr =
- CheckExpr cenv expr PermitByRefExpr.No tailCall
-
/// Check an expression, warn if it's attributed with TailCall but our analysis concludes it's not a valid tail call
-and CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) =
+let CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) =
let g = cenv.g
let expr = stripExpr expr
let expr = stripDebugPoints expr
@@ -152,68 +155,70 @@ and CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) =
match expr with
| Expr.App(f, _fty, _tyargs, argsl, m) ->
- if cenv.reportErrors then
- if cenv.g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage then
- match f with
- | ValUseAtApp(vref, valUseFlags) when cenv.mustTailCall.Contains vref.Deref ->
-
- let canTailCall =
- match tailCall with
- | TailCall.No -> // an upper level has already decided that this is not in a tailcall position
- false
- | TailCall.Yes returnType ->
- if vref.IsMemberOrModuleBinding && vref.ValReprInfo.IsSome then
- let topValInfo = vref.ValReprInfo.Value
-
- let nowArgs, laterArgs =
- let _, curriedArgInfos, _, _ =
- GetValReprTypeInFSharpForm cenv.g topValInfo vref.Type m
-
- if argsl.Length >= curriedArgInfos.Length then
- (List.splitAfter curriedArgInfos.Length argsl)
- else
- ([], argsl)
-
- let numEnclosingTypars = CountEnclosingTyparsOfActualParentOfVal vref.Deref
-
- let _, _, _, returnTy, _ =
- GetValReprTypeInCompiledForm g topValInfo numEnclosingTypars vref.Type m
-
- let _, _, isNewObj, isSuperInit, isSelfInit, _, _, _ =
- GetMemberCallInfo cenv.g (vref, valUseFlags)
-
- let isCCall =
- match valUseFlags with
- | PossibleConstrainedCall _ -> true
- | _ -> false
-
- let hasByrefArg = nowArgs |> List.exists (tyOfExpr cenv.g >> isByrefTy cenv.g)
-
- let mustGenerateUnitAfterCall =
- (Option.isNone returnTy && returnType <> TailCallReturnType.MustReturnVoid)
-
- let noTailCallBlockers =
- not isNewObj
- && not isSuperInit
- && not isSelfInit
- && not mustGenerateUnitAfterCall
- && isNil laterArgs
- && not (IsValRefIsDllImport cenv.g vref)
- && not isCCall
- && not hasByrefArg
-
- noTailCallBlockers // blockers that will prevent the IL level from emmiting a tail instruction
+ match f with
+ | ValUseAtApp(vref, valUseFlags) when cenv.mustTailCall.Contains vref.Deref ->
+
+ let canTailCall =
+ match tailCall with
+ | TailCall.No -> // an upper level has already decided that this is not in a tailcall position
+ false
+ | TailCall.Yes returnType ->
+ if vref.IsMemberOrModuleBinding && vref.ValReprInfo.IsSome then
+ let topValInfo = vref.ValReprInfo.Value
+
+ let nowArgs, laterArgs =
+ let _, curriedArgInfos, _, _ =
+ GetValReprTypeInFSharpForm cenv.g topValInfo vref.Type m
+
+ if argsl.Length >= curriedArgInfos.Length then
+ (List.splitAfter curriedArgInfos.Length argsl)
else
- true
+ ([], argsl)
- // warn if we call inside of recursive scope in non-tail-call manner/with tail blockers. See
- // ``Warn successfully in match clause``
- // ``Warn for byref parameters``
- if not canTailCall then
- warning (Error(FSComp.SR.chkNotTailRecursive vref.DisplayName, m))
- | _ -> ()
+ let numEnclosingTypars = CountEnclosingTyparsOfActualParentOfVal vref.Deref
+
+ let _, _, _, returnTy, _ =
+ GetValReprTypeInCompiledForm g topValInfo numEnclosingTypars vref.Type m
+
+ let _, _, isNewObj, isSuperInit, isSelfInit, _, _, _ =
+ GetMemberCallInfo cenv.g (vref, valUseFlags)
+
+ let isCCall =
+ match valUseFlags with
+ | PossibleConstrainedCall _ -> true
+ | _ -> false
+
+ let hasByrefArg = nowArgs |> List.exists (tyOfExpr cenv.g >> isByrefTy cenv.g)
+
+ let mustGenerateUnitAfterCall =
+ (Option.isNone returnTy && returnType <> TailCallReturnType.MustReturnVoid)
+
+ let noTailCallBlockers =
+ not isNewObj
+ && not isSuperInit
+ && not isSelfInit
+ && not mustGenerateUnitAfterCall
+ && isNil laterArgs
+ && not (IsValRefIsDllImport cenv.g vref)
+ && not isCCall
+ && not hasByrefArg
+
+ noTailCallBlockers // blockers that will prevent the IL level from emitting a tail instruction
+ else
+ true
+
+ // warn if we call inside of recursive scope in non-tail-call manner/with tail blockers. See
+ // ``Warn successfully in match clause``
+ // ``Warn for byref parameters``
+ if not canTailCall then
+ warning (Error(FSComp.SR.chkNotTailRecursive vref.DisplayName, m))
+ | _ -> ()
| _ -> ()
+/// Check an expression, where the expression is in a position where byrefs can be generated
+let rec CheckExprNoByrefs cenv (tailCall: TailCall) expr =
+ CheckExpr cenv expr PermitByRefExpr.No tailCall
+
/// Check call arguments, including the return argument.
and CheckCall cenv args ctxts (tailCall: TailCall) =
// detect CPS-like expressions
@@ -225,6 +230,13 @@ and CheckCall cenv args ctxts (tailCall: TailCall) =
| Expr.App _ -> Some(TailCall.YesFromExpr cenv.g e)
| IsAppInLambdaBody t -> Some t
| _ -> None
+ | Expr.App(args = args) ->
+ args
+ |> List.tryPick (fun a ->
+ match a with
+ | IsAppInLambdaBody t -> Some t
+ | _ -> None)
+
| _ -> None
// if we haven't already decided this is no tail call, try to detect CPS-like expressions
@@ -542,12 +554,10 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit =
| TOp.ValFieldSet _rf, _, [ _arg1; _arg2 ] -> ()
| TOp.Coerce, [ tgtTy; srcTy ], [ x ] ->
- let tailCall = TailCall.YesFromExpr cenv.g x
-
if TypeDefinitelySubsumesTypeNoCoercion 0 g cenv.amap m tgtTy srcTy then
- CheckExpr cenv x ctxt tailCall
+ CheckExpr cenv x ctxt TailCall.No
else
- CheckExprNoByrefs cenv tailCall x
+ CheckExprNoByrefs cenv TailCall.No x
| TOp.Reraise, [ _ty1 ], [] -> ()
@@ -720,7 +730,7 @@ and CheckBinding cenv alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bind) :
| Some info -> info
| _ -> ValReprInfo.emptyValData
- CheckLambdas isTop (Some v) cenv v.MustInline valReprInfo tailCall alwaysCheckNoReraise bindRhs v.Range v.Type ctxt
+ CheckLambdas isTop (Some v) cenv v.ShouldInline valReprInfo tailCall alwaysCheckNoReraise bindRhs v.Range v.Type ctxt
and CheckBindings cenv binds =
for bind in binds do
@@ -729,19 +739,8 @@ and CheckBindings cenv binds =
let CheckModuleBinding cenv (isRec: bool) (TBind _ as bind) =
// warn for non-rec functions which have the attribute
- if
- cenv.reportErrors
- && cenv.g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailCallAttrOnNonRec
- then
- let isNotAFunction =
- match bind.Var.ValReprInfo with
- | Some info -> info.HasNoArgs
- | _ -> false
-
- if
- (not isRec || isNotAFunction)
- && HasFSharpAttribute cenv.g cenv.g.attrib_TailCallAttribute bind.Var.Attribs
- then
+ if cenv.g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailCallAttrOnNonRec then
+ if not isRec && cenv.g.HasTailCallAttrib bind.Var.Attribs then
warning (Error(FSComp.SR.chkTailCallAttrOnNonRec (), bind.Var.Range))
// Check if a let binding to the result of a rec expression is not inside the rec expression
@@ -765,7 +764,18 @@ let CheckModuleBinding cenv (isRec: bool) (TBind _ as bind) =
| Expr.Lambda(bodyExpr = bodyExpr) -> checkTailCall insideSubBindingOrTry bodyExpr
| Expr.DebugPoint(_debugPointAtLeafExpr, expr) -> checkTailCall insideSubBindingOrTry expr
| Expr.Let(binding = binding; bodyExpr = bodyExpr) ->
- checkTailCall true binding.Expr
+ // detect continuation shapes like MakeAsync
+ let isContinuation =
+ match bodyExpr with
+ | Expr.App(funcExpr = Expr.Val(valRef = valRef)) ->
+ match valRef.GeneralizedType with
+ | [ _ ],
+ TType_fun(domainType = TType_fun(domainType = TType_app _; rangeType = TType_app _); rangeType = TType_app _) ->
+ true
+ | _ -> false
+ | _ -> false
+
+ checkTailCall (not isContinuation) binding.Expr
let warnForBodyExpr =
insideSubBindingOrTry
@@ -782,6 +792,7 @@ let CheckModuleBinding cenv (isRec: bool) (TBind _ as bind) =
// warn for recursive calls in TryWith/TryFinally operations
exprs |> Seq.iter (checkTailCall true)
| Expr.Op(args = exprs) -> exprs |> Seq.iter (checkTailCall insideSubBindingOrTry)
+ | Expr.Sequential(expr2 = expr2) -> checkTailCall insideSubBindingOrTry expr2
| _ -> ()
checkTailCall false bodyExpr
@@ -807,7 +818,7 @@ and CheckDefnInModule cenv mdef =
let mustTailCall =
Seq.fold
(fun mustTailCall (v: Val) ->
- if HasFSharpAttribute cenv.g cenv.g.attrib_TailCallAttribute v.Attribs then
+ if cenv.g.HasTailCallAttrib v.Attribs then
let newSet = Zset.add v mustTailCall
newSet
else
@@ -844,14 +855,17 @@ and CheckModuleSpec cenv isRec mbind =
| ModuleOrNamespaceBinding.Module(_mspec, rhs) -> CheckDefnInModule cenv rhs
-let CheckImplFile (g, amap, reportErrors, implFileContents) =
- let cenv =
- {
- g = g
- reportErrors = reportErrors
- stackGuard = StackGuard(PostInferenceChecksStackGuardDepth, "CheckImplFile")
- amap = amap
- mustTailCall = Zset.empty valOrder
- }
-
- CheckDefnInModule cenv implFileContents
+let CheckImplFile (g: TcGlobals, amap, reportErrors, implFileContents) =
+ if
+ reportErrors
+ && g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage
+ then
+ let cenv =
+ {
+ g = g
+ stackGuard = StackGuard(PostInferenceChecksStackGuardDepth, "CheckImplFile")
+ amap = amap
+ mustTailCall = Zset.empty valOrder
+ }
+
+ CheckDefnInModule cenv implFileContents
diff --git a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi
index 2fa3b16375..0600900eb2 100644
--- a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi
@@ -6,7 +6,7 @@ open FSharp.Compiler.TypedTree
/// Perform the TailCall analysis on the optimized TAST for a file.
/// The TAST is traversed analogously to the PostInferenceChecks phase.
-/// For functions that are annotated with the [] attribute, a warning is emmitted if they are called in a
+/// For functions that are annotated with the [] attribute, a warning is emitted if they are called in a
/// non-tailrecursive manner in the recursive scope of the function.
/// The ModuleOrNamespaceContents aren't mutated in any way by performing this check.
val CheckImplFile:
diff --git a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs
index a778b516d9..9bf7c2ec89 100644
--- a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs
+++ b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs
@@ -9,6 +9,7 @@ open FSharp.Compiler
open FSharp.Compiler.AbstractIL.IL
open FSharp.Compiler.DiagnosticsLogger
open FSharp.Compiler.Import
+open FSharp.Compiler.Import.Nullness
open FSharp.Compiler.Features
open FSharp.Compiler.Syntax
open FSharp.Compiler.SyntaxTreeOps
@@ -55,7 +56,10 @@ let GetSuperTypeOfType g amap m ty =
let tinst = argsOfAppTy g ty
match tdef.Extends with
| None -> None
- | Some ilTy -> Some (RescopeAndImportILType scoref amap m tinst ilTy)
+ | Some ilTy -> // 'inherit' can refer to a type which has nullable type arguments (e.g. List)
+ let typeAttrs = AttributesFromIL(tdef.MetadataIndex,tdef.CustomAttrsStored)
+ let nullness = {DirectAttributes = typeAttrs; Fallback = FromClass typeAttrs}
+ Some (RescopeAndImportILType scoref amap m tinst nullness ilTy)
| FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata ->
if isFSharpObjModelTy g ty || isFSharpExceptionTy g ty then
@@ -63,8 +67,8 @@ let GetSuperTypeOfType g amap m ty =
Some (instType (mkInstForAppTy g ty) (superOfTycon g tcref.Deref))
elif isArrayTy g ty then
Some g.system_Array_ty
- elif isRefTy g ty && not (isObjTy g ty) then
- Some g.obj_ty
+ elif isRefTy g ty && not (isObjTyAnyNullness g ty) then
+ Some g.obj_ty_noNulls
elif isStructTupleTy g ty then
Some g.system_Value_ty
elif isFSharpStructOrEnumTy g ty then
@@ -75,13 +79,19 @@ let GetSuperTypeOfType g amap m ty =
elif isStructAnonRecdTy g ty then
Some g.system_Value_ty
elif isAnonRecdTy g ty then
- Some g.obj_ty
+ Some g.obj_ty_noNulls
elif isRecdTy g ty || isUnionTy g ty then
- Some g.obj_ty
+ Some g.obj_ty_noNulls
else
None
- resBeforeNull
+ match resBeforeNull with
+ | Some superTy ->
+ let nullness = nullnessOfTy g ty
+ let superTyWithNull = addNullnessToTy nullness superTy
+ Some superTyWithNull
+ | None ->
+ None
/// Make a type for System.Collections.Generic.IList
let mkSystemCollectionsGenericIListTy (g: TcGlobals) ty =
@@ -107,9 +117,16 @@ let GetImmediateInterfacesOfMetadataType g amap m skipUnref ty (tcref: TyconRef)
// succeeded with more reported. There are pathological corner cases where this
// doesn't apply: e.g. for mscorlib interfaces like IComparable, but we can always
// assume those are present.
- for intfTy in tdef.Implements do
+ let checkNullness = g.langFeatureNullness && g.checkNullness
+ for {Idx = attrsIdx; Type = intfTy; CustomAttrsStored = attrs} in tdef.Implements.Value do
if skipUnref = SkipUnrefInterfaces.No || CanRescopeAndImportILType scoref amap m intfTy then
- RescopeAndImportILType scoref amap m tinst intfTy
+ if checkNullness then
+ let typeAttrs = AttributesFromIL(attrsIdx,attrs)
+ let nullness = {DirectAttributes = typeAttrs; Fallback = FromClass typeAttrs}
+ RescopeAndImportILType scoref amap m tinst nullness intfTy
+ else
+ RescopeAndImportILTypeSkipNullness scoref amap m tinst intfTy
+
| FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata ->
for intfTy in tcref.ImmediateInterfaceTypesOfFSharpTycon do
instType (mkInstForAppTy g ty) intfTy ]
@@ -119,7 +136,7 @@ let GetImmediateInterfacesOfMetadataType g amap m skipUnref ty (tcref: TyconRef)
//
// NOTE: Anonymous record types are not directly considered to implement IComparable,
// IComparable or IEquatable. This is because whether they support these interfaces depend on their
-// consitutent types, which may not yet be known in type inference.
+// constituent types, which may not yet be known in type inference.
let rec GetImmediateInterfacesOfType skipUnref g amap m ty =
[
match tryAppTy g ty with
@@ -178,15 +195,15 @@ and GetImmediateInterfacesOfMeasureAnnotatedType skipUnref g amap m ty reprTy =
intfTy
// NOTE: we should really only report the IComparable> interface for measure-annotated types
- // if the original type supports IComparable somewhere in the hierarchy, likeiwse IEquatable>.
+ // if the original type supports IComparable somewhere in the hierarchy, likewise IEquatable>.
//
// However since F# 2.0 we have always reported these interfaces for all measure-annotated types.
//if ExistsInInterfaceHierarchy (typeEquiv g (mkAppTy g.system_GenericIComparable_tcref [reprTy])) skipUnref g amap m ty then
- mkAppTy g.system_GenericIComparable_tcref [ty]
+ mkWoNullAppTy g.system_GenericIComparable_tcref [ty]
//if ExistsInInterfaceHierarchy (typeEquiv g (mkAppTy g.system_GenericIEquatable_tcref [reprTy])) skipUnref g amap m ty then
- mkAppTy g.system_GenericIEquatable_tcref [ty]
+ mkWoNullAppTy g.system_GenericIEquatable_tcref [ty]
]
// Check for any System.Numerics type in the interface hierarchy
@@ -249,11 +266,11 @@ let FoldHierarchyOfTypeAux followInterfaces allowMultiIntfInst skipUnref visitor
List.foldBack
(loop (ndeep+1))
(GetImmediateInterfacesOfType skipUnref g amap m ty)
- (loop ndeep g.obj_ty state)
+ (loop ndeep g.obj_ty_noNulls state)
else
match tryDestTyparTy g ty with
| ValueSome tp ->
- let state = loop (ndeep+1) g.obj_ty state
+ let state = loop (ndeep+1) g.obj_ty_noNulls state
List.foldBack
(fun x vacc ->
match x with
@@ -264,8 +281,10 @@ let FoldHierarchyOfTypeAux followInterfaces allowMultiIntfInst skipUnref visitor
| TyparConstraint.IsEnum _
| TyparConstraint.IsDelegate _
| TyparConstraint.SupportsNull _
+ | TyparConstraint.NotSupportsNull _
| TyparConstraint.IsNonNullableStruct _
| TyparConstraint.IsUnmanaged _
+ | TyparConstraint.AllowsRefStruct _
| TyparConstraint.IsReferenceType _
| TyparConstraint.SimpleChoice _
| TyparConstraint.RequiresDefaultConstructor _ -> vacc
@@ -349,33 +368,38 @@ let ExistsHeadTypeInEntireHierarchy g amap m typeToSearchFrom tcrefToLookFor =
ExistsInEntireHierarchyOfType (HasHeadType g tcrefToLookFor) g amap m AllowMultiIntfInstantiations.Yes typeToSearchFrom
/// Read an Abstract IL type from metadata and convert to an F# type.
-let ImportILTypeFromMetadata amap m scoref tinst minst ilTy =
- RescopeAndImportILType scoref amap m (tinst@minst) ilTy
+let ImportILTypeFromMetadata amap m scoref tinst minst nullnessSource ilTy =
+ RescopeAndImportILType scoref amap m (tinst@minst) nullnessSource ilTy
+
+/// Read an Abstract IL type from metadata and convert to an F# type, ignoring nullness checking.
+let ImportILTypeFromMetadataSkipNullness amap m scoref tinst minst ilTy =
+ RescopeAndImportILTypeSkipNullness scoref amap m (tinst@minst) ilTy
/// Read an Abstract IL type from metadata, including any attributes that may affect the type itself, and convert to an F# type.
-let ImportILTypeFromMetadataWithAttributes amap m scoref tinst minst ilTy getCattrs =
- let ty = RescopeAndImportILType scoref amap m (tinst@minst) ilTy
+let ImportILTypeFromMetadataWithAttributes amap m scoref tinst minst nullnessSource ilTy =
+ let ty = RescopeAndImportILType scoref amap m (tinst@minst) nullnessSource ilTy
+
// If the type is a byref and one of attributes from a return or parameter has
// - a `IsReadOnlyAttribute` - it's an inref
// - a `RequiresLocationAttribute` (in which case it's a `ref readonly`) which we treat as inref,
// latter is an ad-hoc fix for https://github.com/dotnet/runtime/issues/94317.
if isByrefTy amap.g ty
- && (TryFindILAttribute amap.g.attrib_IsReadOnlyAttribute (getCattrs ())
- || TryFindILAttribute amap.g.attrib_RequiresLocationAttribute (getCattrs ())) then
+ && (TryFindILAttribute amap.g.attrib_IsReadOnlyAttribute (nullnessSource.DirectAttributes.Read())
+ || TryFindILAttribute amap.g.attrib_RequiresLocationAttribute (nullnessSource.DirectAttributes.Read())) then
mkInByrefTy amap.g (destByrefTy amap.g ty)
else
ty
/// Get the parameter type of an IL method.
-let ImportParameterTypeFromMetadata amap m ilTy getCattrs scoref tinst mist =
- ImportILTypeFromMetadataWithAttributes amap m scoref tinst mist ilTy getCattrs
+let ImportParameterTypeFromMetadata amap m nullnessSource ilTy scoref tinst mist =
+ ImportILTypeFromMetadataWithAttributes amap m scoref tinst mist nullnessSource ilTy
/// Get the return type of an IL method, taking into account instantiations for type, return attributes and method generic parameters, and
/// translating 'void' to 'None'.
-let ImportReturnTypeFromMetadata amap m ilTy getCattrs scoref tinst minst =
+let ImportReturnTypeFromMetadata amap m nullnessSource ilTy scoref tinst minst =
match ilTy with
| ILType.Void -> None
- | retTy -> Some(ImportILTypeFromMetadataWithAttributes amap m scoref tinst minst retTy getCattrs)
+ | retTy -> Some(ImportILTypeFromMetadataWithAttributes amap m scoref tinst minst nullnessSource retTy )
/// Copy constraints. If the constraint comes from a type parameter associated
@@ -388,7 +412,9 @@ let ImportReturnTypeFromMetadata amap m ilTy getCattrs scoref tinst minst =
let CopyTyparConstraints m tprefInst (tporig: Typar) =
tporig.Constraints
- |> List.map (fun tpc ->
+ // F# does not have escape analysis for authoring 'allows ref struct' generic code. Therefore, typar is not copied, can only come from C# authored code
+ |> List.filter (fun tp -> match tp with | TyparConstraint.AllowsRefStruct _ -> false | _ -> true)
+ |> List.map (fun tpc ->
match tpc with
| TyparConstraint.CoercesTo(ty, _) ->
TyparConstraint.CoercesTo (instType tprefInst ty, m)
@@ -400,6 +426,8 @@ let CopyTyparConstraints m tprefInst (tporig: Typar) =
TyparConstraint.IsEnum (instType tprefInst underlyingTy, m)
| TyparConstraint.SupportsComparison _ ->
TyparConstraint.SupportsComparison m
+ | TyparConstraint.NotSupportsNull _ ->
+ TyparConstraint.NotSupportsNull m
| TyparConstraint.SupportsEquality _ ->
TyparConstraint.SupportsEquality m
| TyparConstraint.IsDelegate(argTys, retTy, _) ->
@@ -408,6 +436,7 @@ let CopyTyparConstraints m tprefInst (tporig: Typar) =
TyparConstraint.IsNonNullableStruct m
| TyparConstraint.IsUnmanaged _ ->
TyparConstraint.IsUnmanaged m
+ | TyparConstraint.AllowsRefStruct _ -> failwith "impossible, filtered above"
| TyparConstraint.IsReferenceType _ ->
TyparConstraint.IsReferenceType m
| TyparConstraint.SimpleChoice (tys, _) ->
diff --git a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fsi b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fsi
index 225e618747..8633f9827f 100644
--- a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fsi
@@ -117,6 +117,17 @@ val ExistsHeadTypeInEntireHierarchy:
/// Read an Abstract IL type from metadata and convert to an F# type.
val ImportILTypeFromMetadata:
+ amap: ImportMap ->
+ m: range ->
+ scoref: ILScopeRef ->
+ tinst: TType list ->
+ minst: TType list ->
+ nullnessSource: Nullness.NullableAttributesSource ->
+ ilTy: ILType ->
+ TType
+
+/// Read an Abstract IL type from metadata and convert to an F# type, ignoring nullness checking.
+val ImportILTypeFromMetadataSkipNullness:
amap: ImportMap -> m: range -> scoref: ILScopeRef -> tinst: TType list -> minst: TType list -> ilTy: ILType -> TType
/// Read an Abstract IL type from metadata, including any attributes that may affect the type itself, and convert to an F# type.
@@ -126,16 +137,16 @@ val ImportILTypeFromMetadataWithAttributes:
scoref: ILScopeRef ->
tinst: TType list ->
minst: TType list ->
+ nullnessSource: Nullness.NullableAttributesSource ->
ilTy: ILType ->
- getCattrs: (unit -> ILAttributes) ->
TType
/// Get the parameter type of an IL method.
val ImportParameterTypeFromMetadata:
amap: ImportMap ->
m: range ->
+ nullnessSource: Nullness.NullableAttributesSource ->
ilTy: ILType ->
- getCattrs: (unit -> ILAttributes) ->
scoref: ILScopeRef ->
tinst: TType list ->
mist: TType list ->
@@ -146,8 +157,8 @@ val ImportParameterTypeFromMetadata:
val ImportReturnTypeFromMetadata:
amap: ImportMap ->
m: range ->
+ nullnessSource: Nullness.NullableAttributesSource ->
ilTy: ILType ->
- getCattrs: (unit -> ILAttributes) ->
scoref: ILScopeRef ->
tinst: TType list ->
minst: TType list ->
diff --git a/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs b/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs
index 49afd4825b..6c38b68d80 100644
--- a/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs
+++ b/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs
@@ -6,7 +6,8 @@ module internal FSharp.Compiler.TypeRelations
open FSharp.Compiler.Features
open Internal.Utilities.Collections
-open Internal.Utilities.Library
+open Internal.Utilities.Library
+
open FSharp.Compiler.DiagnosticsLogger
open FSharp.Compiler.TcGlobals
open FSharp.Compiler.TypedTree
@@ -14,38 +15,43 @@ open FSharp.Compiler.TypedTreeBasics
open FSharp.Compiler.TypedTreeOps
open FSharp.Compiler.TypeHierarchy
+open Import
+
+#nowarn "3391"
+
/// Implements a :> b without coercion based on finalized (no type variable) types
-// Note: This relation is approximate and not part of the language specification.
+// Note: This relation is approximate and not part of the language specification.
//
-// Some appropriate uses:
+// Some appropriate uses:
// patcompile.fs: IsDiscrimSubsumedBy (approximate warning for redundancy of 'isinst' patterns)
// tc.fs: TcRuntimeTypeTest (approximate warning for redundant runtime type tests)
// tc.fs: TcExnDefnCore (error for bad exception abbreviation)
// ilxgen.fs: GenCoerce (omit unnecessary castclass or isinst instruction)
//
-let rec TypeDefinitelySubsumesTypeNoCoercion ndeep g amap m ty1 ty2 =
- if ndeep > 100 then error(InternalError("recursive class hierarchy (detected in TypeDefinitelySubsumesTypeNoCoercion), ty1 = " + (DebugPrint.showType ty1), m))
- if ty1 === ty2 then true
- elif typeEquiv g ty1 ty2 then true
- else
- let ty1 = stripTyEqns g ty1
- let ty2 = stripTyEqns g ty2
- // F# reference types are subtypes of type 'obj'
- (typeEquiv g ty1 g.obj_ty && isRefTy g ty2) ||
- // Follow the supertype chain
- (isAppTy g ty2 &&
- isRefTy g ty2 &&
+let rec TypeDefinitelySubsumesTypeNoCoercion ndeep g amap m ty1 ty2 =
+
+ if ndeep > 100 then
+ error(InternalError("Large class hierarchy (possibly recursive, detected in TypeDefinitelySubsumesTypeNoCoercion), ty1 = " + (DebugPrint.showType ty1), m))
- ((match GetSuperTypeOfType g amap m ty2 with
- | None -> false
- | Some ty -> TypeDefinitelySubsumesTypeNoCoercion (ndeep+1) g amap m ty1 ty) ||
+ if ty1 === ty2 then true
+ elif typeEquiv g ty1 ty2 then true
+ else
+ let ty1 = stripTyEqns g ty1
+ let ty2 = stripTyEqns g ty2
+ // F# reference types are subtypes of type 'obj'
+ (typeEquiv g ty1 g.obj_ty_ambivalent && isRefTy g ty2) ||
+ // Follow the supertype chain
+ (isAppTy g ty2 &&
+ isRefTy g ty2 &&
- // Follow the interface hierarchy
- (isInterfaceTy g ty1 &&
- ty2 |> GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m
- |> List.exists (TypeDefinitelySubsumesTypeNoCoercion (ndeep+1) g amap m ty1))))
+ ((match GetSuperTypeOfType g amap m ty2 with
+ | None -> false
+ | Some ty -> TypeDefinitelySubsumesTypeNoCoercion (ndeep+1) g amap m ty1 ty) ||
-type CanCoerce = CanCoerce | NoCoerce
+ // Follow the interface hierarchy
+ (isInterfaceTy g ty1 &&
+ ty2 |> GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m
+ |> List.exists (TypeDefinitelySubsumesTypeNoCoercion (ndeep+1) g amap m ty1))))
let stripAll stripMeasures g ty =
if stripMeasures then
@@ -54,80 +60,111 @@ let stripAll stripMeasures g ty =
ty |> stripTyEqns g
/// The feasible equivalence relation. Part of the language spec.
-let rec TypesFeasiblyEquivalent stripMeasures ndeep g amap m ty1 ty2 =
+let rec TypesFeasiblyEquivalent stripMeasures ndeep g amap m ty1 ty2 =
- if ndeep > 100 then error(InternalError("recursive class hierarchy (detected in TypeFeasiblySubsumesType), ty1 = " + (DebugPrint.showType ty1), m));
+ if ndeep > 100 then
+ error(InternalError("Large class hierarchy (possibly recursive, detected in TypeFeasiblySubsumesType), ty1 = " + (DebugPrint.showType ty1), m));
let ty1 = stripAll stripMeasures g ty1
let ty2 = stripAll stripMeasures g ty2
match ty1, ty2 with
- | TType_var _, _
+ | TType_measure _, TType_measure _
+ | TType_var _, _
| _, TType_var _ -> true
| TType_app (tcref1, l1, _), TType_app (tcref2, l2, _) when tyconRefEq g tcref1 tcref2 ->
List.lengthsEqAndForall2 (TypesFeasiblyEquivalent stripMeasures ndeep g amap m) l1 l2
- | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) ->
+ | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) ->
(evalTupInfoIsStruct anonInfo1.TupInfo = evalTupInfoIsStruct anonInfo2.TupInfo) &&
(match anonInfo1.Assembly, anonInfo2.Assembly with ccu1, ccu2 -> ccuEq ccu1 ccu2) &&
(anonInfo1.SortedNames = anonInfo2.SortedNames) &&
List.lengthsEqAndForall2 (TypesFeasiblyEquivalent stripMeasures ndeep g amap m) l1 l2
- | TType_tuple (tupInfo1, l1), TType_tuple (tupInfo2, l2) ->
+ | TType_tuple (tupInfo1, l1), TType_tuple (tupInfo2, l2) ->
evalTupInfoIsStruct tupInfo1 = evalTupInfoIsStruct tupInfo2 &&
- List.lengthsEqAndForall2 (TypesFeasiblyEquivalent stripMeasures ndeep g amap m) l1 l2
+ List.lengthsEqAndForall2 (TypesFeasiblyEquivalent stripMeasures ndeep g amap m) l1 l2
- | TType_fun (domainTy1, rangeTy1, _), TType_fun (domainTy2, rangeTy2, _) ->
+ | TType_fun (domainTy1, rangeTy1, _), TType_fun (domainTy2, rangeTy2, _) ->
TypesFeasiblyEquivalent stripMeasures ndeep g amap m domainTy1 domainTy2 &&
TypesFeasiblyEquivalent stripMeasures ndeep g amap m rangeTy1 rangeTy2
- | TType_measure _, TType_measure _ ->
- true
-
- | _ ->
+ | _ ->
false
/// The feasible equivalence relation. Part of the language spec.
-let rec TypesFeasiblyEquiv ndeep g amap m ty1 ty2 =
+let TypesFeasiblyEquiv ndeep g amap m ty1 ty2 =
TypesFeasiblyEquivalent false ndeep g amap m ty1 ty2
/// The feasible equivalence relation after stripping Measures.
let TypesFeasiblyEquivStripMeasures g amap m ty1 ty2 =
TypesFeasiblyEquivalent true 0 g amap m ty1 ty2
+let inline TryGetCachedTypeSubsumption (g: TcGlobals) (amap: ImportMap) key =
+ if g.compilationMode = CompilationMode.OneOff && g.langVersion.SupportsFeature LanguageFeature.UseTypeSubsumptionCache then
+ match amap.TypeSubsumptionCache.TryGetValue(key) with
+ | true, subsumes ->
+ ValueSome subsumes
+ | false, _ ->
+ ValueNone
+ else
+ ValueNone
+
+let inline UpdateCachedTypeSubsumption (g: TcGlobals) (amap: ImportMap) key subsumes : unit =
+ if g.compilationMode = CompilationMode.OneOff && g.langVersion.SupportsFeature LanguageFeature.UseTypeSubsumptionCache then
+ amap.TypeSubsumptionCache[key] <- subsumes
+
/// The feasible coercion relation. Part of the language spec.
-let rec TypeFeasiblySubsumesType ndeep g amap m ty1 canCoerce ty2 =
- if ndeep > 100 then error(InternalError("recursive class hierarchy (detected in TypeFeasiblySubsumesType), ty1 = " + (DebugPrint.showType ty1), m))
- let ty1 = stripTyEqns g ty1
- let ty2 = stripTyEqns g ty2
- match ty1, ty2 with
- | TType_var _, _ | _, TType_var _ -> true
+let rec TypeFeasiblySubsumesType ndeep (g: TcGlobals) (amap: ImportMap) m (ty1: TType) (canCoerce: CanCoerce) (ty2: TType) =
- | TType_app (tc1, l1, _), TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 ->
- List.lengthsEqAndForall2 (TypesFeasiblyEquiv ndeep g amap m) l1 l2
+ if ndeep > 100 then
+ error(InternalError("Large class hierarchy (possibly recursive, detected in TypeFeasiblySubsumesType), ty1 = " + (DebugPrint.showType ty1), m))
- | TType_tuple _, TType_tuple _
- | TType_anon _, TType_anon _
- | TType_fun _, TType_fun _ ->
- TypesFeasiblyEquiv ndeep g amap m ty1 ty2
+ let ty1 = stripTyEqns g ty1
+ let ty2 = stripTyEqns g ty2
- | TType_measure _, TType_measure _ ->
- true
+ // Check if language feature supported
+ let key = TTypeCacheKey.FromStrippedTypes (ty1, ty2, canCoerce, g)
+
+ match TryGetCachedTypeSubsumption g amap key with
+ | ValueSome subsumes ->
+ subsumes
+ | ValueNone ->
+ let subsumes =
+ match ty1, ty2 with
+ | TType_measure _, TType_measure _
+ | TType_var _, _ | _, TType_var _ ->
+ true
+
+ | TType_app (tc1, l1, _), TType_app (tc2, l2, _) when tyconRefEq g tc1 tc2 ->
+ List.lengthsEqAndForall2 (TypesFeasiblyEquiv ndeep g amap m) l1 l2
+
+ | TType_tuple _, TType_tuple _
+ | TType_anon _, TType_anon _
+ | TType_fun _, TType_fun _ ->
+ TypesFeasiblyEquiv ndeep g amap m ty1 ty2
+
+ | _ ->
+ // F# reference types are subtypes of type 'obj'
+ if isObjTyAnyNullness g ty1 && (canCoerce = CanCoerce || isRefTy g ty2) then
+ true
+ elif isAppTy g ty2 && (canCoerce = CanCoerce || isRefTy g ty2) && TypeFeasiblySubsumesTypeWithSupertypeCheck g amap m ndeep ty1 ty2 then
+ true
+ else
+ let interfaces = GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m ty2
+ // See if any interface in type hierarchy of ty2 is a supertype of ty1
+ List.exists (TypeFeasiblySubsumesType (ndeep + 1) g amap m ty1 NoCoerce) interfaces
+
+ UpdateCachedTypeSubsumption g amap key subsumes
+
+ subsumes
+
+and TypeFeasiblySubsumesTypeWithSupertypeCheck g amap m ndeep ty1 ty2 =
+ match GetSuperTypeOfType g amap m ty2 with
+ | None -> false
+ | Some ty -> TypeFeasiblySubsumesType (ndeep + 1) g amap m ty1 NoCoerce ty
- | _ ->
- // F# reference types are subtypes of type 'obj'
- (isObjTy g ty1 && (canCoerce = CanCoerce || isRefTy g ty2))
- ||
- (isAppTy g ty2 &&
- (canCoerce = CanCoerce || isRefTy g ty2) &&
- begin match GetSuperTypeOfType g amap m ty2 with
- | None -> false
- | Some ty -> TypeFeasiblySubsumesType (ndeep+1) g amap m ty1 NoCoerce ty
- end ||
- ty2 |> GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m
- |> List.exists (TypeFeasiblySubsumesType (ndeep+1) g amap m ty1 NoCoerce))
-
/// Choose solutions for Expr.TyChoose type "hidden" variables introduced
/// by letrec nodes. Also used by the pattern match compiler to choose type
/// variables when compiling patterns at generalized bindings.
@@ -136,49 +173,48 @@ let rec TypeFeasiblySubsumesType ndeep g amap m ty1 canCoerce ty2 =
let ChooseTyparSolutionAndRange (g: TcGlobals) amap (tp:Typar) =
let m = tp.Range
let (maxTy, isRefined), m =
- let initialTy =
- match tp.Kind with
- | TyparKind.Type -> g.obj_ty
+ let initialTy =
+ match tp.Kind with
+ | TyparKind.Type -> g.obj_ty_noNulls
| TyparKind.Measure -> TType_measure Measure.One
// Loop through the constraints computing the lub
(((initialTy, false), m), tp.Constraints) ||> List.fold (fun ((maxTy, isRefined), _) tpc ->
- let join m x =
+ let join m x =
if TypeFeasiblySubsumesType 0 g amap m x CanCoerce maxTy then maxTy, isRefined
elif TypeFeasiblySubsumesType 0 g amap m maxTy CanCoerce x then x, true
else errorR(Error(FSComp.SR.typrelCannotResolveImplicitGenericInstantiation((DebugPrint.showType x), (DebugPrint.showType maxTy)), m)); maxTy, isRefined
- // Don't continue if an error occurred and we set the value eagerly
+ // Don't continue if an error occurred and we set the value eagerly
if tp.IsSolved then (maxTy, isRefined), m else
- match tpc with
- | TyparConstraint.CoercesTo(x, m) ->
+ match tpc with
+ | TyparConstraint.CoercesTo(x, m) ->
join m x, m
- | TyparConstraint.MayResolveMember(_traitInfo, m) ->
- (maxTy, isRefined), m
| TyparConstraint.SimpleChoice(_, m) ->
errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInPrintf(), m))
(maxTy, isRefined), m
- | TyparConstraint.SupportsNull m ->
- (maxTy, isRefined), m
+ | TyparConstraint.SupportsNull m ->
+ ((addNullnessToTy KnownWithNull maxTy), isRefined), m
| TyparConstraint.SupportsComparison m ->
join m g.mk_IComparable_ty, m
- | TyparConstraint.SupportsEquality m ->
- (maxTy, isRefined), m
| TyparConstraint.IsEnum(_, m) ->
errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInEnum(), m))
(maxTy, isRefined), m
- | TyparConstraint.IsDelegate(_, _, m) ->
+ | TyparConstraint.IsDelegate(_, _, m) ->
errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInDelegate(), m))
(maxTy, isRefined), m
- | TyparConstraint.IsNonNullableStruct m ->
+ | TyparConstraint.IsNonNullableStruct m ->
join m g.int_ty, m
| TyparConstraint.IsUnmanaged m ->
errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInUnmanaged(), m))
(maxTy, isRefined), m
- | TyparConstraint.RequiresDefaultConstructor m ->
+ | TyparConstraint.NotSupportsNull m // NOTE: this doesn't "force" non-nullness, since it is the default choice in 'obj' or 'int'
+ | TyparConstraint.SupportsEquality m
+ | TyparConstraint.AllowsRefStruct m
+ | TyparConstraint.RequiresDefaultConstructor m
+ | TyparConstraint.IsReferenceType m
+ | TyparConstraint.MayResolveMember(_, m)
+ | TyparConstraint.DefaultsTo(_,_, m) ->
(maxTy, isRefined), m
- | TyparConstraint.IsReferenceType m ->
- (maxTy, isRefined), m
- | TyparConstraint.DefaultsTo(_priority, _ty, m) ->
- (maxTy, isRefined), m)
+ )
if g.langVersion.SupportsFeature LanguageFeature.DiagnosticForObjInference then
match tp.Kind with
@@ -189,7 +225,7 @@ let ChooseTyparSolutionAndRange (g: TcGlobals) amap (tp:Typar) =
maxTy, m
-let ChooseTyparSolution g amap tp =
+let ChooseTyparSolution g amap tp =
let ty, _m = ChooseTyparSolutionAndRange g amap tp
if tp.Rigidity = TyparRigidity.Anon && typeEquiv g ty (TType_measure Measure.One) then
warning(Error(FSComp.SR.csCodeLessGeneric(), tp.Range))
@@ -199,14 +235,14 @@ let ChooseTyparSolution g amap tp =
// For example
// 'a = Expr<'b>
// 'b = int
-// In this case the solutions are
+// In this case the solutions are
// 'a = Expr
// 'b = int
// We ground out the solutions by repeatedly instantiating
-let IterativelySubstituteTyparSolutions g tps solutions =
+let IterativelySubstituteTyparSolutions g tps solutions =
let tpenv = mkTyparInst tps solutions
- let rec loop n curr =
- let curr' = curr |> instTypes tpenv
+ let rec loop n curr =
+ let curr' = curr |> instTypes tpenv
// We cut out at n > 40 just in case this loops. It shouldn't, since there should be no cycles in the
// solution equations, and we've only ever seen one example where even n = 2 was required.
// Perhaps it's possible in error recovery some strange situations could occur where cycles
@@ -214,25 +250,25 @@ let IterativelySubstituteTyparSolutions g tps solutions =
//
// We don't give an error if we hit the limit since it's feasible that the solutions of unknowns
// is not actually relevant to the rest of type checking or compilation.
- if n > 40 || List.forall2 (typeEquiv g) curr curr' then
- curr
- else
+ if n > 40 || List.forall2 (typeEquiv g) curr curr' then
+ curr
+ else
loop (n+1) curr'
loop 0 solutions
-let ChooseTyparSolutionsForFreeChoiceTypars g amap e =
- match stripDebugPoints e with
- | Expr.TyChoose (tps, e1, _m) ->
-
- /// Only make choices for variables that are actually used in the expression
+let ChooseTyparSolutionsForFreeChoiceTypars g amap e =
+ match stripDebugPoints e with
+ | Expr.TyChoose (tps, e1, _m) ->
+
+ /// Only make choices for variables that are actually used in the expression
let ftvs = (freeInExpr CollectTyparsNoCaching e1).FreeTyvars.FreeTypars
let tps = tps |> List.filter (Zset.memberOf ftvs)
-
+
let solutions = tps |> List.map (ChooseTyparSolution g amap) |> IterativelySubstituteTyparSolutions g tps
-
+
let tpenv = mkTyparInst tps solutions
-
+
instExpr g tpenv e1
| _ -> e
@@ -242,51 +278,51 @@ let ChooseTyparSolutionsForFreeChoiceTypars g amap e =
/// PostTypeCheckSemanticChecks before we've eliminated these nodes.
let tryDestLambdaWithValReprInfo g amap valReprInfo (lambdaExpr, ty) =
let (ValReprInfo (tpNames, _, _)) = valReprInfo
- let rec stripLambdaUpto n (e, ty) =
- match stripDebugPoints e with
- | Expr.Lambda (_, None, None, v, b, _, retTy) when n > 0 ->
+ let rec stripLambdaUpto n (e, ty) =
+ match stripDebugPoints e with
+ | Expr.Lambda (_, None, None, v, b, _, retTy) when n > 0 ->
let vs', b', retTy' = stripLambdaUpto (n-1) (b, retTy)
- (v :: vs', b', retTy')
- | _ ->
+ (v :: vs', b', retTy')
+ | _ ->
([], e, ty)
- let rec startStripLambdaUpto n (e, ty) =
- match stripDebugPoints e with
- | Expr.Lambda (_, ctorThisValOpt, baseValOpt, v, b, _, retTy) when n > 0 ->
+ let rec startStripLambdaUpto n (e, ty) =
+ match stripDebugPoints e with
+ | Expr.Lambda (_, ctorThisValOpt, baseValOpt, v, b, _, retTy) when n > 0 ->
let vs', b', retTy' = stripLambdaUpto (n-1) (b, retTy)
- (ctorThisValOpt, baseValOpt, (v :: vs'), b', retTy')
- | Expr.TyChoose (_tps, _b, _) ->
+ (ctorThisValOpt, baseValOpt, (v :: vs'), b', retTy')
+ | Expr.TyChoose (_tps, _b, _) ->
startStripLambdaUpto n (ChooseTyparSolutionsForFreeChoiceTypars g amap e, ty)
- | _ ->
+ | _ ->
(None, None, [], e, ty)
let n = valReprInfo.NumCurriedArgs
- let tps, bodyExpr, bodyTy =
- match stripDebugPoints lambdaExpr with
- | Expr.TyLambda (_, tps, b, _, retTy) when not (isNil tpNames) -> tps, b, retTy
+ let tps, bodyExpr, bodyTy =
+ match stripDebugPoints lambdaExpr with
+ | Expr.TyLambda (_, tps, b, _, retTy) when not (isNil tpNames) -> tps, b, retTy
| _ -> [], lambdaExpr, ty
let ctorThisValOpt, baseValOpt, vsl, body, retTy = startStripLambdaUpto n (bodyExpr, bodyTy)
- if vsl.Length <> n then
- None
+ if vsl.Length <> n then
+ None
else
Some (tps, ctorThisValOpt, baseValOpt, vsl, body, retTy)
-let destLambdaWithValReprInfo g amap valReprInfo (lambdaExpr, ty) =
- match tryDestLambdaWithValReprInfo g amap valReprInfo (lambdaExpr, ty) with
+let destLambdaWithValReprInfo g amap valReprInfo (lambdaExpr, ty) =
+ match tryDestLambdaWithValReprInfo g amap valReprInfo (lambdaExpr, ty) with
| None -> error(Error(FSComp.SR.typrelInvalidValue(), lambdaExpr.Range))
| Some res -> res
-
+
let IteratedAdjustArityOfLambdaBody g arities vsl body =
- (arities, vsl, ([], body)) |||> List.foldBack2 (fun arities vs (allvs, body) ->
+ (arities, vsl, ([], body)) |||> List.foldBack2 (fun arities vs (allvs, body) ->
let vs, body = AdjustArityOfLambdaBody g arities vs body
vs :: allvs, body)
-/// Do IteratedAdjustArityOfLambdaBody for a series of iterated lambdas, producing one method.
-/// The required iterated function arity (List.length valReprInfo) must be identical
-/// to the iterated function arity of the input lambda (List.length vsl)
+/// Do IteratedAdjustArityOfLambdaBody for a series of iterated lambdas, producing one method.
+/// The required iterated function arity (List.length valReprInfo) must be identical
+/// to the iterated function arity of the input lambda (List.length vsl)
let IteratedAdjustLambdaToMatchValReprInfo g amap valReprInfo lambdaExpr =
let lambdaExprTy = tyOfExpr g lambdaExpr
@@ -295,7 +331,7 @@ let IteratedAdjustLambdaToMatchValReprInfo g amap valReprInfo lambdaExpr =
let arities = valReprInfo.AritiesOfArgs
- if arities.Length <> vsl.Length then
+ if arities.Length <> vsl.Length then
errorR(InternalError(sprintf "IteratedAdjustLambdaToMatchValReprInfo, #arities = %d, #vsl = %d" arities.Length vsl.Length, body.Range))
let vsl, body = IteratedAdjustArityOfLambdaBody g arities vsl body
@@ -304,6 +340,6 @@ let IteratedAdjustLambdaToMatchValReprInfo g amap valReprInfo lambdaExpr =
/// "Single Feasible Type" inference
/// Look for the unique supertype of ty2 for which ty2 :> ty1 might feasibly hold
-let FindUniqueFeasibleSupertype g amap m ty1 ty2 =
+let FindUniqueFeasibleSupertype g amap m ty1 ty2 =
let supertypes = Option.toList (GetSuperTypeOfType g amap m ty2) @ (GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m ty2)
- supertypes |> List.tryFind (TypeFeasiblySubsumesType 0 g amap m ty1 NoCoerce)
+ supertypes |> List.tryFind (TypeFeasiblySubsumesType 0 g amap m ty1 NoCoerce)
diff --git a/src/fcs-fable/src/Compiler/Checking/TypeRelations.fsi b/src/fcs-fable/src/Compiler/Checking/TypeRelations.fsi
index b33852fae5..9419e617d7 100644
--- a/src/fcs-fable/src/Compiler/Checking/TypeRelations.fsi
+++ b/src/fcs-fable/src/Compiler/Checking/TypeRelations.fsi
@@ -9,10 +9,6 @@ open FSharp.Compiler.TcGlobals
open FSharp.Compiler.Text
open FSharp.Compiler.TypedTree
-type CanCoerce =
- | CanCoerce
- | NoCoerce
-
/// Implements a :> b without coercion based on finalized (no type variable) types
val TypeDefinitelySubsumesTypeNoCoercion:
ndeep: int -> g: TcGlobals -> amap: ImportMap -> m: range -> ty1: TType -> ty2: TType -> bool
diff --git a/src/fcs-fable/src/Compiler/Checking/import.fs b/src/fcs-fable/src/Compiler/Checking/import.fs
index 7f1f13efda..a1deee1c8a 100644
--- a/src/fcs-fable/src/Compiler/Checking/import.fs
+++ b/src/fcs-fable/src/Compiler/Checking/import.fs
@@ -8,7 +8,9 @@ open System.Collections.Generic
open System.Collections.Immutable
open Internal.Utilities.Library
open Internal.Utilities.Library.Extras
-open FSharp.Compiler
+open Internal.Utilities.TypeHashing
+open Internal.Utilities.TypeHashing.HashTypes
+open FSharp.Compiler
open FSharp.Compiler.AbstractIL.IL
open FSharp.Compiler.CompilerGlobalState
open FSharp.Compiler.DiagnosticsLogger
@@ -24,9 +26,9 @@ open FSharp.Compiler.TcGlobals
open FSharp.Compiler.TypeProviders
#endif
-/// Represents an interface to some of the functionality of TcImports, for loading assemblies
+/// Represents an interface to some of the functionality of TcImports, for loading assemblies
/// and accessing information about generated provided assemblies.
-type AssemblyLoader =
+type AssemblyLoader =
/// Resolve an Abstract IL assembly reference to a Ccu
abstract FindCcuFromAssemblyRef : CompilationThreadToken * range * ILAssemblyRef -> CcuResolutionResult
@@ -43,48 +45,95 @@ type AssemblyLoader =
/// Record a root for a [] type to help guide static linking & type relocation
abstract RecordGeneratedTypeRoot : ProviderGeneratedType -> unit
#endif
-
+
+[]
+type CanCoerce =
+ | CanCoerce
+ | NoCoerce
+
+type [] TTypeCacheKey =
+
+ val ty1: TType
+ val ty2: TType
+ val canCoerce: CanCoerce
+ val tcGlobals: TcGlobals
+
+ private new (ty1, ty2, canCoerce, tcGlobals) =
+ { ty1 = ty1; ty2 = ty2; canCoerce = canCoerce; tcGlobals = tcGlobals }
+
+ static member FromStrippedTypes (ty1, ty2, canCoerce, tcGlobals) =
+ TTypeCacheKey(ty1, ty2, canCoerce, tcGlobals)
+
+ interface System.IEquatable